2022年C语言知识点归纳总结代码_第1页
2022年C语言知识点归纳总结代码_第2页
2022年C语言知识点归纳总结代码_第3页
2022年C语言知识点归纳总结代码_第4页
2022年C语言知识点归纳总结代码_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C 语言学问点总结 C 语言学问点总结 . 1一, 二, 三, 四, 五, 六, 七, 八, 九, 十, 十一, 十二, 十三, 十四, 十五, 十六, 常量 . 2标识符 . 2变量 . 2表达式 . 3输入输出函数 . C 语言的语 句 . C 程序的基本结 . 4 5 5构 选择结构语句 . 5if表达式 语句 1 else 语句 2 . 5条件运算符 表达式 1. 表达式 2 : 表达式 3 . 6switch 语句 . 循环结构 . 6 6for 循环语句 . 6while 循环语句 do while 循环语句 . 6数组 . 7字符串函数 . 7函数 . 8指针 . 9宏定义 .

2、10 结构体,共用体,枚举类型 . 10 Turbo C 的使用 . 12 第 1 页,共 34 页一, 常量 数字常量 i. ii. iii. 一般数字 :1,35, -2 留意 e 大小写皆可, e 前面的数字 指数形式 :等价于 2.45*10 不能省,就算是 1 也不能省,后面的数字确定要是整数 长整型,单精度浮点型 :3235L, 分别表示 3235 是长整型数据, 是单精度浮点型左,如不写上 双精度浮点型, L, F 大小写皆可 L, F 就表示 3235 是整型, 是 字符常量 i. ii. 一般字符常量 :用 单引号 把一个字符括起来,如 A, 转义字符常量 :一对单引号括起来

3、并以 “”开头的字符序列,如 n回 车, 1238进制 123对应的字符 , x2316进制 23对应的字符 字符串常量 用一对 双引号 把一个字符序列括起来,如“ ABCef ”, 系统存放字符串 常量,每个字符支配一个字节,各字符所占字节紧邻,并且字符串末尾 会给再开一个字节里面放一个 符号常量 0做为终止标志 ; 定义格式 #define 符号常量名 符号常量值 ,如 #define N 20 就定义了符 二, 号常量 N,其值为 20,留意符号常量名和符号常量值之间是用空格隔开, 而不是写上 =号, #define 和符号常量名之间也有空格的 ; 标识符 命名规章 以数字,字母,下划线

4、这三类字符组成,但 只能以字母或下划线开头 , 而不能也数字开头,另外 不能将关键字做为标识符 ;32 个关键字表在 P365 附录 B 变量名,函数名,符号常量名全都是标识符 三, 变量 变量的定义格式 类型名 如 int 变量名 ; a;定义了一个整型常量 a;变量名是由人类任凭定义的,符合命 名规章的前提下,爱写啥就写啥;所以什么 flag,cc,y1或者函数名 fun,find 等全部是自定的用来做为名字而已,没有更特别的意义; 类型名 int 整型, long 长整型: 用于存放整数,只是数值范畴不同 float 单精度浮点型 double 双精度浮点型:用于存放实数,数值范畴, 精

5、度不同 char 字符型:用于存放字符 变量赋值,初始化 int a=3;定义的同时初始化 a=6*9;定义后在程序中进行赋值 变量的值 第 2 页,共 34 页只有在赋值操作时才会被转变 ,即将其放在等号左边时才会转变它的值, 或自增自减操作 :a=5,a+,a-,像 a+3 并未转变 a 的值,只是使用了 的值而已 . a自增自减运算 变量 +,+变量,变量 -, -变量 使变量的值自增 1 或自减 1 等价于 变量=变量+1 变量 =变量-1 +,-放于变量前后成效的区分: 当自增自减运算做为表达式的一部分时, +,- 放在变量前面是先自增 自减再使用变量的值, 放在变量后面就是先使用变

6、量的值, 再自增自减 ; 如 x=3; printf “%d”,+x; 就相当于执行了 +x; printf “%d”,x; 这样的操作 所以打印出 4 再如 x=3; printf “%d”,x+; 就相当于执行了 printf “%d”,x; x+; 这样的操 作,就打印出 3,当然最终 x 的值仍是 4; 四, 表达式 运算符和运算对象 一个运算符都有如干个运算对象, 如 + 必定要跟两个运算对象才能进行 加法运算:3+5;C 语言里称需要跟 一元运算符有 :. ,(类型名) n 个运算对象的运算符为 n 元运算符; 二元运算符有 :+,-,*,/,% 求余, =,+=,-=,*= ,/

