《C语言程序设计》复习题.docx
《《C语言程序设计》复习题.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》复习题.docx(28页珍藏版)》请在冰豆网上搜索。
《C语言程序设计》复习题
《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.表达式5/2+5.0/2+7%6的值为5.5。
(A)
9.设intb=7;floata=2.5,c=4.7;则表达式a+(int)(b/2*(int)(a+c)/2)%4的值为:
4.5。
(B)
10.设inta=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)
voidmain()
{
intx=1,y=1,z=10;
if(z<0)
if(y>0)x=3;
elsex=5;
printf("%d,",x);
if(z=y<0)x=3;
elseif(y==0)x=5;
elsex=7;
printf("%d,%d",x,z);
}
15.该程序运行结果是:
BCother(A)
voidmain()
{charx=‘B’;
switch(x)
{
case‘A’:
printf(“A”);
case‘B’:
printf(“B”);
case‘C’:
printf(“C”);
default:
printf(“other”);
}
}
16.下面程序段运行时输出结果是a=2,b=8(B)
voidmain()
{
intx=1,y=1,a=2,b=7;
switch(x)
{
case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
17.下面程序,当输入为:
"abc?
"时,执行结果是:
abc(A)
voidmain()
{charc;
c=getchar();
while(c!
='?
'){putchar(c);c=getchar();}
}
18.该程序运行结果是:
<><><>#(A)
voidmain()
{inti;
for(i=1;i<=5;i++)
{
if(i%2)putchar(‘<’);
elsecontinue;
putchar(‘>’);
}
putchar(‘#’);
}
19.break语句可用于循环语句和if语句中。
(B)
20.continue语句不可用于循环语句中。
(B)
21.以下程序的功能是判断一个数是否是素数(A)
#include
#include
voidmain()
{intm,i;
scanf("%d",&m);
for(i=2;i<=sqrt(m);i++)if(m%i==0)break;
if(i>sqrt(m))printf(“%d是素数",m);
elseprintf(“%d不是素数",m);}
22.以下程序的功能是计算2+4+6+8+...+98+100。
(B)
voidmain(){inti,s;for(i=2;i<=100;i+=2)s+=i;}(注意s的初始值)
23.数组的下标是从1开始计数的。
(B)
24.若有ints[4]={1,2,3,4};,则s[s[0]+2*s[2]-s[3]]的值是4。
(A)
25.下面程序段运行时输出结果是:
01524(A)
voidmain(){inti=0,a[10];for(i=0;i<=9;i++)a[i]=i*3;printf("%d%d%d",a[0],a[5],a[8]);}
26.下面程序段运行时输出结果是:
10334566(B)
voidmain()
{inta[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)
#defineN7
#include
voidmain()
{staticinta[N]={12,9,16,5,7,2,1},k,s;
for(k=0;kprintf("\n交换后的数组:
\n");for(k=0;k28.若有定义inta[3][5];则排列在数组中的第9个元素是a[1][3]。
(A)
29.下面程序段运行时输出结果是:
456(B)
voidmain(){inta[][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.下面程序段运行时输出结果是:
"AAAA"(B)
voidmain(){charch[3][5]={"AAAA","BBB","CC"};printf("\"%s\"",ch[1]);}
31.strlen("Howareyou\n")的值是12。
(A)
32.C语言中字符串结束的标志是'\0'(A)
33.strcmp("how","How")的值>0。
(A)
34.以下程序的功能是:
字符串a连接到字符串b,并显示字符串b。
(B)
voidmain()
{chara[200]=”howareyou.”,b[200];inti=0;
while(a[i]!
='\0'){b[i]=a[i];i++;}b[i]='\0';
printf(“新字符串是%s”,b);}
35.当运行以下程序时,从键盘输入:
AAAaaaAAAAbcd234abcAAaa,运行结果为:
AaaAAAaaa。
voidmain()
{chars[80],c='a';
inti=0;
scanf("%s",s);(注意scanf遇到空格的处理,与gets的不同)
while(s[i++]!
='\0')
if(s[i]==c)s[i]=s[i]-32;
elseif(s[i]==c-32)s[i]=s[i]+32;
puts(s);
}(A)
36.下面程序段运行时输出结果是:
6(B)
voidmain(){int*p,a=5,b=1;p=&a;*p=10;a=*p+b;printf(“%d”,a);}
37.下面程序段运行时输出结果是:
135(A)
voidmain()
{inta[2][3]={1,3,5,7,9,11};intm,*ptr;
ptr=&a[0][1];
m=(*ptr)*(*(ptr+1))*(*(ptr+3));
printf("%d",m);}
38.下面程序段运行时输出结果是:
-5,-12,-7(A)
voidsub(intx,inty,int*z)
{*z=y-x;}
voidmain()
{
inta,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++;
return(p-s);
}
voidmain()
{char*str="abcd";
inti;
i=fun(str);
printf("%d",i);
}
40.int*f();表示函数返回一个整型指针。
(A)
41.下面程序段运行时输出结果是:
0,01,3(B)
f(){intx=0;staticinty=0;printf("%d,%d",x,y);x++;y=y+3;}
voidmain(){inti;for(i=0;i<2;i++)f();}
42.下面程序段运行时输出结果是2(A)
intf(intn){ints;if(n==1||n==2)s=1;elses=n-f(n-1);returns;}
voidmain(){printf(“%d”,f(3));}
43.下面程序段运行时输出结果是7(B)
voidfun(intx,inty,intz){z=x+y;}
voidmain(){inta=3;fun(5,2,a);printf("%d",a);}
44.在定义函数时,函数名后面的括号中的变量名称为实参。
(B)
45.为了保证被调用函数不返回任何值,其函数定义的类型应为void。
(A)
46.若定义的函数没有参数,则函数名后的圆括号可以省略。
(B)
47.函数的实参和形参可以是相同的名字。
(A)
48.函数调用中,形参与实参的类型和个数必须保持一致。
(A)
49.函数的函数体可以是空语句。
(A)
50.在调用一个函数的过程中又出现直接或间接调用该函数本身,称为函数的递归调用。
(A)
51.在函数内定义的变量是局部变量,在函数外定义的变量是外部变量。
外部变量是全局变量。
(A)
52.变量的存储类别有自动型、静态型、寄存器型、和外部类型共4种,它们分别用auto、static、register、extern标识。
(A)
53.对10个数进行从小到大排序。
要求排序在函数sort内完成,用起泡算法。
main函数内进行数据输入、调用排序函数sort、并输出排序后的数据。
判断以下程序是否正确:
(B)
voidsort(inta[],intn)
{inti,j,k;
for(i=0;ifor(j=0;jif(a[j]>a[j+1]){k=a[j];a[j]=a[j+1];a[j+1]=k;}}
voidmain()
{inta[10],i,j,k;
for(i=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指向的内存。
(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、doB.float、1a0、_Y
C.x-y、goto、123D._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.""C.‘3’D.‘\483’
67.字符串"\\\"123\"\\"的长度是B。
A.11B.7C.5D.3
68.存储字符串"\\\'abc\376"需要的字节数是D。
A.11B.13C.)6D.)7
69.表达式'A'+4*25.0-'b'的正确结果是B。
A.67B.67.0C.不确定D.67L
70.下面哪个式子在a为奇数时结果为假C。
A.a%2==1B.!
(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.1066.6<回车>
C.10<回车>66.6<回车>D.x=10<回车>66.6<回车>
72.w=4,x=3,y=2,z=1,则条件表达式ww:
yy:
z的结果为D。
A.4B.3C.2D.1
73.能表示条件0≤x≤100的表达式是D。
A.0<=x<=100B.x>=0,x<=100
C.0≤x≤100D.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。
voidmain()
{
intx=0,a=0,b=0;
if(x=a+b)printf("tttt\n");
elseprintf("kkkk\n");
}
A.有语法错,不能通过编译B.通过编译,但不能连接
C.输出ttttD.输出kkkk
76.程序段如下,则以下说法中正确的是:
B。
intk=-5;
while(k=0)k=k+1;
A.while循环执行5次B.循环体语句一次也不执行
C.循环是无限循环D.循环体语句执行一次
77.下述for循环语句B。
inti,k;
for(i=0,k=-1;k=2;i++,k++)printf("****");
A.判断循环结束的条件非法B.是无限循环
C.只循环一次D.一次也不循环
78.下列程序段执行后k值为A。
intk=0,i,j;
for(i=0;i<5;i++)
for(j=0;j<3;j++)
k=k+1;
A.15B.3C.5D.8
79.以下关于数组的描述正确的是C。
A.数组的大小是固定的,但可以有不同的类型的数组元素。
B.数组的大小是可变的,但所有数组元素的类型必须相同。
C.数组的大小是固定的,但所有数组元素的类型必须相同。
D.数组的大小是可变的,但可以有不同的类型的数组元素。
80.在c语言中引用数组元素时,其数组下标的数据类型允许是C。
A.整型常量B.整型表达式
C.整型常量或整型表达式D.任何类型的表达式
81.对以下说明语句的正确理解是B。
inta[10]={6,7,8,9,10};
A.将5个初值依次赋给a[1]至a[5]
B.将5个初值依次赋给a[0]至a[4]
C.将5个初值依次赋给a[6]至a[10]
D.因为数组长度与初值的个数不相同,所以此语句不正确
82.在执行inta[][3]={1,2,3,4,5,6};语句后,a[1][1]的值是D。
A.4B.1C.2D.5
83.对于类型相同的两个指针变量之间,不能进行的运算是C。
A.84.以下不能正确赋值的是A。
A.chars1[10];s1="test";B.chars2[]={’t’,’e’,’s’,’t’}
C.chars3[20]="test";D.chars4[4]={’t’,’e’,’s’,’t’}
85.对字符串"Boy"进行完整赋值的操作是B。
A.chars[3]={'B','o','y'};B.chars[]="Boy";
C.chars[3]={"Boy"};D.chars[3];s="Boy";
86.在C语言程序中,以下描述正确的是B。
A.函数的定义可以嵌套,但函数的调用不可以嵌套
B.函数的定义不可以嵌套,但函数的调用可以嵌套
C.函数的定义和函数的调用均不可以嵌套
D.函数的定义和函数的调用均可以嵌套
87.以下函数调用语句中实参的个数为A。
exce((v1,v2),(v3,v4,v5),v6);
A.3B.4C.5D.6
88.下述函数定义形式正确的是C。
A.intf(intx;inty)B.intf(intx,y)
C.intf(intx,inty)D.intf(x,y:
int)
89.关于函数参数,说法正确的是A。
A.实参与其对应的形参各自占用独立的内存单元
B.实参与其对应的形参共同占用一个内存单元
C.只有当实参和形参同名时才占用同一个内存单元
D.形参是虚拟的,不占用内存单元
90.一个函数的返回值由D确定。
A.return语句中的表达式B.调用函数的类型
C.系统默认的类型D.被调用函数的类型
91.当调用函数时,实参是一个数组名,则向函数传送的是___B____。
A.数组的长度B.数组的首地址
C.数组每一个元素的地址D.数组每个元素中的值
92.若有以下说明:
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为3的表达式是C。
A.*p+3B.*(p+3)C.*p+=2D.p+2
93.下面程序用于输出数组中的最大值,则程序段中空白处应是A。
voidmain()
{inta[5]={3,2,5,6,4},*p,*s;
for(p=a,s=a;p-a<10;p++)
if()s=p;
printf(“maxis%d”,*s);
}
A.*s<*pB.sp-s
94.设有如下的程序段:
charstr[]=“china";
char*ptr;
ptr=str;
执行上面的程序段后,*(ptr+5)的值为B。
A.'o'B.'\0'C.不确定的值D.'o'的地址
95.以下程序输出结果为A。
main()
{char*str[]={"zhao","qian","sun","li"};
inti;
for(i=0;i<4;i++)
printf("%c",str[i][0]);
}
A.zqslB.zhaoqiansunliC.zhaoD.以上都不对
96.若x=5,y=5,则x&y的结果是____D_____.
A.0B.2C.3D.5
97.在位运算中,操作数每左移两位,则结果相当于___D_____.
A.操作数乘以2B.操作数除以2
C.操作数除以4D.操作数乘以4
98.当用户定义一个结构体变量时,系统分配给它的内存为各成员所需内存的A
A.和B.最大值C.不确定D.无关
99.若有以下结构体定义,则正确的引用或定义是B。
structexample
{intx;inty;
}v1;
A.example.x=10;B.examplev2.x=10;
C.structv2;v2.x=10;D.structexamplev2={10};
100.设有如下定义:
structsk{inta;floatb;}data,*p;若有p=&data;,则对data中的a域的正确引用是D。
A.(*p).data.aB.(*p).aC.p->data.aD.p.data.a
101.C语言可以处理的文件类型是B。
A.文本文件和数据文件B.文本文件和二进制文件
C.数据文件和二进制文件D.数据代码文件
102.如果要打开C盘file文件夹下的abc.dat文件,fopen函数中第一个参数应为D。
A.c:
file\abc.datB.c:
\file\abc.dat
C."c:
\file\abc.dat"D."c:
\\file\\abc.dat"
103.若想对文本文件只进行读操作,打开此文件的方式为A。
A."r"B."W"C."a"D."r+"
104.在C程序中,可把整型数以二进制形式存放到文件中的函数是C。
A.fprintf函数B.fread函数C.fwrite函数D.fputc函数
105.打开文件,操作完毕后用C函数关闭它。
A.fopenB.openC.fcloseD.close
三、编程题(本大题共1016个小题)
106.求200到800之间所有能被3整除但不能被7整除的数的和。
答:
#include
voidmain()
{inti,sum=0;
for(i=