《C语言程序设计》复习题.doc



《《C语言程序设计》复习题.doc》由会员分享,可在线阅读,更多相关《《C语言程序设计》复习题.doc(22页珍藏版)》请在装配图网上搜索。
1、《C语言程序设计》复习题 一、 判断题(本大题共60个小题) 1. C程序执行的入口是main()函数,所以main函数必须放在程序的开头。(B) 2. 定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。(B) 3. 注释内容太多会影响程序的执行效率。(B) 4. 变量要“先定义,后使用”。(A) 5. 字符常量a与字符串常量"a"没有区别。(B) 6. 数学公式y=-6xz+5[2(a-5)+3]写成C语言表达式是y=-6*x*z+5*[2*(a-5)+3]。(B) 7. 数学公式y=|x|+ab-c写成C语言表达式是y=fabs(x)+a*b-c。(A) 8.
2、 表达式5/2+5.0/2+7%6 的值为5.5。(A) 9. 设int b=7;float a=2.5,c=4.7;则表达式 a+(int)(b/2*(int)(a+c)/2)%4 的值为:4.5。(B) 10. 设int a=12; 则表达式a/=a+a的值是0.5。(B) 11. 在C语言中,运算符!比&&的优先级高。(A) 12. 在C语言中,运算符的优先级最小的是逗号运算符。(A) 13. scanf("%d,%d",&x,&y);的输入格式:3,4<回车>。(A) 14. 以下程序运行结果是:1,7,0 (A) void main() { int x=1,
3、y=1,z=10; if(z< 0) if(y> 0) x=3; else x=5; printf(" %d," ,x); if(z=y< 0) x=3; else if(y==0) x=5; else x=7; printf(" %d,%d" ,x,z); } 15. 该程序运行结果是:BCother (A) void main() { char x=‘B’; switch(x) { case ‘A’: printf(“A”); case ‘B’: printf(“B”); case ‘C’: printf(“C”); d
4、efault: printf(“other”); } } 16. 下面程序段运行时输出结果是a=2,b=8 (B) void main() { int x=1,y=1,a=2,b=7; switch(x) { case 1: switch(y) { case 0: a++;break; case 1: b++;break; } case 2: a++;b++;break; case 3: a++;b++; } printf("a=%d,b=%d\n",a,b); } 17. 下面程序,当输入为:
5、"abc?" 时,执行结果是:abc (A) void main() { char c; c=getchar(); while (c!=? ) { putchar(c); c=getchar();} } 18. 该程序运行结果是:< > < > < > # (A) void main() { int i; for(i=1;i<=5;i++) { if(i%2) putchar(‘<’); else continue; putchar(‘>’); } putchar(‘#’); } 19. break语句可用于循环语句和if语句中。(
6、B)
20. continue语句不可用于循环语句中。(B)
21. 以下程序的功能是判断一个数是否是素数 (A)
#include
7、void main() { int i,s ; for(i=2;i< =100;i+=2 ) s+=i; } (注意s的初始值) 23. 数组的下标是从1开始计数的。(B) 24. 若有int s[4]={1,2,3,4};,则s[s[0]+2*s[2]-s[3]]的值是4。(A) 25. 下面程序段运行时输出结果是:0 15 24 (A) void main() { int i=0,a[10]; for(i=0;i< =9;i++) a[i]=i*3; printf(" %d %d %d" ,a[0],a[5],a[8]); } 26. 下面程序段运行时输出结果是: 1 0 3
8、 3 4 5 6 6 (B) void main() { int a[8]={1,0,1,0,1,0,1,0},i; for(i=2;i< 8;i++) a[i]+= a[i-1] + a[i-2]; for(i=0;i< 8;i++) printf(“%d ”,a[i]); } 27. 以下程序的功能是:将一个数组中的元素按逆序重新存放并打印交换后的数组。(A) #define N 7 #include < stdio.h> void main() { static int a[N]={12,9,16,5,7,2,1},k,s; for (k=0;k< N
9、/2;k++) { s=a[k]; a[k]=a[N-1-k]; a[N-1-k] =s; } printf(" \n交换后的数组:\n" ); for(k=0;k< N;k++)printf(" %4d" ,a[k]); } 28. 若有定义int a[3][5];则排列在数组中的第9个元素是a[1][3]。(A) 29. 下面程序段运行时输出结果是:456 (B) void main() { int a[][3]={ 1,2,3,4,5,6,7,8,9},i,k=2; for(i=0;i< 3;i++) printf(“%d”,a[k][i]); } 30. 下面程序段运行时输
10、出结果是:"AAAA" (B) void main() { char ch[3][5]={ "AAAA" ,"BBB" ,"CC" }; printf(" \"%s\" " ,ch[1]); } 31. strlen("How are you\n")的值是 12 。(A) 32. C语言中字符串结束的标志是\0 (A) 33. strcmp("how","How")的值>0 。(A) 34. 以下程序的功能是:字符串a连接到字符串b,并显示字符串b。(B) void main() { char a[200]=”how are you.”, b[200]; int i=0;
11、 while(a[i] != \0 ) {b[i]=a[i]; i++; } b[i]= \0 ; printf(“新字符串是%s”,b); } 35. 当运行以下程序时,从键盘输入:AAAaaaAAA Abcd234abc AAaa,运行结果为:AaaAAAaaa。 void main() { char s[80], c=a; int i=0; scanf("%s",s); (注意scanf遇到空格的处理,与gets的不同) while(s[i++]!=\0) if(s[i] == c) s[i]=s[i]-32;
12、else if(s[i]==c-32) s[i]=s[i]+32; puts(s); } (A) 36. 下面程序段运行时输出结果是:6 (B) void main() { int *p,a=5,b=1; p=& a; *p=10; a=*p+b; printf(“%d”,a); } 37. 下面程序段运行时输出结果是:135 (A) void main() { int a[2][3]={1,3,5,7,9,11}; int m,*ptr; ptr=& a[0][1]; m=(*ptr)*(*(ptr+1))*(*(ptr+3)); printf(" %
13、d" ,m); } 38. 下面程序段运行时输出结果是: -5, -12, -7(A) void sub(int x,int y,int *z) { *z=y-x; } void main() { int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); printf("%4d,%4d,%4d\n",a,b,c); } 39. 下面程序段运行时输出结果是:4 (A) fun(char *s) { char *p=s; while (*p) p++;
14、 return(p-s); } void main() { char *str="abcd"; int i; i=fun(str); printf("%d",i); } 40. int *f();表示函数返回一个整型指针。(A) 41. 下面程序段运行时输出结果是:0,0 1,3 (B) f() { int x=0; static int y=0; printf(" %d,%d " ,x,y); x++; y=y+3; } void main() { int i; for(i=0;i< 2;i++) f(); } 42. 下面程序段运行时输出结果是2
15、 (A) int f(int n) { int s; if(n==1||n==2) s=1; else s=n-f(n-1); return s; } void main() { printf(“%d”,f(3));} 43. 下面程序段运行时输出结果是7 (B) void fun(int x,int y,int z) {z=x+y;} void main() { int a=3; fun(5,2,a); printf("%d",a); } 44. 在定义函数时,函数名后面的括号中的变量名称为实参。(B) 45. 为了保证被调用函数不返回任何值,其函数定义的类型应为 vo
16、id 。(A) 46. 若定义的函数没有参数,则函数名后的圆括号可以省略。(B) 47. 函数的实参和形参可以是相同的名字。(A) 48. 函数调用中,形参与实参的类型和个数必须保持一致。(A) 49. 函数的函数体可以是空语句。(A) 50. 在调用一个函数的过程中又出现直接或间接调用该函数本身,称为函数的递归调用。(A) 51. 在函数内定义的变量是局部变量,在函数外定义的变量是外部变量。外部变量是全局变量。(A) 52. 变量的存储类别有 自动型 、 静态型 、 寄存器型 、和 外部类型 共4种,它们分别用 auto 、 static 、 register 、 exter
17、n 标识。(A) 53. 对10个数进行从小到大排序。要求排序在函数sort内完成,用起泡算法。main函数内进行数据输入、调用排序函数sort、并输出排序后的数据。判断以下程序是否正确: (B) void sort(int a[],int n) { int i,j,k; for ( i=0; i< n-1; i++) for ( j=0; j< n-1-i; j++) if (a[j]> a[j+1]) { k=a[j];a[j]=a[j+1];a[j+1]=k; } } void main( ) { int a[10], i, j, k; for ( i
18、=0 ; i< 10 ; i++) scanf(" %d" , & a[i]) ; printf(" \n" ) ; sort(a[10],10); (注意数组作函数参数) for (i=0; i< 10; i++) printf(“%d," ,a[i]); } 54. 预处理命令#include的作用是文件包含 。 55. 结构体的成员不能是结构体变量。(A) 56. “按位与”运算指两个运算数相应的二进制位中只要有一个为1,则该位结果值为1,比如0|0=0,1|0=1。(B) 57. C语言库函数fgets(str,n,fp)的功能是从文件fp中读取n个字符串存入str指
19、向的内存。(B) 58. 函数rewind的作用是使位置指针自动移至下一个字符位置。(B) 59. 函数fseek的作用是使位置指针移至第一个字符位置。(B) 60. C语言中以w+方式打开文件后,可执行的文件操作是可任意读写。(B) 二、 单项选择题 (本大题共45个小题) 61. 一个C语言程序总是从 B 开始执行。 A. 主过程 B. 主函数 C. 子程序 D.主程序 62. 下面四个选项中,均是不合法的用户标识符的选项是 C 。 A. BA 、x_0、do B. float、1a0、_Y C. x-y、got
20、o、123 D. _123、tmp、CHAR 63. C语言中,int型数据在内存中的存储形式是 D 。 A. ASCII码 B.原码 C.反码 D.补码 64. 下列属于C语言合法的字符常量的是 C 。 A. ‘\85’ B. “n” C. ‘\t’ D.“\0” 65. 下面正确的字符串常量是 C 。 A.a B. 376 C."\\n" D.376 66. 不合法的常量是: D 。 A. ‘\2’ B
21、. " " C. ‘3’ D. ‘\483’ 67. 字符串"\\\"123\"\\"的长度是 B 。 A. 11 B. 7 C. 5 D. 3 68. 存储字符串"\\\abc\376"需要的字节数是 D 。 A.11 B.13 C.)6 D.)7 69. 表达式A+4*25.0-b的正确结果是 B 。 A. 67 B. 67.0 C. 不确定 D. 67L 70. 下面哪个式子在a为奇数时结果为假 C 。 A.a%2==1 B.
22、 !(a%2==0) C. !(a%2) D. a%2
71. 若x是int型变量,y是float型变量,所用的scanf调用语句格式为:
scanf("x=%d,%f",&x,&y);则为了将数据10和66.6分别赋给x和y,正确的输入应是: A 。
A. x=10,66.6<回车> B. 10 66.6<回车>
C. 10<回车>66.6<回车> D. x=10<回车>66.6<回车>
72. w=4,x=3,y=2,z=1,则条件表达式w 23、C. 2 D. 1
73. 能表示条件0≤x≤100的表达式是 D 。
A. 0<=x<=100 B. x>=0,x<=100
C. 0≤x≤100 D. x>=0&&x<=100
74. 判断char型变量ch为数字的正确表达式是 B 。
A. ch>="0"&&ch<="9" B. ch>=0&&ch<=9
C. 0≤ch≤9 D. ch>=0||ch<=9
75. 分析以下程序, 下列说法正确的是 D 。
void main()
{
int x=0,a=0,b=0; 24、
if(x=a+b) printf("tttt\n");
else printf("kkkk\n");
}
A. 有语法错,不能通过编译 B. 通过编译,但不能连接
C. 输出tttt D. 输出kkkk
76. 程序段如下,则以下说法中正确的是: B 。
int k=-5;
while(k=0) k=k+1;
A. while循环执行5次 B. 循环体语句一次也不执行
C. 循环是无限循环 D. 循环体语句执行一次
77. 下述f 25、or循环语句 B 。
int i,k;
for(i=0,k=-1;k=2;i++,k++) printf("* * * *");
A. 判断循环结束的条件非法 B. 是无限循环
C. 只循环一次 D. 一次也不循环
78. 下列程序段执行后k值为 A 。
int k=0,i,j;
for(i=0;i<5;i++)
for(j=0;j<3;j++)
k=k+1 ;
A. 15 B. 3 C. 5 D. 8
79. 以下关于数组的描述正 26、确的是 C 。
A. 数组的大小是固定的,但可以有不同的类型的数组元素。
B. 数组的大小是可变的,但所有数组元素的类型必须相同。
C. 数组的大小是固定的,但所有数组元素的类型必须相同。
D. 数组的大小是可变的,但可以有不同的类型的数组元素。
80. 在c语言中引用数组元素时,其数组下标的数据类型允许是 C 。
A.整型常量 B.整型表达式
C.整型常量或整型表达式 D.任何类型的表达式
81. 对以下说明语句的正确理解是 B 。
int a[10]={6,7,8,9,10};
A.将5个初值 27、依次赋给a[1]至a[5]
B.将5个初值依次赋给a[0]至a[4]
C.将5个初值依次赋给a[6]至a[10]
D.因为数组长度与初值的个数不相同,所以此语句不正确
82. 在执行int a[][3]={1,2,3,4,5,6};语句后,a[1][1]的值是 D 。
A. 4 B. 1 C. 2 D. 5
83. 对于类型相同的两个指针变量之间,不能进行的运算是 C 。
A. < B. = C. + D. -
84. 以下不能正确赋值的是 A 。
A. char s1[10];s1="te 28、st"; B. char s2[]={’t’,’e’,’s’,’t’}
C. char s3[20]= "test"; D. char s4[4]={ ’t’,’e’,’s’,’t’}
85. 对字符串"Boy"进行完整赋值的操作是 B 。
A.char s[3] = {B,o,y}; B. char s[] = "Boy";
C.char s[3] = {"Boy"}; D.char s[3]; s="Boy";
86. 在C语言程序中,以下描述正确的是 B 。
A. 函数的定义可以嵌套,但函数的调用不 29、可以嵌套
B. 函数的定义不可以嵌套,但函数的调用可以嵌套
C. 函数的定义和函数的调用均不可以嵌套
D. 函数的定义和函数的调用均可以嵌套
87. 以下函数调用语句中实参的个数为 A 。
exce((v1,v2),(v3,v4,v5),v6);
A. 3 B. 4 C. 5 D. 6
88. 下述函数定义形式正确的是 C 。
A. int f(int x; int y) B. int f(int x,y)
C. int f(int x, int y) D. int f(x,y: int)
89. 关于函数参数,说法正确的是 30、 A 。
A. 实参与其对应的形参各自占用独立的内存单元
B. 实参与其对应的形参共同占用一个内存单元
C. 只有当实参和形参同名时才占用同一个内存单元
D. 形参是虚拟的,不占用内存单元
90. 一个函数的返回值由 D 确定。
A. return语句中的表达式 B. 调用函数的类型
C. 系统默认的类型 D. 被调用函数的类型
91. 当调用函数时,实参是一个数组名,则向函数传送的是___B____。
A.数组的长度 B.数组的首地址
C.数组每一个元素的地址 D.数组每个元素中的值
92. 若有以下说明:
int a 31、[10]={1,2,3,4,5,6,7,8,9,10} ,*p=a ;
则数值为3 的表达式是 C 。
A. *p+3 B. *(p+3) C. *p+=2 D. p+2
93. 下面程序用于输出数组中的最大值,则程序段中空白处应是 A 。
void main()
{ int a[5]={3,2,5,6,4},*p,*s;
for(p=a,s=a;p-a<10;p++)
if( ) s=p;
printf(“max is %d”,*s);
}
A. *s<*p B. s
33、
A. zqsl B.zhaoqiansunli C.zhao D.以上都不对
96. 若x=5,y=5,则x&y的结果是____D_____.
A. 0 B. 2 C. 3 D. 5
97. 在位运算中,操作数每左移两位,则结果相当于___D_____.
A. 操作数乘以2 B. 操作数除以2
C. 操作数除以4 D. 操作数乘以4
98. 当用户定义一个结构体变量时,系统分配给它的内存为各成员所需内存的 A
A.和 B.最大值 C.不确定 D.无关
99. 若有以下结构体定义,则正确的引用或定义是 34、 B 。
struct example
{ int x;int y;
}v1;
A. example.x=10; B. example v2.x=10;
C. struct v2;v2.x=10; D. struct example v2={10};
100. 设有如下定义:struct sk {int a ;float b ;}data ,*p ;若有p=& data ; ,则对data 中的a 域的正确引用是 D 。
A.(*p).data.a B.(*p).a C.p-> data.a D.p.data 35、.a
101. C语言可以处理的文件类型是 B 。
A. 文本文件和数据文件 B. 文本文件和二进制文件
C. 数据文件和二进制文件 D. 数据代码文件
102. 如果要打开C盘file文件夹下的abc.dat文件,fopen函数中第一个参数应为 D 。
A. c:file\abc.dat B. c:\file\abc.dat
C. "c:\file\abc.dat" D. "c:\\file\\abc.dat"
103. 若想对文本文件只进行读操作,打开此文件的方式为 A 。
A."r 36、" B."W" C."a" D."r+"
104. 在C程序中,可把整型数以二进制形式存放到文件中的函数是 C 。
A.fprintf函数 B.fread函数 C.fwrite函数 D.fputc函数
105. 打开文件,操作完毕后用 C 函数关闭它。
A.fopen B.open C.fclose D.close
三、 编程题(本大题共1016个小题)
106. 求200到800之间所有能被3整除但不能被7整除的数的和。
答:
#include 37、=200;i<=800;i++)
if(i%3==0&&i%7!=0)
sum=sum+i;
printf("TheVsumVis: %d\n",sum);
}
107. 输入一百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分及以上为‘A’ ,80-89分为‘B’,70-79分为‘C’,60-69分为‘D’,60分以下为‘E’。
答:
#include 38、 scanf("%d",&score);
if ((score>100)||(score<0))
printf("\ndata error\n");
else
{
if(score= =100) temp=9;
else temp=score/10;
switch (temp)
{
case 9 : grade=A;break;
case 8 : grade= 39、B;break;
case 7: grade=C;break;
case 6: grade=D ; break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0: grade=E ;
}
printf("%d,%c\n", score,grade);
}
}
108. 输入任意十个数,打印出它们中的最 40、大数、最小数。
答:
#include 41、clude 42、1,n2,n3,n4);
}
110. 求1!+2!+3!+…+100!。
答:
#include 43、i;j++)
printf (" *");
printf("\n");
}
}
112. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数, 其各位数字立方和等于该数本身。例如 153是一个水仙花数,因为 153=。
答:
方法1:
#include 44、 if (i==k1*k1*k1+k2*k2*k2+k3*k3*k3)
printf("%d=%d^3+%d^3+%d^3\n",i,k1,k2,k3);
}
}
方 法 2
#include 45、3;
if (i==k1*k1*k1+k2*k2*k2+k3*k3*k3)
printf("%d=%d^3+%d^3+%d^3\n",i,k1,k2,k3);
}
}
有10个地区的面积,要求对它们按由小到大的顺序排列(采用起泡法排序)。
113. 有10个地区的面积,要求对它们按由小到大的顺序排列(采用起泡法排序)。
答:
#include 46、ut 10 numbers :\n");
for (i=0;i<10;i++) scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if (a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("the sorted numbers :\n");
for(i=0;i<10;i++) printf("%d ",a[i]);
printf("\n");
}
114. 已知5个 47、整数,已经由大到小排好序,现输入一个数,将其插入到该数组适当位置,使其仍然有序。
答:
#include 48、
}
115. 有一行文字,要求删去某一个字符。此行文字和要删去的字符均由键盘输入,要删去的字符以字符形式输入(如输入 a表示要删去所有的 a字符)。
答:
#include 49、 { str2[k]=str1[i]; k++; }
str2[k]=\0;
printf("\n%s\n",str2);
}
116. 有一个 34的矩阵,编程求出其中值最大的那个元素的值,以及其所在的行号和列号。
答:
#include 50、or(j=0;j<4;j++)
if (max
void main()
{ int a[4][10],b[4],i,j;
for(i=0;i<4;i++)
for(j=0;j<10;j++)
scanf("%d",&a[i][j]);
for(i=0;i<4;i++)
{ b[i]=a[i][ 51、0];
for(j=1;j<10;j++)
if(b[i]
#defi 52、ne N 10
void f(int a[],int n)
{ int i, t, j=0, min=a[0];
for(i=1;i<=n-1;i++)
if(a[i] 53、N个数到数组中,输出所有大于N个数平均值的数。要求:定义函数average,计算N个数的平均值用函数实现;在主函数main中输入任意10个数,调用average,输出大于平均值的数。
答:
#include 54、or(i=0;i 55、urn 1;
}
void main()
{
int i;
for(i=2;i<100;i++)
if(prime(i)) printf(" %d ",i);
}
121. 编一函数mystrcat,将两个字符串连接起来(即实现字符串连接函数strcat()的功能)。在main函数内实现对该函数的调用,即输入任意两个字符串,调用该函数,并把连接后的字符串输出。
答:
#include
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。