7、=,%=, , =, = = 等 于, .=不等于 ,& 且 , |或 多元运算符有 : , 运算符的优先级和结合性 i.优先级 :同一个运算对象左右两边犹如时有两个运算符, 就这两个运算 符优先级高的先进行运算; ii.结合性 :犹如一个运算对象左右两边的两个运算符优先级相同, 就依据 结合性判定先进行哪个运算, 自左自右结合性的先算左边的运算符, 自 右自左的先算右边的运算符; iii. 各运算符的优先级和结合性见 P365 附录 C 强制类型转换 格式: 类型名 表达式 ; 将后跟的表达式的值的数据类型转换为与圆 括号内的类型名一样的类型; 留意类型名确定要用() 括起来 ; 算术表达式

8、 i. ii.iii.iv. v. 算术运算符 :+,-,*,/,% 求余 由算术运算符加上运算对象构成 算术表达式 ,如 3+3*6-9/2 值:跟我们学校时学的一样,就是表达式的运算结果 整数除以整数结果取整数部分,故 1/3 得到的值是 0 5%3 结果为 2,想想学校除法,求余得到的是余数不是商; 赋值表达式 i. 赋值运算符 :=,+=,-=,*= ,/=,%= 留意等号 ii. 赋值表达式 :变量 =表达式,如 x=3+6,x+=6-9, x+=x*=3+4 左边只能是变量 iii. 复合赋值运算符的运算 :以/=为例: x/= 表达式 等价于 x=x/ 表达式 iv. 值:=号左

9、边的变量最终的值 第 3 页,共 34 页关系表达式 i. ii.iii. 关系运算符 : , =, = = 等于 , .= 不等于 由关系运算符加上运算对象构成 关系表达式 ,如 3=4, 2=a 值:中意相应运算符所指定的关系的值为 1,否就为 0 规律表达式 i. ii. iii.iv. 规律运算符 :& 且 , |或 , .非 由规律运算符加上运算对象构成 规律表达式 ,如 3&4, x|.y 值:中意相应运算符所指定的关系的值为 1,否就为 0 进行 | 或 运算时, 如| 左边的表达式值为 1,就不再对右边的表达式 进行运算; v. 进行 &且 运算时, 如&左边的表达式值为 0,

10、就不再对右边的表达式 进行运算; 逗号表达式 i. 逗号运算符 : , ii. 用逗号将各种表达式连续起来构成 逗号表达式 ,如 3+4,a=9,8*a iii. 值:组成逗号表达式的各个表达式中的最终一个的值,如上例为 8*a 题目: P71117 P8 1833 五, 输入输出函数 scanf“格式把握串 ”,变量地址表列 ; 如 scanf“%d%c%d”,&a,&ch,&b; 留意: scanf“%4f”,&x; i. ii. iii. 1. 2. 3. 格式把握串可把握截取用户输入的前几个字符给变量, 但不能把握输入 几位小数给变量,如不能写成 scanf“f”,&x; 其次个参数给

11、的是地址 ,即要么是 &+ 变量名或数组元素名的形式,要 么就是一个数组名或指针变量名,如 int *p,a; p=&a; scanf“%d”,p; 考试时留意看题目给你写好的 scanf 的格 如其格式把握串内各格式符用“, ”隔开如 式 scanf“%d,%c,%d”,&a,&ch,&b; 那输入时也要用逗号隔开,如此例输 入时应: 3,+,5 如是这种格式 scanf“%d%d”,&a,&b; 就输入时应: 3 5; 如是这种格式 scanf“%d%c%d”,&a,&ch,&b; 就输入时应 3+5,如写成 3+ 5 就 a=3,ch= 空格 , b=任意值 printf “格式把握串

12、”,输出项表列 ;如 float x=7.5; printf “f”,x;此处的意思是将 保留两位小数;自己上机运行看看成效; 常用格式符汇总: 自己上机运行看看结果 x 打印出来,且占 8 列, i. ii. iii. iv. %d :输入输出整型数据, %ld :输入输出长整型数据 %c:输入输出字符型数据 %f :输出单(双)精度浮点型数据,输入单精度型数 据; %lf :输入双精度型数据 %s:输入输出一个字符串,用 printf 输出字符串时,输出项书写时可 为字符串常量,或字符数组名;如 printf “%s”,”hello”;或 charstr10=”hello”; printf

13、 “%s”,str; 第 4 页,共 34 页v. %u :输入输出无符号整型, %o :输入输出八进制数, %x: 输入输出十六进制数 getchar; 函数调用后返回用户输入的一个字符,故需再定义一个变量来存放这个 字符,即使用时应 char c; c=getchar;意思就是接收用户输入的一个字 符,并将其赋值给变量 c; putchar字符常量或字符变量名 ; 如 char c=A; putcharc;或 putcharA;都会向屏幕输出字符 A;六, C 语言的语句 表达式语句 :由表达式末尾加上分号构成; 函数调用语句 :由函数调用表达式加上分号构成; 空语句 : ; 选择结构语句

