C语言教程 第36页 C 练习实例19 C 语言经典100例 题目:一个数如果恰好等于它的因子之和,这个数就称为”完数”。例如6=1+2+3.编程找出1000以内的所有完数。 程序分析:请参照:C 练习实例14。 程序源代码: // Created by www.w3cschool.cn on 15/11/9. // Copyright © 2015年 W3Cschool教程. All rights reserved. // #include<stdio.h> #define N 1000 int main() { int i,j,k,n,sum; int a[256]; for(i=2;i<=N;i++) { sum=a[0]=1; k=0; for(j=2;j<=(i/2);j++) { if(i%j==0) { sum+=j; a[++k]=j; } } if(i==sum) { printf("%d=%d",i,a[0]); for(n=1;n<=k;n++) printf("+%d",a[n]); printf("\n"); } } return 0; } 以上实例输出结果为: 6=1+2+3 28=1+2+4+7+14 496=1+2+4+8+16+31+62+124+248 C 语言经典100例
2024-04-03
C 练习实例6 C 语言经典100例 题目:用*号输出字母C的图案。 程序分析:可先用’*’号在纸上写出字母C,再分行输出。 程序源代码: // Created by www.w3cschool.cn on 15/11/9. // Copyright © 2015年 W3Cschool教程. All rights reserved. // #include "stdio.h" int main() { printf("用 * 号输出字母 C!\n"); printf(" ****\n"); printf(" *\n"); printf(" * \n"); printf(" ****\n"); } 以上实例输出结果为: 用 * 号输出字母 C! **** * * **** C 语言经典100例
2024-04-03
C 练习实例16 – 最大公约数和最小公倍数 C 语言经典100例 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析: (1)最小公倍数=输入的两个数之积除于它们的最大公约数,关键是求出最大公约数; (2)求最大公约数用辗转相除法(又名欧几里德算法) 1)证明:设c是a和b的最大公约数,记为c=gcd(a,b),a>=b, 令r=a mod b 设a=kc,b=jc,则k,j互素,否则c不是最大公约数 据上,r=a-mb=kc-mjc=(k-mj)c 可知r也是c的倍数,且k-mj与j互素,否则与前述k,j互素矛盾, 由此可知,b与r的最大公约数也是c,即gcd(a,b)=gcd(b,a mod b),得证。 2)算法描述: 第一步:a ÷ b,令r为所得余数(0≤r 以上内容是否对您有帮助: 在文档使用的过程中是否遇到以下问题: 内容错误 更新不及时 链接错误 缺少代码/图片示列 太简单/步骤待完善 其他 更多建议: 提交建议 写笔记 我要补充 推荐文章 C语言在线编译器:无需安装,轻松编写C语言程序 免费定制学习计划与服务推荐,开启你的编程狮之旅 编程狮年度盘点:2023年最受欢迎的编程课程和教程 Gradle:现代化的构建自动化工具 SQL分层查询:优化数据检索和分析的利器 推荐教程 DLL入门 C语言教程 程序员书单 腾讯代码安全指南 锐道展现中间件dorado9 推荐课程 全国计算机等级考试二级 C语言真题解析(二) 全国计算机等级考试二级 C语言真题解析(一) C语言快速入门70集_新手自学教程 C语言入门课程 C语言/C++零基础软件入门 精选笔记
2024-04-03
C 指针数组 C 指针 在我们讲解指针数组的概念之前,先让我们来看一个实例,它用到了一个由 3 个整数组成的数组: #include <stdio.h> const int MAX = 3; int main () { int var[] = {10, 100, 200}; int i; for (i = 0; i < MAX; i++) { printf("Value of var[%d] = %d\n", i, var[i] ); } return 0; } 当上面的代码被编译和执行时,它会产生下列结果: Value of var[0] = 10 Value of var[1] = 100 Value of var[2] = 200 可能有一种情况,我们想要让数组存储指向 int 或 char 或其他数据类型的指针。下面是一个指向整数的指针数组的声明: int *ptr[MAX]; 在这里,把 ptr 声明为一个数组,由 MAX 个整数指针组成。因此,ptr 中的每个元素,都是一个指向 int 值的指针。下面的实例用到了三个整数,它们将存储在一个指针数组中,如下所示: #include <stdio.h> const int MAX = 3; int main () { int var[] = {10, 100, 200}; int i, *ptr[MAX]; for ( i = 0; i < MAX; i++) { ptr[i] = &var[i]; /* 赋值为整数的地址 */ } for ( i = 0;...
2024-04-03
C 练习实例7 C 语言经典100例 题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful! 程序分析:字符共有256个。不同字符,图形不一样。 VC6.0下出现中文乱码(原因+解决方法): 176的16进制是B0,219的16进制是DB,0xB0DB是”佰”字的内码,所以输出的就是”佰”了。 主要原因是文件信息的代码页不同,我们所使用的操作系统中文状态下的代码页,要显示扩展的ASCII码需要在437 OEM-美国这个下面显示,这样就可以显示出你所希望的。具体修改控制台的默认代码页步骤如下: 1.点击运行界面左上角标题栏图标【c:\】,选择默认值一项 2.修改默认代码页,936(ANSI/OEM-简体中文GBK)为437 OEM-美国 3、关闭后重新运行一下即可 程序源代码: // Created by www.w3cschool.cn on 15/11/9. // Copyright © 2015年 W3Cschool教程. All rights reserved. // #include<stdio.h> int main() { char a=176,b=219; printf("%c%c%c%c%c\n",b,a,a,a,b); printf("%c%c%c%c%c\n",a,b,a,b,a); printf("%c%c%c%c%c\n",a,a,b,a,a); printf("%c%c%c%c%c\n",a,b,a,b,a); printf("%c%c%c%c%c\n",b,a,a,a,b); return 0; } 以上实例输出结果为: C 语言经典100例
2024-04-03
C 练习实例17 C 语言经典100例 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 程序分析:利用while语句,条件为输入的字符不为’\n’。 程序源代码: // Created by www.w3cschool.cn on 15/11/9. // Copyright © 2015年 W3Cschool教程. All rights reserved. // #include<stdio.h> int main() { char c; int letters=0,spaces=0,digits=0,others=0; printf("请输入一些字母:\n"); while((c=getchar())!='\n') { if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) letters++; else if(c>='0'&&c<='9') digits++; else if(c==' ') spaces++; else others++; } printf("字母=%d,数字=%d,空格=%d,其他=%d\n",letters,digits,spaces,others); return 0; } 以上实例输出结果为: 请输入一些字母: www.w3cschool.cn 123 字母=12,数字=3,空格=1,其他=2 C 语言经典100例
2024-04-03
学习C – C结构体 我们可以定义一个struct来声明一个新的数据类型。 我们使用 struct 关键字。 使用struct关键字可以定义一个称为单个单元的结构的各种类型的变量集合。 以下代码是结构声明的简单示例: struct Dog { int age; int height; } aDog; 此示例声明一个名为Dog的结构类型。 这不是一个变量名;这是一种新的类型。 此类型名称称为结构标签或标签名称。 Dog结构,年龄和高度中的变量名称称为成员或字段。 结构的成员出现在跟随struct标签名称Dog的大括号之间。 在该示例中,结构的实例(称为aDog)被声明。 aDog是Dog类型的变量。 aDog包括结构的两个成员:成员年龄和成员身高。 以下代码为结构类型Dog添加更多成员。 struct Dog { int age; int height; char name[20]; char father[20]; char mother[20]; } aDog = { 4, 1, "name", "C", "C++" }; 这个版本有五个成员的狗结构类型。 在变量aDog的声明中,出现在最后一对大括号之间的值按顺序应用,到成员变量age(4),height(1),name(“name”),father(“C”)和mother(“C ++”)。 定义结构类型和结构变量 您可以在单独的语句中定义结构类型的结构类型和变量。 struct Dog { int age; int height; char name[20]; char father[20]; char mother[20]; }; struct Dog aDog = { 4, 1,"name", "C", "C++" }; 第一个语句定义结构标签Dog,第二个是该类型的一个变量的声明,aDog。 以下代码定义了Dog类型的另一个变量: struct Dog brother = { 3, 5, "new name", "C", "C++" }; 您可以在单个语句中声明多个结构变量。 struct Dog aDog, brother; 您可以在单个语句中声明多个结构变量。… 您可以使用typedef定义删除struct。 例如: typedef struct Dog Dog; 这定义了Dog等同于struct Dog。 如果将此定义放在源文件的开头,你可以定义一个Dog类型的变量,像这样: Dog t = { 3, 5, "new name", "C", "C++" }; struct关键字不再需要。...
2024-04-03
C 指向数组的指针 C 数组 您可以先跳过本章,等了解了 C 指针的概念之后,再来学习本章的内容。 如果您对 C 语言中指针的概念有所了解,那么就可以开始本章的学习。数组名是一个指向数组中第一个元素的常量指针。因此,在下面的声明中: double balance[50]; balance 是一个指向 &balance[0] 的指针,即数组 balance 的第一个元素的地址。因此,下面的程序片段把 p 赋值为 balance 的第一个元素的地址: double *p; double balance[10]; p = balance; 使用数组名作为常量指针是合法的,反之亦然。因此,*(balance + 4) 是一种访问 balance[4] 数据的合法方式。 一旦您把第一个元素的地址存储在 p 中,您就可以使用 *p、*(p+1)、*(p+2) 等来访问数组元素。下面的实例演示了上面讨论到的这些概念: #include <stdio.h> int main () { /* 带有 5 个元素的整型数组 */ double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0}; double *p; int i; p = balance; /* 输出数组中每个元素的值 */ printf( "使用指针的数组值\n"); for ( i = 0; i < 5; i++ ) { printf("*(p + %d) : %f\n", i, *(p + i) ); } printf( "使用 balance 作为地址的数组值\n"); for ( i = 0; i < 5; i++ ) { printf("*(balance + %d) : %f\n", i, *(balance + i) ); } return...
2024-04-03
学习C – C预处理 源代码的预处理发生在编译为机器指令之前。 预处理阶段可以执行由#符号启动的预处理指令指定的操作范围。 预处理阶段在编译之前处理C源代码。 在预处理阶段后,将分析和执行所有指令,并且所有预处理指令将不再出现在源代码中。 #include 和 #define 是两个流行的指令。 用#define语句定义常量。 #include <stdio.h> #define PI 3.14159 int main(void) { float area, circum, radius; printf("What is the radius of your pizza?\n"); scanf("%f", &radius); area = PI * radius * radius; circum = 2.0 * PI *radius; printf("Your basic pizza parameters are as follows:\n"); printf("circumference = %1.2f, area = %1.2f\n", circum, area); return 0; } 上面的代码生成以下结果。 包括头文件 你完全熟悉这样的语句: #include <stdio.h> 上面的代码将标准库头文件的内容带入您的程序。 #include指令引入到程序中的文件也可能包含#include指令。 定义头文件 您可以定义自己的头文件,通常使用扩展名为.h。 头文件不应包括实现。 您创建头文件以包含声明。 所有的函数定义和全局变量都放在扩展名为.c的源文件中。 您可以将函数原型,结构类型定义,符号定义,extern语句和typedefs放在头文件中。一个典型的例子可能是: #include "myfile.h" 外部变量 要使用另一个文件的全局变量,请使用extern关键字将该变量声明为当前源文件的外部变量。 例如,假设您的语句在另一个文件中定义了全局变量: int number = 0; double in_to_mm = 2.54; 在要访问这些文件的源文件中,指定这些变量名称是外部的: extern int number; extern double in_to_mm; 这些语句不会创建这些变量。 他们通知编译器这些名称被定义在哪里。 静态函数 您可以通过将其声明为静态来确保函数仅在您定义它的源文件中可见。 例如: static double average(double x, double y) { return (x + y) / 2.0; } 程序源代码中的替换 define预处理器指令的一般形式如下: #define identifier...
2024-04-03
学习C – C数据类型限制 下表显示了与每个有符号整数类型的限制相对应的符号名称。 类型 下限 上限 char CHAR_MIN CHAR_MAX short SHRT_MIN SHRT_MAX int INT_MIN INT_MAX long LONG_MIN LONG_MAX long long LLONG_MIN LLONG_MAX 无符号整数类型的下限全部为0,因此没有符号。 对应于无符号整数类型的上限的符号是UCHAR_MAX,USHRT_MAX,UINT_MAX,ULONG_MAX和ULLONG_MAX。 为了能够在程序中使用任何这些符号,您必须在源文件中的limits.h头文件中使用#include指令: #include 您可以初始化一个类型为int的最大可能值的变量,如下所示: int number = INT_MAX; 此语句将数值的值设置为尽可能大的值,无论编译器用于编译代码的可能性如何。 例子 下表列出了表示浮点类型的范围限制的符号 类型 下限 上限 float FLT_MIN FLT_MAX double DBL_MIN DBL_MAX long double LDBL_MIN LDBL_MAX 注意 该程序输出与头文件中定义的符号对应的值。 #include <stdio.h> // For command line input and output #include <limits.h> // For limits on integer types #include <float.h> // For limits on floating-point types int main(void) { printf("Variables of type char store values from %d to %d\n", CHAR_MIN, CHAR_MAX); printf("Variables of type unsigned char store values from 0 to %u\n", UCHAR_MAX); printf("Variables of type short store values from %d to %d\n", SHRT_MIN, SHRT_MAX); printf("Variables of type unsigned short store...
2024-04-03