C语言习题练习(附答案)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6,5,4,3,2,1
4.
} 2 3 4 5
int main() { int i,j; for(i=1;i<6;i++) { for(j=1;j<i;j++) printf(“%4d”,i*j);
6 8 10
12 15
20
5
printf(“\n”); } return 0; }
四. 程序填空: 1、下面的程序功能是:输出 x,y,z 三个数中的最小值,请填空使程序完整。 #include <stdio.h> void main ( ) { int x=4,y=5,z=8 ; int u,v; u = x<y ? (1)x:y ; v = u<z ? (2)u:z printf ("%d\n",v); }
6
;
; ;
2 位数。请填空使程序完整。 #include <stdio.h> int main() { int t, i=10; while( (1)i<100 ) { (2)t=i%10 ; if( t = = 6 && (3)i%3==0 printf("%3d\n",i); (4)i++ ; } }
5. 若有下列定义语句:long x;double y; float z; 执行程序时输入 10,2.5,3.6↙,那么以下 输入语句中能正确为变量赋值的是 (A) scanf("%ld%lf%f", &x,&y,&z); 。 (B)scanf("%d%f%f",&x,&y,&z);
(C)scanf("%ld,%lf,%f", &x,&y,&z);(D)scanf("%ld,%lf,%lf",&x,&y,&z); 6. 以下叙述中不正确的是: (A) 在不同的函数中可以使用相同名字的变量 (B) 函数中的形式参数是局部变量 (C) 在一个函数内定义的变量只在本函数范围内有效 (D) 在一个函数内的复合语句中定义的变量在本函数范围内有效 7. 若有以下变量定义和赋值语句:int *p,*q,i=1,j=0;p=&i;q=&j; 下列各项中,对赋值语句 *p=*q; 描述不正确的是: (A) 等同于 i=j; (C) 将改变 p 的值 (B) 是把 q 所指变量中的值赋给 p 所指向的变量 (D) 将改变 i 的值
8. 若有变量定义:int n=2,*p=&n,*q=p;则以下非法的赋值语句是: (A) q=n;(不是同类) (B) p=q; (C) *p=*q; (D) n=*q;
9. 已有数组定义 int a[2][3]={1,2,3,4};则 a[1][2]的值为: (A) 0 (B)4 (C) 3 (D) 2
量 c 存放数组 a 中的最大元素,则函数调用语句应为:(c=max(a,10);) 3. 若有 int i=5; 则循环语句 while(i > = 1) i - -;执行后,i 的值为 (0)。 4. 能正确表示逻辑关系: “0≤a<10”的 C 语言表达式是(0<=a && a<10) 。 5. 设 int a[2][3] = {{2},{3}};则数组元素( a[1][0] )的值为 3。 6. 表达式 (int)(3.0/2.0)的值是( 1 )。 7. 有定义: int x=3, y=2; 执行 x/=y+1; 语句后 x 的值为( 1 ) 。 8. 有定义: int x=2, y=0; 表达式 (!x||y) 的值为( 0 )。 9. 有定义:char str[]= “Hello!”; 则数组 str 的长度为( 7 )。 10. 有定义:int i=5; 则循环语句 while(i>=1) i=i-2; 执行后变量 i 的值为
20. 语句 while(x%y); 括号中的表达式等价于_______。 A) x%y==0 B) x/y!=0 C) x%y!=0 D) x==y 21. 以下选项中错误的语句组是_______。 A) char s[8]="Beijing"; C) char s[8]; s[8] ="Beijing"; B) char *s="Beijing"; D) char *s; s="Beijing";
17. 以下叙述中正确的是 。 A) break 语句只能用于 switch 语句体中。 B) break 语句只能用于循环体中。 C) continue 语句只能用于 switch 语句体中。 D) continue 语句只能用于循环体中。 18. 若用数组名作为函数调用时的实参,则实际上传递给形参的是 A) 数组首地址 B) 数组的第一个元素值 C) 数组中全部元素的值 D) 数组元素的个数 19. 有以下说明和定义: struct Student { int num;
3

float score; }; Student stu[]={{1,70},{2,89},{3,93}}; Student *p=stu; 以下选项中引用结构体变量成员的表达式错误的是_______。 A) (p++)->num B) p->num C) p.num D) stu[1].age
2
12. 在 C 语言中,合法的字符常量是 。 A) ‘\084' B) ‘\x43'
C) ‘ab'
D) “\0”
13. 为表示关系 x≥y≥z,应使用的 C 表达式是 。 A) (x>=y) and (y>=z) B) (x>=y) && (y>=z) C) x>=y>=z D) (x>=y) & (y>=z) 14. 下列运算符中优先级最高的是______。 A) / B) && C) ! D) = 。
三. 程序分析题:阅读下列程序,写出程序执行结果
பைடு நூலகம்
1.
int main() { int a; float x=3.2,y=1.3;
1,3.20
4
a=(int)x%2*y; printf(“%d,%4.2f”,a,x); return 0; }
2.
int main( ) { int x=1,a=0,b=0; switch(x) { case 0: b++ ;break ; case 1: a++ ; case 2: a++ ;b++ ; } printf(“%d,%d”,a,b); return 0; }
15. 有定义:int a; 下面关于指针变量 pa 的定义及初始化正确的是 A) int pa=&a; B) int *pa=a; C) int *pa=&a; D)
int *pa=*a;
16. 下列程序的输出结果是________。 int { } printf(“%d”,s); A) 18 B) 20 C) 0 D) 1 i,s=0; if(i%3!=0) continue; s+=i; for(i=1;i<=10;i++)
5 ( F 32) 。已知:float C,F;由华氏求摄氏的正确 9
24. 定义如下变量和数组 int k; int a[3][3]={1,2,3,4,5}; for (k=0; k<3; k++) printf("%2d", a[k][k]); 则上面语句输出的结果是 。 A) 3 5 0 B)1 5 0 C) 3 4 5 D) 错误
10. 在整个程序运行期间,某局部变量始终占据固定地存储单元,则其存储类型为: (A)auto (B) static (C) register (D) extern
11. 下列关于 C 函数的叙述中,正确的是: (A) 每个函数至少要具有一个参数 (B) 每个函数都必须有返回值 (C) 每个 C 程序中必须有一个 main 函数 (D) 函数不能自己调用自己
《高级语言程序设计》习题
一.填空题
1. 2. 以下条件表达式可计算 1+|a|的值,填空完成语句:a>=0 ?(1+a):( 1-a ) 函数 max 定义的首部为:int max(int x[],int n),该函数完成实现寻找长度为 n 的 数组 x 中的最大元素。若在主函数中有定义:int c,a[10];并要求函数调用后,变
2,1
3.
void inv(int x[], int n) { int t,i,j; for(i=0;i<=(n-1)/2;i++) { j=n-1-i; t=x[i]; x[i]=x[j]; x[j]=t; } } int main() { int i,a[6]={1,2,3,4,5,6 }; inv(a,6); for(i=0;i<6;i++) printf(“%d,”,a[i]); printf("\n"); return 0;
)
7
3. 有以下程序: int main() { int k=2,i=2 ; i*=k++; printf(“%d,%d\n”,k,i);
1
return 0; } 执行程序后的输出结果是: (A) 2,4 (B) 3,4 (C) 2,6 (D) 3,6
4. 设 x,y,t 均为 int 型变量,则执行语句: x=y=3;t=++x||++y;后,t 的值为: (A) 不定值 (B) 1 (C) 3 (D) 4
2a 的 C 语言表达式是( 2 * a / (c*(b+c)) c(b c)
)。
二. 选择题(在每题的四个备选答案中,选出一个正确的答案)
1. 以下不能定义为变量名的是: (A) sanf (B) void (C) _2com (D) Go
2. 以下选项中非法的字符常量是: (A) ‘\\’ (B)‘\181’ (C) ‘0’ (D) ‘\xAA’
;
2、下面的程序功能是:计算输入整数的各位数字之和。例如整数 1987 各位数 字之和是 1+9+8+7,等于 25。请填空。 #include <stdio.h> void main() { int i,k=0,sum; printf("Enter a integer:"); scanf("%d",&i); (1)sum = 0 while(i!=0) { (2)k=i%10 sum += k; (3)i /= 10 } printf("sum is %d\n",sum); } 3、 下面的程序功能是:输出所有个位数为 6,且能被 3 整除的
22. 判断字符串 s1 是否大于字符串 s2,应当使用 。 A) if (s1>s2) B) if (strcmp(s1, s2)) C) if (strcmp(s2, s1)>0) 23. 温度华氏和摄氏的关系是: C 的 C 赋值表达式是 A) C=5/9(F-32) C) C=5/9*(F-32) 。 B) C=5*(F-32)/9 D) 三个表达式都正确 D) if (strcmp(s1, s2)>0)

-1
)。
11. 已知 ‘A’ ‘Z’ 的 ASCII 码为 6590,当执行 int x= ‘D’+5; 语句后 x 的值 为( 73 )。 12. 有定义 int a[6]={1,2,3,4,5,6},*p=a; 则*(p+2)的值为( 3 ),*(++P)的值 为( 2 )。 13. 如果在调用一个函数过程中,又调用另一个函数,称为函数的( 嵌套 )调用。 如果在调用一个函数的过程中又直接或间接地调用该函数本身,称为函数的( 递 归 )调用。 14. 若有语句:int b[][2]={1,2,3}; 则数组 b 的元素 a[1][1]的值是( 0 )。 15. 能正确表示数学表达式
相关文档
最新文档