14、 :if 语句 switch 语句 循环语 句 :for 语句 while 语句 do while 语句 复合语句 :用花括号将以上任意语句括起来构成一条复合语句; 七, C 程序的基本结 构 void main 声明部分 :用来定义变量和声明自定义函数的原型, 需以“;”结尾,如 int x; 执行语句部分 :第六点里介绍的各种语句,如 x=3;printf “%d”,x; main 函数外可写自定义函数 ;如 int max return 0; 八, 选择结构语句 if表达式 语句 1 else 语句 2 假如 if 语句的圆括号内的表达式值为非 句 2; 0,就执行语句 1,值为 0 就

15、执行语 i. 表达式可为任意表达式 ,if 语句执行的实质是判定表达式的值是否为 0来准备执行语句 1 仍是语句 2;另外请在此处表达严肃关怀,不管是高 手仍是菜鸟经常会把判定两个数相等的符号 “=”写成了一个等号 “=” 成为了赋值运算,这样的写法不会引发编译错误,但结果会与原意大 大不同,所以考试前请一再提示自己; ii. iii. 1. 2. 3. 语句 1 和语句 2 都只能是一个语句 , 如要跟多条语句,切记用一对 括起来,构成复合语句;也不要任凭在圆括号后加“; ” ,因“ ;” 构成一条空语句,这会使后面跟的语句 1 不再属于 if 语句的组成部分 ; if 语句的三种结构 单边

16、: if 表达式 语句 双边: if 表达式 语句 1 else 语句 2 多层 重点把握 : 第 5 页,共 34 页if 表达式 1 语句 1 else if表达式 2 语句 2 else if表达式 3 语句 3 else 语句 n 条件运算符 表达式 1. 表达式 2 : 表达式 3如表达式 1 的值非 0,就取表达式 2 的值做为整个表达式的值,否就取表达 式 3 的值为整个表达式的值;如 34. 1:2 该表达式的值为 2 switch 语句 switch表达式 case 表达式 case 表达式 1:语句 2:语句 case 表达式 n:语句 default: 语句 语句执行过程

17、:先运算表达式的值,然后判定该值与表达式 1 到表达式 n 中 的哪个相等,如与表达式 i 的值相等,就执行表达式 i 后的全部语句, 当遇 到 break;语句时终止整个 switch 语句的执行 ;表达式 1 到表达式 n 的值都 不相等的情形下执行 default 后跟的语句;每个 case 后可跟多条语 句; 九, 循环结构 for 循环语句 for 表达式 1;表达式 2;表达式 3 循环体语句 语句执行过程: 1. 2. 3. 运算表达式 1 判定表达式 2 的值是否为 0,如为 0,语句执行终止,如不为 0,进入 步骤 3 执行循环体语句 ( 需留意的是循环体语句只能有一个语句,

18、 如要包含多 个语句要用一对 括起来,构成一条复合语句,此处也不要任凭加上 “; ”,因一个“;”可构成一条空语句,这会使得后面真正的循环体 语句不属于 for 循环语句的部分 );进入步骤 44. 运算表达式 3,然后重新进入步骤 2 while 循环语句 do while 循环语句 i. while表达式 循环体语句 执行过程: ii.1. 判定表达式的值是否为非 0,如是进入步骤 2,否就终止语句执行; 2. 执行循环体语句,重新回到步骤 1; do循环体语句 while表达式 ; 执行过程: 1. 2. 执行循环体语句,进入步骤 2判定表达式的值是否为非 0,如是重新回到步骤 1,否就

19、终止语句执行; 第 6 页,共 34 页这里要留意的地方跟 for 语句一样,即循环体语句只能有一个语句,如要 包含多个语句要用一对 括起来,构成一条复合语句,此处也不要任凭加 上 “; ”,因一个“;”可构成一条空语句,这会使得后面真正的循环体语 句不属于 while 循环语句的部分,另外 do while 循环的 while 表达式 后 是要加“;”的; break 语句 :放在循环体内实现的功能是终止其所在的那层循环的执行 ; 十, 数组 定义格式 :数据类型 数组名 整型常量 ;如 int a10; 定义了一个整型数 组,数组名为 a,这个数组含有 10 个元素; 引用数组元素 : 格

