《2022年大一上学期C语言期末复习总结和模拟试题带答案.docx》由会员分享,可在线阅读,更多相关《2022年大一上学期C语言期末复习总结和模拟试题带答案.docx(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选学习资料 - - - - - - - - - 易错点运算 , 而实型变量就不答应进行 求余 C语言中易犯的错误 运算. 对初学 C语言的人来说 , 常常会出一些连自己都不知道错在哪里的错误 . 看着有错的程序 , 不知该如何改起 , 一些 C 编程常常犯的错误 , 写给各位学员以* *供参考 . * . *3. 将字符常量与字符串常量混淆* char c; c=a; 1. 书写标识符时 , 忽视了大小写字母 的区分 . 在这里就混淆了字符常量与字符串 常量 , 字符常量是由一对单 main int a=5; 引号括起来的单个字符, 字符串常量是一对双引号括起来的字符序 printf%d,A
2、; 列.C 规定以 作字符串终止标志 , 它 是由系统自动加上的 , 所 编译程序把 a 和 A 认为是两个不同的变量名 , 而显示出错信息 . 以 字 符 串 a 实 际 上 包 含 两 个 字符:a和,而把它赋给一C 认为大写字母和小写字母是两个不同的字符 . 习惯上 , 符号常量个字符变量是不行的 . *名用大写 , 变量名用小写表示, 以增加*可读性 . * 4. 忽视了 = 与= 的区分 . * * 在很多高级语言中, 用= 符号作为关系运算符 等于 . 如在 BASIC程序中可以写2. 忽视了变量的类型, 进行了不合法的运算 . main float a,b; printf%d,a
3、%b; if a=3 then 但 C语言中 ,= 是赋值运算符 ,= 是关系运算符 . 如: if a=3 a=b; % 是求余运算 , 得到 a/b 的整余数 . 整型变量 a 和 b 可以进行求余前者是进行比较 ,a 是否和 3相等 , 后名师归纳总结 - - - - - - -第 1 页,共 15 页精选学习资料 - - - - - - - - - 者表示假如 a 和3相等 , 把 t=z/100; printf%f,t; b 值赋给 a. 由于习惯问题 , 初学者往往 ; 会犯这样的错误 . *复合语句的花括号后不应再加分号,* * 否就将会画蛇添足 . 5. 遗忘加分号 . 又如
4、: 分号是 C语句中不行缺少的一部分 , if a%3=0; 语句末尾必需有分号 . I+; a=1 本是假如 3整除 a, 就 I 加1. 但由于b=2 if a%3=0 后多加了分号编译时 , 编译程序在 a=1 后面没发 , 就 if 语句到此终止 , 程序将执行 I+现分号 , 就把下一行 b 语句 , 不论 3是否整除 a,I 都=2也作为上一行语句的一部分, 这就将自动加 1. 会显现语法错误 . 改错时 , 再如 : 有时在被指出有错的一行中未发觉错 误, 就需要看一下上一行是否 for I=0;I5;I+; scanf%d,&x; 漏掉了分号 . , 最终一个语句printf%
5、d,x; 本意是先后输入 5个数 , 每输入一个 z=x+y; 数后再将它输出 . 由于 for t=z/100; 后多加了一个分号, 使循环体变为 printf%f,t; 空语句 , 此时只能输入一个数对于复合语句来说并输出它 . 中最终的分号不能忽视不写 * * * * 7. 输入变量时遗忘加地址运算符&. 6. 多加分号 . int a,b; 对于一个复合语句 , 如: scanf%d%d,a,b; 名师归纳总结 z=x+y; 这是不合法的 .Scanf函数的作用是 :第 2 页,共 15 页- - - - - - -精选学习资料 - - - - - - - - - 依据 a,b 在内存
6、的地址将 a, 输入应如以下形式 : a=3,b=4b 的值存进去 .&a 指 a 在内存中的地 址. * * * *9. 输入字符的格式与要求不一样. * 在用 %c格式输入字符时 , 空格字符8. 输入数据的方式与要求不符. 和 转义字符 都作为有效字符输入 . scanf%d%d,&a,&b; scanf%c%c%c,&c1,&c2,&c3; 输入时 , 不能用逗号作两个数据间的 如输入 a b c 分隔符 , 如下面输入不合法 : 字符 a 送给 c1, 字符 送给 c2, 字符3,4 b 送给 c3, 由于 %c 输入数据时 , 在两个数据之间以一个 只要求读入一个字符 , 后面不需
7、要用或多个空格间隔 , 也可用回车 空格作为两个字符的间隔 . *键, 跳格键 tab. scanf%d,%d,&a,&b; * * 10. 输入输出的数据类型与所用格式 说明符不一样 . C 规定 : 假如在 格式掌握 字符串中除了格式说明以外仍有其它例如 ,a 已定义为整型 ,b 定义为实型字符 , 就在输入数据时应输入与这些 a=3;b=4.5; 字符相同的字符 . 下面输入是 printf%f%dn,a,b; 合法的 : 3,4 此时不用逗号而用空格或其它字符是 不对的 . 编译时不给出出错信息, 但运行结果将与原意不符 . 这种错误特别 需要留意 . * * * 3 4 3:411.
8、 输入数据时 , 妄想规定精度 . 又如 : scanf%7.2f,&a; scanfa=%d,b=%d,&a,&b; 名师归纳总结 这样做是不合法的, 输入数据时不能第 3 页,共 15 页- - - - - - -精选学习资料 - - - - - - - - - 规定精度 . *whileI=10 * a=a+I; 12.switch 语句中漏写 break 语句 . I+; 例如 : 依据考试成果的等级打印出百分制数段 . switchgrade printf%d,a; case A:printf85100n; case B:printf7084n; 2main case C:print
9、f6069n; int a=0,I; case D:printf60n; scanf%d,&I; default:printferrorn; do 由于漏写了 break 语句,case 只起标号 a=a+I; 的作用 , 而不起判定作用 . I+; 因此 , 当 grade 值为 A 时,printf函数whileI10 时, 二者结果就不同了 . 由于 while 循环是先判定后执行13. 忽视了 while 和 do-while 语句在细节上的区分 . 1main , 而 do-while 循环是先执行后判定 . 对于大于 10的数 while 循环一次也不执行循环体 , 而 do-wh
10、ile 语句int a=0,I; 就要执行一次循环体 . *scanf%d,&I; *名师归纳总结 - - - - - - -第 4 页,共 15 页精选学习资料 - - - - - - - - - * 14. 定义数组时误用变量 . 这样初始化数组是不对的 .C 语言规定只有静态储备 static 数组int n; 和外部储备scanf%d,&n; exterm 数组才能初始化 . 应改为 : int an; static int a3=0,1,2; *数组名后用方括号括起来的是常量表*达式 , 可以包括常量和符号常* &的位置加量. 即 C不答应对数组的大小作动态定 17. 在不应加地址运
11、算符了地址运算符 . 义. scanf%s,&str; *C 语言编译系统对数组名的处理是: 数*组名代表该数组的起始地址* 15. 在定义数组时, 将定义的 元素个, 且 scanf 函数中的输入项是字符数组数误认为是可使的最大下名, 不必要再加地址符 &.应标值 . 改为 :scanf%s,str; *main * static int 18. 同时定义了形参和函数中的局部a10=1,2,3,4,5,6,7,8,9,10; 变量 . printf%d,a10; int maxx,y int x,y,z; C语言规定 : 定义时用 a10, 表示 a 数 z=xy.x:y; 组有 10个元素
12、 . 其下标值由 0 returnz; 开头 , 所以数组元素a10 是不存在的 . , 而局部变*形参应当在函数体外定义* 16. 初始化数组时 , 未使用静态储备 . 量应当在函数体内定义 . 应改int a3=0,1,2; 为: int maxx,y 名师归纳总结 - - - - - - -第 5 页,共 15 页精选学习资料 - - - - - - - - - int x,y; A.y.x:y; returnz; 试题一一、单项挑选题 (共 30 分,每题 1 分)C1. 以下不正确的转义字符是 A. 9. 设整型变量 i 的值为 3,就运算 表达式 i i 后表达式的值是()A.0
13、B.1 C. 2 D.表达式出错 10. 设整型变量 a,b,c 均为 2,表达式 a+b+c+的结果是()A.6 B.9 C.8 D. 表达式出错 11. 如已定义 x 和 y 为 double 类 型,就表达式 x=1,y=x+3/2 的值是() C.074 D.02. 不是 C语言供应的合法关键字是A.1 B.2 C.2.0 A.switch B.cher C.case D.default D.2.5 12. 设 a=1,b=2,c=3,d=4,就表达式:3. 正确的标识符是()A.?a B.a=2 C.a.3 D.a_3 ab?a:cd?a:d 的结果是()4. 以下字符中属于键盘符号
14、的A.4 B.3 C.2 D.1 是 B.n C.t D.b . 以下数据中属于“ 字符串常量”的 A.ABC B. “ ABC” C.ABC D. A 6.char 型常量在内13. 设 a 为整型变量,不能正确表 达数学关系:10a15的 C语言表达式 是()名师归纳总结 存中存放的是A.10a10&a15 D. !(a=15)的值不为 2 的是()14. 如有以下定义: char a 、 int A.b=a/2 B.b=6- (b 、 float c 、 double d ,就表达式 a*b+d-c 值的类型为()a) C.b=a%2 D.b=a3 ?2:2 A.float B.int
15、C.char 8. 在以下一组运算符中,优先级D.double 最高的运算符是()- - - - - - -精选学习资料 - - - - - - - - - (15. 表达式“10!=9” 的值是20. 设有定义: char )s12= “ string ” ;就 printf A.true B. 非零(“%dn” ,strlen (s);的输出是()值 C.0 D.1 16. 循环语句 for (x=0,y=0;A.6 B.7 C.11 D.12 (y!=123)| (x4);x+);的循环执行()21. 合法的数组定义是()A.int A.无限次 B. 不确定次 C.4 次 D.3 次a=
16、 “ string ” ; B.int 17. 在 C语言中,以下说法中正确a5=0 ,1,2,3,4,5 ;的是()do while ” 的循环C.char D.char a=0 ,A. 不能使用“a=“ string ” ;1,2,3,4,5 B.“ do while ” 的循环必需使用 break 语句退出循环C.“ do while ” 的循环中,当条 件为非 0 时将终止循环22. 函数调用 strcat (strcpy(str1 ,str2 ),str3 )的功能是()A. 将字符串 str2 复制到字符串 str1 中后再将字符串 str3 连接到字符串D.“ do while
17、” 的循环中,当条件为0str1 之后时将终止循环;B. 将字符串 str1 复制到字符串18. 设 a,b 为字符型变量,执行str2 中后再连接到字符串str3 之后scanf (“ a=%c,b=%c” ,&a,&b)后使 a 为A,b 为B,从键盘上的正确输入是()A.AB B. A,B C.A=A,B=B D.a=A,b=B 19. 设 i ,j ,k 均为 int 型变量,执行完下面的 for 循环后, k 的值为()C. 将字符串 str1 复制到字符串 str2 中后再复制到字符串 str3 之后D. 将字符串 str2 连接到字符串 str1 中后再将字符串 str1 复制到
18、字符串 str3 中23. 设有如下定义,就正确的表达为()for (i=0 ,j=10 ;i=j ;i+ ,jchar d x=“ abcdefg ” ;) k=i+j ;char y= a ,b ,A.10 B.9 C.8 D.7 c,e,f ,g ;A.数组 x 和数组 y 等 价名师归纳总结 - - - - - - -第 7 页,共 15 页精选学习资料 - - - - - - - - - B.数组 x 和数组 y 的长度相同 C.数组 x 的长度大于数组 y 的长 度A.scanf (“a=b=%d” ,&a,&b); B.scanf (“ a=%d,b=%f” ,&m,&f);度D
19、.数组 x 的长度小于数组 y 的长C.scanf (“%3c” ,c);D.scanf (“ %5.2f ,&f);24. 设有单精度变量 f ,其值为 13.8. 执行语句“n=(int )f )%3;”后, n 的值是()30. 如有以下定义和语句,且0=i5,就(素地址的正确表示)是对数组元A.4 B.1 C.4.333333int a=1,2,3,4,5 ,*p,i ;p=a;A.& D.4.6 25. 执行语句“ f=(3.0 ,4.0 ,5.0 ),(2.0 ,1.0 ,0.0 );” 后,单精度变量 f 的值是()(a+i ) B.&p C.aA.3.0 B.5.0 C.2.0
20、+ D.&pi 二、填空( 20 分,每空 1 分) 1. 在内 D.0.0 26. 设 a、b 均为整型变量,以下 表达式中不是赋值表达式的是存中储备“A” 要占用(2 )个字节,储备A 要占用(1 )字节;2. 符号常量的定义方法是()A.a=3,4,(#define 符号常量常量);5 B.a=3*2 C.a=a&b D.a=b=4 27. 表达式“ 1?(0?3:2):(10?3. 能表述“20x30 或 x20 & x30)| x0;y)7. 设有定义语句“static int if (y%3= = 0) printf (“ %d” , y); continue ; 3. main
21、()a34=1,2 ,3 ” ,就 a11值为(), a21的值为();8. “ *” 称为(指针运算 int x,y;符)运算符,“&” 称为for (y=1,x=1;y=10) break ;在于有无(分号)号;if (x%2= =1) x+=5 ;10. 用 把一些语句括起来称为continue ; (. 复合语句)语句x-=3; 11. 设 a=12、b=24、c=36,对于“ scanf (” a=%d,b=%d,c=%d“ ,&a,&b,&c);” ,输入形式应为(a=12,printf (“ %d” ,y)4. main() static int a3=9,7,5,b=24,c=
22、36 )3,1,2,4,6,8 ;12. 表达式“ sqrt(s*(s-a )*(s-b )* (s-c );” 对应的数学式子为()13.C 语言编绎系统在判定一个量 是否为“ 真” 时,以 0 代表“ 假” ,以(非 0 )代表“ 真”int i,j ,s1=0,s2=0; i ,j ,s1=0,s2=0;for (i=0 ;i3 ;i+ )for (j=0 ;j3 ;j+ )名师归纳总结 三、读程序( 30 分) if (i= =j )s1=s1+aij;第 9 页,共 15 页1. main ()if (i+j= =2 ) s2=s2+aij; int a=10,b=4,c=3; if
23、 (ab) a=b;printf (“ %dn%dn” ,s1,s2); if (ac) a=c ;5. main ()- - - - - - -精选学习资料 - - - - - - - - - *static char a= * ,* ,1.C 2. B 3. D 4. A 5. ,* ,* ;B 6. A 7. C 8. C 9. A 10. int i,j ,k;A 11. C 12. D 13. A 14. D 15. D 16. C 17. D 18. for (i=0 ;i5 ;i+ )D 19. A 20. B 21. D 22. A 23. C 24. B 25. D 26.
24、printf (“n ” );D 27. B 28. A 29. B 30. C for (j=0 ;ji ;j+ ) printf ; 二、填空( 20 分,每空 1 分)(“%c” ,);1.2 ,1 for (k=0;k20 & x30 ) | x-100 4. 分支结构,循环结果ak ); 6. int fac(int n )static int f=1;f=f*n ; return(f ); 5.while do for main()6.#include “ stdio.h ” # include “ string.h”int i;7.a11=0 , a21=0 for (i=1 ;
25、i=5 ;i+ )8.* 指针运算符, &地址运算printf (“ %d!=%dn” ,i ,fac符 9. 分号;10. 复合语句(i ); 四、编写程序( 20 分)1. 编一个程序,输入 X 的值,按 以下公式运算并输出 Y 的值11.a=12,b=24,c=36 2. 编程序按以下公式运算e 的值13. 非 0 (精度为 1e-6)e=1+1/1!+1/2!+1/3 !+ 1/n !三、读程序( 30 分)1. 结果: 10,4,3 参考答案:30 分,每题2. 结果: 8 5 2 一、单项挑选题(共3.6 1 分)4.18 10 名师归纳总结 - - - - - - -第 10 页
26、,共 15 页精选学习资料 - - - - - - - - - 5.* B、语句、函数6.5 !=120 CD、字符四、编写程序( 20 分 1. Main()3、请选出可用作 C语言用户标识符的一组标识符 _B_;int x,y;A、 void B、 a3_b3 C、For D、2a scanf (“%d” ,&x); define _123 -abc DO if (x=1) y=x ; (x1&x A、2.04回车B、2.04,5.67 5.67 回车 C 、A=2.04,B=5.67D、2.045.67 9、以下程序段的输出结果是 _D_;名师归纳总结 - - - - - - -第 11
27、 页,共 15 页精选学习资料 - - - - - - - - - int a=5678; ” %2dn” , a; break; printf” printf default: A 、提示出错、无结果Full.n” ; 、4 B 、 4 B、56 78 C、 D、5678 ;就以下表达A、 3 10、已知: char ch=AC、3 D式的值是 _B_; ch = ch=A&ch=Z . 4 4 ch+32 : ch; 、14、设 a、b、c、d、m、n 均为 int型 A、A B、a C变量,且 a=5、b=6、c=7、d=8、Z D、z m=2、 n=1 , 就 逻 辑 表 达 式11、以下描述,正确选项 _B_ ;m=ab&n=cd 的值为 _A_;A、表达式 3.91%5是合法的 A、0 B、 1 C、2 B、用 b=89 作为 while 循环的条D、 3 型件是合法的15、设 x、y 和 temp 均为 long intC、逗号表达式是没有值和类型的 D、字符型变量和 int 型变量的操变量,就以下语句:temp=x; x=y; y=temp; 的功能作完全不同 是_D_;12、阅读以下程序:A、把 x 和 y 按从大到小排列 main B、把 x 和 y 按从小到大排列 int x; C、无确定结果 scanf%d,&x; ifx-5 printf%d
限制150内