20、式: 数组名 下标 切登记标值从 0 开头 ;下标可为常 量,表达式,变量等,如 int i=3 ; a0=5; a3*2=9 ; ai=7 ; 初始化 :数据类型 数组名 整型常量 =数据表列 ; 将数据表列的各个值 依次赋值给数组的各个元素;如 int a5=0,1,2,3,4 ;就数组 a 各元素 a0到 a4的值分别为 0, 1, 2, 3,4 遍历数组元素 数组定义后,我们 不能对数组进行整体的操作 ,如 int a10; 不能用 a=3 这样 的操作将数组的各元素都赋值为 3;而只能一个一个元素的进行赋值,如 a0=3;a1=3;a2=3 a9=3; 当然此时我们就可以借助于一个

21、for 循环来 把握下标的变化从而对数组的各个元素进行赋值 fori=0;i y . x : y ;return z ; 留意点: 1.函数类型是指返回值的类型 ,即要与 return语句后跟的表达式的值的类型一样; 如函数类型为 void 就说明该函数无返回值, 即函数体里不能显现 return 语句 ; 2.形式参数列表里定义的变量要记得给它们指定类型,而且 假犹如时要定义多 个,应在每个前面都分别指定类型名 ,而不能写成 int x,y; 3.函数体里能写的语句跟 上一堆执行语句; 函数调用流程 main 函数一样,在开头可定义所需要的变量,后面跟 以上面的函数为例,在 main 函数进

22、行调用: void main int a,b,c; scanf “%d%”d ,&a,&b; “%d”,maxa,b; 或 c=maxa,b;printf “%d”,c 以上两种方法 printf 第 8 页,共 34 页都会在屏幕中打印出 a,b 间的较大值; 调用函数的格式 函数名 实际参数列表 ;调用的时候像什么函数类型,形式参 数的类型就不要加上去了; maxa,b 中 max 就是函数名, 写上变量名 a,b 是实 际 参数列表, 执行这个调用语句时, 会先把 a,b 的值给相应位置的形式参数即执行 了 x=a,y=b 这样的操作, 然后开头执行 max 函数的函数体的语句; 当 m

23、ax 函数 里执行到一个 return 语句时,就 max 函数终止执行, 将 后的表达式的值 return 返回给 main 函数调用 max 函数的那个位置,即如上面 a=3,b=5 就 maxa,breturn 后的表达式的值应当是 5 也就是说执行完 max 后把 5 返回到调用 max 的位置可 成 printf “%d”, 5;或另一种解法的 c=5; 十三, 指针 指针变量的声明 : 类型名 *指针变量名; 通过指针变量拜望它所指向的一般变量的值 先将一般变量的地址赋值给指针变量,再通过指针运算符 * 得到一般变 量的值; int *p,x,y; x=3; p=&x; 就 pri

24、ntf “%d”,*p; 会打印出 3即 x 的值 y=*p ;就 y 的值变为 3 *p=5 ;就 x 的值变为 5 指针变量加上(减去)一个位移的成效 如指针变量存入的是数组元素的地址,就其 元素下一个或前一个元素的地址 ; int a10; p=&a3; *p 得到的是 a3的值; 加一减一得到的是那个数组 如 p+;此时 p 存放的是 a4 的地址 &a4; *p 得到的就是 a4 的值; 或 p-;此时 p 存放的是 a2的地址 &a2 ,*p 得到的就是 a2的值; 行指针 i. 主要是对于二维数组来说的, 二维数组每行都有自己的地址, 第 0 行地 址用 数组名 表示,第 i 行

25、地址为 数组名 +i;而想要得到二维数组里 一个元素的地址, 必需先得到其所在行的地址, 然后再由那个地址得到 元素的地址,比如说 int a34 ;定义了一个二维数组,该二维数组 第 0 行的地址为 a,第 1 行的地址为 a+1,第 2 行的地址为 a+2,想从 行的地址得到元素的地址,需在行地址前加上指针运算符“ *”,即 *a就是第 0 行首个元素的地址即 a00 的地址,而 a02 的地址就是在 a00 的地址基础上加上位移量 2,即*a+2,然后想得到 a02 这个元 素的值呢就再加上一个指针运算符“ *”,即 *a+2,类似地,想得到 a22 这个元素的值呢就是 *a+2+2 i

26、i. 定义行指针变量: 类型名 (* 变量名) 数组长度 ; 如 int *p4,a34; p=a; 此时就可把 p 当成 a 来用,用法同上所述; 判定是否合法拜望数组元素 :如是指针法拜望,判定指针后跟的是否地址; 如是下标法拜望,判定下标有无越界; 第 9 页,共 34 页函数指针:函数名即为函数的地址(指针) i.ii.函数指针变量的定义: 类型名 * 变量名 形参列表 ;如 int *p; 赋值:指针变量 =函数名; 设有个函数其函数名为 max,就要将该函数的 地址给 p 的话只要执行如下语句即可 p = max; 指针数组: 指针数组的数组元素都是指针变量,是用来存放变量的地址的

27、, 定义格式为 类型名 *变量名 数组长度 ; 如 int * p10; 指向指针的指针: 指针变量也是一种变量, 故在内存中也有对应的一个地址, 而要存放指针变量的地址,就要求助于用来存放指针变量的地址的指针变 量, 定义格式 类型名 *变量名; 如 int *p1; int *p2; int a=3; 可进行赋值 p1=&a; p2=&p1; 就 a ,*p1 和 *p2 的值都是 3. 十四, 宏定义 无参宏定义 #define标识符 值 将以定义时指定的值来代替; #define M 2+3 main 定义后,显现所定义的标识符的地方都 int x; x=M*M; 就 x 的值为 2+

28、3*2+3=11 如想得到的结果是 2+3*2+3 就 定义时也写成这样 #define M 2+3 留意 #define ,标识符,值之间都要用空格隔开,且宏定义结尾不需加 分号; 带参宏定义 #define 标识符 参数表 值 #define Sx,y x*y main int a=3,b=4,c=5,d=6; printfa*b=%dn, Sa,b; 此时会打印出 a*b=12 printfa+b*c+d=%dn , Sa+b,c+d; 此时会打印出 a+b*c+d=29,带 参宏定义执行时是将 a+b 这样一个表达式代替 x,c+d 这样一个表达式代 替 y,所以 Sa+b,c+d进行

29、的是 a+b*c+d 的运算,而不是将 a+b 的值给 x, c+d 的值给 y 然后再做 x*y ,这点跟函数调用传递参数是不一样的 ; 自定义类型名 typedef:对已存在的类型名取一个外号; i. 基本格式: typedef 原类型名 新类型名 ; ii. typedef int INTEGER; 就 int a,b;等价于 INTEGER a,b; iii. typedef int NUM10; 就 int a10; 等价于 NUM a; a 即为一个有 10 个元素的数组的数组名; iv. typedef int * INTEGER; 就 int *a,*b; 等价于 INTEGE

30、R a,b; 十五, 结构体,共用体,枚举类型 结构体 i.结构体类型的定义及变量的定义 struct 结构体名 类型 成员 1; 第 10 页,共 34 页类型 成员 2; 类型 成员 n; 变量名 ; 如 struct student long num; char name10; int score4; st1; 定义类型时同时定义变量 struct student st2定; 义类型后,用类型名定义变量 仍有一种 struct long num; char name10; int score4; ii.iii. iv.st3; 不给类型名,直接定义变量 结构体变量所占字节数 :各成员各占

31、字节数之和 ,如以上 st1,st2,st3字节数皆为 10+20+2*4=38的 结构体变量初始化: struct student a=20030001, 张三 , 70,75,80,85; 结构体数组定义及初始化: struct student a3=20030001,zhang,89,90,91,92,20030002,liu,68,69,70,71, 20030003,li,57,58,59,60 ;v.结构体变量成员的拜望 如 1.结构体变量名 . 成员名 2. 使用结构体类型的指针: * 结构体指针名 . 成员 或 struct student *st; st=&st1;共用体 结

32、构体指针名 成员名 st-num 或*st.numi.共用体类型的定义及变量的定义 union 共用体名 类型 成员名 1; 类型 ; 成员名 n; 变量的定义与结构体类似,也有三种方法; union data int i; char ch; float f; d1; 定义类型时同时定义变量 union data d2; 定义类型后,用类型名定义变量 第 11 页,共 34 页union int i; char ch; float f; d3; 不给类型名,直接定义变量 ii.iii.iv.共用体变量所占字节数 :各成员所占字节数的最大值 ,如上 d1,d2,d3 所 占字节数皆为 4.(单精

33、度浮点型变量所占字节数最多为 4).共用体变量成员的拜望 1.共用体变量名 . 成员名 如 2.使用共用体类型的指针: * 共用体指针名 . 成员 或 共用体指针名 成员名 union data *dd;dd=&d1;dd-i 或*dd.i共用体成员的值: 由于共用体各成员共用同一段内存区,故同一时刻 只有一个成员的值是正确的; 如 =a;就此时 的值就不 是 5了,而是其他值了, 的值是 a 枚举类型 i. ii. 枚举类型的定义: enum 枚举名 枚举元素名 1,枚举元素名 2, ,枚举元素名 n; 枚举元素的值: 默认值分别为 0,1, ,n-1 ;枚举元素的值也可在定义时重指定,对

34、于没有指定值的元素,按次序加 1 如 enum weekdaysun=7,mon=1,tue,wend,thur,fri,sat;就 sun 值为 7,mon 值为 1,tue 值为 2,wend 值为 3,thur 值为 4, fri 值为 5,sat 值为 6 十六, Turbo C 的使用 菜单激活 : F10 菜单切换 :左右方向键 在不同菜单间切换, 上下方向键 在同一个菜单不同选 项间切换; 载入文件 :两种方法 :1.找到源文件所在位置,直接将其拉到 方式上; 2. F3 运行程序 : ctrl+F9 看程序运行结果 :alt+F5Turbo C 快捷 进入编辑状态 :菜单 Ed

35、it 储存: F2 插入状态切换 : Insert 键 第 12 页,共 34 页【新增自编程序 3】 统计数组内 小写字母显现次数 main char a50=abcdefghijklmnopqrstuvwxyz; int cnt26,i,word,time; fori=0;i26;i+ cnti=0; fori=0;i50;i+ cntai-97+; fori=0;i26;i+; printfn; fori=0;i26;i+ word=97+i; printfword=%c=%dtime ,word,cnti; printfn; - 【新增自编程序 2】 定义一数组 输入 z 个数 并求平

36、均值 将程序中的全部字母 z 改写成你要输入的数字个数 #include float funint *p,int n float avg; int sum=0,i; fori=0;in;i+ sum+=pi; avg=1.0*sum/n; return avg; main int *k,az,average; fork=a;k-az;k+ scanf%d,k; funa,z; printfaverage=%fn,funa,z; 第 13 页,共 34 页- 【新增自编程序 1】输入 5 个数 为一个数组,并输出此数组及最大的数; 6 个数,即把程序中数字 5,改成 6 即可! #include

37、 #define M 5 main int aM,i,max; fori=0;iM;i+ scanf%d,a+i; fori=0;iM;i+ printfM,ai; printfn; fori=0;imax max=ai; printfmax=%dn,max; - 【程序 1】 数组长度可任凭变更,例:输入 题目:有 1,2,3, 4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位,十位,个位的数字都是 掉不中意条件的排列; 2.程序源代码: main int i,j,k; printfn; fori=1;i5;i+ *以下为三重循环 */ forj=1

38、;j5;j+ for k=1;k2 sum+; printfIt is the %dth day.,sum; = 【程序 2】 题目:输入三个整数 x,y,z,请把这三个数由小到大输出; 1.程序分析:我们想方法把最小的数放到 x 上,先将 x 与 y 进行比较,假如 xy 就将 x 与 y 的值进行交换, 然后再用 x 与 z 进行比较,假如 xz 就将 x 与 z 的值进行交换,这样能使 x 最小; 2.程序源代码: main int x,y,z,t; scanf%d%d%d,&x,&y,&z; if xy t=x;x=y;y=t; ifxz t=z;z=x;x=t; 第 15 页,共 3

39、4 页ifyz t=y;y=z;z=t; printfsmall to big: %d %d %dn,x,y,z; = 【程序 3】 题目:用 * 号输出字母 C 的图案; 1.程序分析:可先用 * 号在纸上写出字母 C,再分行输出; 2.程序源代码: #include stdio.h main printfHello C-world.n; printf *n; printf *n; printf * n; printf *n; = = 【程序 4】 题目:打印出全部的“水仙花数” ,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 本身;例如: 153 是一个“水仙花数” ,由于 1

40、53=1 的三次方 5 的三次方 3 的三次方; 1.程序分析:利用 for 循环把握 100-999 个数,每个数分解出个位,十位,百位; 2.程序源代码: main int i,j,k,n; printfwater flowernumber is:; forn=100;n=90 分的同学用 A 表示, 60-89 分之间的用 B 表示, 1.程序分析: ab.a:b 这是条件运算符的基本例子; 2.程序源代码: main int score; char grade; printfplease input a scoren; scanf%d,&score; grade=score=90.A:

41、score=60.B:C; printf%d belongs to %c,score,grade; - = 【程序 17】 题目:输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数; 1.程序分析:利用 while 语句 ,条件为输入的字符不为 n. 2.程序源代码: #include stdio.h main char c; int letters=0,space=0,digit=0,others=0; printfplease input some charactersn; whilec=getchar.=n ifc=a&c=A&c=0&c=9 digit+; else ot

42、hers+; printfall in all:char=%d space=%d digit=%d thers=%dn,letters, space,digit,others; = 【程序 18】 第 17 页,共 34 页题目:求 s=a+aa+aaa+aaaa+aa.a 的值,其中 a 是一个数字;例如 共有 5 个数相加 ,几个数相加有键盘把握; 1.程序分析:关键是运算出每一项的值; 2.程序源代码: main int a,n,count=1; long int sn=0,tn=0; printfplease input a and nn; scanf%d,%d,&a,&n; prin

43、tfa=%d,n=%dn,a,n; whilecount=n tn=tn+a; sn=sn+tn; a=a*10; +count; printfa+aa+.=%ldn,sn; 2+22+222+2222+22222 此时 = 【程序 19】 题目:一个数假如恰好等于它的因子之和,这个数就称为“完数” 找出 1000 以内的全部完数; 1. 程序分析:请参照程序 - 上页程序 14. 2.程序源代码: main static int k10; int i,j,n,s; forj=2;j1000;j+ n=-1; s=j; fori=1;i ifj%i=0 n+; s=s-i; kn=i; ifs

44、=0 printf%d is a wanshu,j; ;例如 6=1 23.编程 fori=0;i printf%d,ki; printf%dn,kn; = 【程序 20】 题目:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第 10 次落地时,共经过多少米?第 10 次反弹多高? 1.程序分析:见下面注释 2.程序源代码: main float sn=100.0,hn=sn/2; int n; forn=2;n0 x1=x2+1*2; x2=x1; day-; printfthe total is %dn,x1; 第 19 页,共 34 页 = 【程序 22】

45、 题目:两个乒乓球队进行竞赛,各出三人;甲队为 竞赛名单;有人向队员打听竞赛的名单; 三队赛手的名单; 1.程序分析:判定素数的方法:用一个数分别去除 a,b,c 三人,乙队为 x,y,z 三人;已抽签准备 a 说他不和 x 比, c 说他不和 x,z 比,请编程序找出 2 到 sqrt这个数 ,假如能被整除, 就说明此数不是素数,反之是素数; 2.程序源代码: main char i,j,k; fori=x;i=z;i+ forj=x;j=z;j+ ifi.=j fork=x;k=z;k+ ifi.=k&j.=k ifi.=x&k.=x&k.=z printforder is a-%ctb-

46、%ctc-%cn,i,j,k; = 【程序 23】 题目:打印出如下图案(菱形) * * * * * * *1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for 循环,第一层把握行,其次层把握列; 2.程序源代码: main int i,j,k; fori=0;i=3;i+ forj=0;j=2-i;j+ printf ; 第 20 页,共 34 页fork=0;k=2*i;k+ printf*; printfn; fori=0;i=2;i+ forj=0;j=i;j+ printf ; fork=0;k=4-2*i;k+ printf*; printfn;

47、 = 【程序 24】 题目:有一分数序列: 2/1,3/2 ,5/3,8/5, 13/8,21/13.求出这个数列的前 20 项之和; 1.程序分析:请抓住分子与分母的变化规律; 2.程序源代码: main int n,t,number=20; float a=2,b=1,s=0; forn=1;n=number;n+ s=s+a/b; t=a;a=a+b;b=t; printfsum is %9.6fn,s; = 【程序 25】 题目:求 1+2.+3.+.+20. 的和 1.程序分析:此程序只是把累加变成了累乘; 2.程序源代码: main float n,s=0,t=1; forn=1;

48、n=20;n+ t*=n; s+=t; printf1+2.+3.+20.=%en,s; 第 21 页,共 34 页= 【程序 26】 题目:利用递归方法求 5.; 1.程序分析:递归公式: fn=fn_1*4. 2.程序源代码: #include stdio.h main int i; int fact; fori=0;i5;i+ printf40:%d.=%dn,i,facti; int factj int j; int sum; ifj=0 sum=1; else sum=j*factj-1; return sum; = 【程序 27】 题目:利用递归函数调用方式,将所输入的 1.程序分

49、析: 2.程序源代码: #include stdio.h main int i=5; void palinint n; printf40:; palini; printfn; void palinn int n; char next; ifn=1 next=getchar; 5 个字符,以相反次序打印出来; printfn0:; putcharnext; else next=getchar; palinn-1; putcharnext; = 【程序 28】 题目:有 5 个人坐在一起,问第五个人多少岁?他说比第 4 个人大 2 岁;问第 4 个人岁数,他说比第 3 个人大 2 岁;问第三个人,

50、又说比第 2 人大两岁;问第 2 个人,说比第一个人大两岁;最终 问第一个人,他说是 10 岁;请问第五个人多大? 1.程序分析:利用递归的方法,递归分为回推和递推两个阶段;要想知道第五个人岁数,需知道 第四人的岁数,依次类推,推到第一人( 10 岁),再往回推; 2.程序源代码: agen int n; int c; ifn=1 c=10; else c=agen-1+2; return.; main printf%d,age5; = 【程序 29】 题目:给一个不多于 5 位的正整数,要求:一,求它是几位数,二,逆序打印出各位数字; 1. 程序分析:学会分解出每一位数,如下说明: 这里是一

51、种简洁的算法,师专数 002 班赵鑫供应 2.程序源代码: main long a,b,c,d,e,x; scanf%ld,&x; a=x/10000; b=x000/1000; c=x00/100; d=x0/10; e=x; if a.=0 printfthere are 5, %ld %ld %ld %ld %ldn,e,d,c,b,a; 第 23 页,共 34 页else if b.=0 printfthere are 4, %ld %ld %ld %ldn,e,d,c,b; else if c.=0 printf there are 3,%ld %ld %ldn,e,d,c; els

52、e if d.=0 printfthere are 2, %ld %ldn,e,d; else if e.=0 printf there are 1,%ldn,e; = 【程序 30】 题目:一个 5 位数,判定它是不是回文数;即 1.程序分析:同 29 例 2.程序源代码: main long ge,shi,qian,wan,x; scanf%ld,&x; wan=x/10000; qian=x000/1000; shi=x0/10; ge=x; if ge=wan&shi=qian printfthis number is a huiwenn; else printfthis number

53、 is not a huiwenn; 12321 是回文数,个位与万位相同,十位与千位相同; - 程序 31】 题目:请输入星期几的第一个字母来判定一下是星期几,假如第一个字母一样,就连续 判定其次个字母; 1.程序分析:用情形语句比较好,假如第一个字母一样,就判定用情形语句或 2.程序源代码: #include void main char letter; printfplease input the first letter of somedayn; while letter=getch.=Y switch letter case S:printfplease input second l

54、ettern; ifletter=getch=a printfsaturdayn; else if letter=getch=u printfsundayn; else printfdata errorn; break; if 语句判定其次个字母; 第 24 页,共 34 页case F:printffridayn;break; case M:printfmondayn;break; case T:printfplease input second lettern; ifletter=getch=u printftuesdayn; else if letter=getch=h printfth

55、ursdayn; else printfdata errorn; break; case W:printfwednesdayn;break; default: printfdata errorn; = 【程序 36】 题目:求 100 之内的素数 1.程序分析: 2.程序源代码: #include #include math.h #define N 101 main int i,j,line,aN; fori=2;iN;i+ ai=i; fori=2;isqrtN;i+ forj=i+1;jN;j+ ifai.=0&aj.=0 ifaj%ai=0aj=0; printfn; fori=2,li

56、ne=0;iN;i+ ifai.=0 printf,ai; line+; ifline=10 printfn; line=0; 第 25 页,共 34 页 = 【程序 37】 题目:对 10 个数进行排序 1.程序分析:可以利用选择法,即从后 9 个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用其次个元素与后 8 个进行比较,并进行交换; 2.程序源代码: #define N 10 main int i,j,min,tem,aN; printfplease input ten num:n; fori=0;iN;i+ printfa%d=,i; scanf%d,&ai; print

57、fn; fori=0;iN;i+ printf,ai; printfn; fori=0;iN-1;i+ min=i; forj=i+1;jaj min=j; tem=ai; ai=amin; amin=tem; printfAfter sorted n; fori=0;iN;i+ printf,ai; = 【程序 38】 题目:求一个 3*3 矩阵对角线元素之和 1.程序分析:利用双重 for 循环把握输入二维数组,再将 aii 累加后输出; 2.程序源代码: main float a33,sum=0; int i,j; printfplease input rectangle element

58、:n; 第 26 页,共 34 页fori=0;i3;i+ forj=0;j3;j+ scanf%f,&aij; fori=0;i3;i+ sum=sum+aii; printfduijiaoxian he is %6.2f,sum; = 【程序 39】 题目:有一个已经排好序的数组;现输入一个数,要求按原先的规律将它插入数组中; 1. 程序分析:第一判定此数是否大于最终一个数,然后再考虑插入中间的数的情形,插入后 此元素之后的数,依次后移一个位置; 2.程序源代码: main int a11=1,4,6,9,13,16,19,28,40,100; int temp1,temp2,number

59、,end,i,j; printforiginal array is:n; fori=0;iend a10=number; else fori=0;inumber temp1=ai; ai=number; forj=i+1;j11;j+ temp2=aj; aj=temp1; temp1=temp2; break; fori=0;i11;i+ printfm,ai; = 第 27 页,共 34 页【程序 40】 题目:将一个数组逆序输出; 1.程序分析:用第一个与最终一个交换; 2.程序源代码: #define N 5 main int aN=9,6,5,4,1,i,temp; printfn

60、original array:n; fori=0;iN;i+ printfM,ai; fori=0;iN/2;i+ temp=ai; ai=aN-i-1; aN-i-1=temp; printfn sorted array:n; fori=0;iN;i+ printfM,ai; - 【程序 51】 题目:学习使用按位与 & ; 1.程序分析: 0&0=0; 0&1=0; 1&0=0; 1&1=1 2.程序源代码: #include stdio.h main int a,b; a=077; b=a&3; printf40: The a & bdecimal is %d n,b; b&=7; pr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论