C语言程序设计期末温习题.docx
《C语言程序设计期末温习题.docx》由会员分享,可在线阅读,更多相关《C语言程序设计期末温习题.docx(13页珍藏版)》请在冰豆网上搜索。
![C语言程序设计期末温习题.docx](https://file1.bdocx.com/fileroot1/2022-12/12/35f413c9-37ab-49e3-91c5-cf3dc8eb6b77/35f413c9-37ab-49e3-91c5-cf3dc8eb6b771.gif)
C语言程序设计期末温习题
C语言程序设计期末温习题
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。
1.计算机能够自动按照人们的意图进行工作的最基本思想是( )
A.采用逻辑部件 B.存储程序和数据
C.控制代码 D.总结结构
2.若要显示C盘TC子目录下名为的内容一定成功的命令是( )
C:
\TC\EXAM
CONC;\TC\ C:
\TC\CON
3.编辑程序的功能是( )
A.修改并建立源程序 B.将源程序翻译成目标程序
C.调试程序 D.命令计算机执行指定的程序
4.设inta=2,b;则执行b=a&&1;语句后,b的结果是( )
5.逗号表达式(a=3*5,a*4),a+15的值是( )
6.在C程序中,设一表达式中包含有int,long,unsigned和char类型的变量和数据,则表达式最后的运算结果类型是( )
7.下面程序段的运行结果是( )
main( )
{inta=11,b=10,c=0;
a/=b+(b&&c);
printf(″%d\n″a);}
8.两次运行下面程序,如果从键盘上分别输入6和4,则程序的输出结果是( )
main( )
{intx;
scanf(″%d″,&x);
if(x++>5)printf(″%d″,x);
elseprintf(″%d\n″,x-1);}
和5 和3 和4 和4
9.表达式y<3?
∶1的值的类型应是( )
A.不确定 B.实型 C.整型 D.无符号整型
10.语句while(!
e);中,条件!
e等价于( )
=0 !
=0 !
=1 =0
11.下面程序的运行结果是( )
main( )
{inti=1,sum=0;
lop:
sum=sum+i;
i=i+2;
if(i<6)gotolop;
printf(″sum=%d\n″,sum);}
=4 =9 =16 =25
12.若定义intx[10];则TurboC编译系统为该数组分配( )个字节存储单元。
13.以下对一维数组a中的所有元素进行正确初始化的是( )
a[10]==(0,0,0,0); a[10]={ };
a[ ]={0}; a[10]={10*2};
14.若有定义:
charc[10];从键盘输入“LiFang”,则正确的函数引用是( )
(″%c″,&c[10]); (c);
(″%s″,&c); (c[10]);
15.若有如下函数定义:
add(floatx,floaty)
{……}
则下列说法正确的是( )
A.函数返回值类型不确定 B.函数返回值是float型
C.函数返回值是int型 D.函数返回值是void型
16.下面程序的运行结果是( )
fun(a,b)
inta,b;
{staticc=1;
if(c==1)
a=b+c;
else
a=b-c
c++;
printf(″a=%d,b=%d\n″,a,b);}
main( )
{inta=3,b=5;
fun(a,b);
fun(a+1,b-1);}
=6,b=5 =5,b=5 =6,b=5 =6,b=6
a=5,b=5 a=4,b=4 a=2,b=4 a=5,b=3
17.若输入5和2后,下面程序的运行结果是( )
voidswap(x1,x2)
int*x1,*x2;
{int*x;
x=x1;x1=x2;x2=x;}
main( )
{inta,b,*p1,*p2;
scanf(″%d,%d″,&a,&b);
p1=&a,p2=&b;
if(a>b)swap(p1,p2);
printf(″%d,%d\n″,*p1,*p2);}
2 ,5 ,5 ,2
18.若有定义int*x[3],b[10];则正确的赋值语句是( )
=b[0]; =b; [0]=b[0]; [0]=&b[0];
19.下面程序的运行结果是( )
#defineADD(x)x+x
voidmian( )
{inta=2,b=1;
prinft(″%d\n″,3*ADD(a+b));}
20.则FILE*fp;charch;ch=fgetc(fp);可以推知fgetc函数的原型可以是( )
fgetc( ); fgetc( )
fgetc(int); fgetc(FILE*fp);
二、多项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的五个选项中有二至五个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。
多选、少选、错选均无分。
21.下面哪些是组成MS—DOS操作系统的模块( )
C
22.与十进制141等值的数是( )
A.()2 B.()2 C.(215)8
D.(8D)16 E.(8E)16
23.设a=1,b=-3,c=0,下面表达式为0的是( )
>a&&aa)>(b>5)
D.!
a&&b‖a&&(c+1) E.(1,2,5)==(1,3,3)
24.在下列各说法中,正确的说法有( )
语句只能用于循环语句
语句只能用于switch语句和循环语句
语句可用于switch语句
语句可用于循环语句
语句不能用于switch语句
25.若有如下定义及赋值( )
intx=9,*p,*p1;
p=&x;p1=p;
则可以输出变量x的地址的语句是
(″%d\n″,x) (″%d\n″,*p);
(″%d\n″,p1); (″%d\n″,&x);
(″%d\n″,*p1);
26.有函数定义如下:
( )
voidss(x)
int*x;
{……}
则主函数中引用函数ss的正确形式是
() ( ) ( )
{inta[5]; {inta[5].*p=a; {inta[5];
… … …
ss(a); ss(p); ss(a[0]);
…} …} …}
( ) ( )
{inta[5],*p=a; {inta[5],*p=a;
… …
ss(p[0]); ss(*p);
…} …}
27.若有定义intx[4][5],(*p)[5];及赋值p=x;则下列表示数组地址的形式中,地址值相等的是( )
A.*(x+1) +1 [2]
+1 E.*(p+1)
28.设有定义inta[3][6],*p;则正确的指向数组元素的指针赋值是( )
=*a; =a[0]; =a
=a+1; =*(a[0]+1);
29.有以下定义和语句:
( )
structstud{charname[10];
intage;}
structstuds,*ps;
ps=&s;
则下面正确的语句是
={″Mary″,30} B.(*ps)→age=30
(″%d″,&ps→age); (ps→name,″Mary″);
30.设有inta=123;a^0xff00可以使a的( )
A.低字节取反 B.高字节取反 C.低字节不变
D.高字节不变 E.高低字节都取反
三、填空题(本大题共10小题,每小题1分,共10分)
31.设字长为八位,十进制—100在机内的存储形式是______。
语言程序由main()函数开始执行,应在______函数中结束。
33.在格式输出语句中,用于带符号的十进制长整型输出的格式符是______。
34.当a=2,b=3,c=1时,执行以下程序段后,输出结果是______。
if(a>b)
if(a>c)
printf(″%d\n″,a);
else
printf (″%d\n″,b);
printf(″end\n″);
35.设i,n,p均为int型变量,则执行以下程序段后,p的值为______。
p=1;n=4;
for(i=1;i<=n;i++)
p=p*i;
36.以下程序的输出结果是______。
main( )
{inta[3][3]={1,2,3,4,5,6,7,8,9},i,s=0;
for(i=0;i<=2;i++) s=s+a[i][i];
printf(″s=%d\n″,s);}
37.所谓变量的______就是可引用变量的范围,通常取决于变量被定义的位置。
38.设p1,p2为同类型的指针变量,若有p1==p2,则说明p1与p2指向______。
39.在unionstd
{intfjh;
char addr[30];
} wang;
中,wang是具有″unionstd″共用体类型的______。
40.字符串写函数fputs()的格式是fputs(str,fp);它的功能是______。
四、简答题(本大题共4小题,第41、42题每小题2分,第43、44题每小题3分,共10分)
41.描述一个C程序开发过程的流程图。
42.将下列条件语句逻辑关系写得更清晰一些(必要时可把if嵌套的有关部分写成复合语句)。
if(a
if(a if(a x=5;elsex=6;
43.定义char*str=″program″;和定义charstr[]=″program″;是等价的吗?
为什么?
44.简述feof函数返回值的含义。
五、阅读分析题(本大题10小题,每小题2分,共20分)
45.阅读下列程序,写出运行结果。
main()
{unsigneda;
intb=-1;
a=b;
printf(″%u\n″,a);
printf(″a=%x″,a);}
46.阅读下列程序,并回答问题:
main()
{int x=1,y=0,a=0,b=0;
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);}
请分析该程序的执行过程并写出运行结果。
第47、48、49题请参阅下面程序,并回答相关问题:
#defineN8
main()
{inta=1,b-1,i;
for(i=1,i<=N/2;i++)
{printf(″%5d%5d″,a,b);
if(i%2==0)printf(″\n″);
a=b+a;b=a+b;}}
(″\n″);语句执行多少次?
48.程序输出结果是什么?
49.若把if(i%2==0)print(″\n″);语句删除,程序输出效果与48题有何不同?
第50、51、52题请参阅下面程序,并回答相关问题。
main()
{intnum;
scanf(″%d″,&num);
if(prime(num))
printf(″%disprimenumber″,num);
else
printf(″%disnotaprimenumber″,num);}
intprime(num)
intnum;
{intflag=1,n;
for(n=2;n if(num%n==0)flag=0;
return(flag);}
函数的功能是什么?
51.当输入23时,程序运行结果是什么?
变量的作用是什么?
第53、54题请参阅下面程序,并回答相关问题。
structnode{intx;
structnode*next;};
voidprint(structnode*head)
{structnode*p;
p=head;
while(p!
=NULL)
{printf(″%d\n″,p→x);
p=p→next;
}
}
53.函数print完成的功能。
54.语句p=p→next;的作用。
六、程序设计题(本大题共2小题,第55小题8分,第56小题12分,共20分)
55.将26个英文字母按aAbBcCdD……zZ先小写后大写的顺序逐个打印出来。
56.编程实现将字符串str2连接到字符串str1的末尾并输出str1串。
(不得使用C中的strcat标准库函数)
一、单项选择题(本大题共20小题,每小题1分,共20分)
二、多项选择题(本大题共10小题,每小题2分,共20分)
三、填空题(本大题共10小题,每小题1分,共10分)
31.
()
33.%ld
=15
37.作用域
38.同一对象或同一变量
39.变量
40.向与fp有联系的文件中写一串字符。
四、简答题(本大题共4小题,第41、42题每小题2分,第43、44题每小题3分,共10分)
41.
(a
{if(c elseif(a {if(b elsex=2;
}
elseif(a {if(b elsex=4;
}
elsex=5;
}
elsex=6;
43.不等价,前者定义的str是字符串指针变量,后者定义的str是字符数组。
前者str中只存放字符串″program″的首地址,后者str中逐个存放字符串″program″中的字符。
44.设文件指针为fp,若feof(fp)的值为1,表示与fp有联系的文件结束,若feop(fp)的值为0,表示与fp有联系的文件没有结束。
五、阅读分析题(本大题共10小题,每小题2分,共20分)
45.运行结果为 65535
a=ffff
46.本程序关键是对switch执行过程的理解,其执行过程如下:
(1)根据x=1执行外层switch中Case1后的语句,该语句又是一个switch语句。
(2)根据y=0执行内层switch中的Case0后的语句。
此时a=1,并跳出内层switch语句。
(3)由于外层switch中Case1后无Break语句,故流程转入Case2后的语句,此时,a=2,b=1,并跳出外层switch.
最后输出结果a=2,b=1。
次。
1 2 3
5 8 13 21
49.程序输出结果在同一行上显示。
50.函数功能是判断一个数是否为素数。
51.结果为:
23isprimenumber
的作用是使for循环立即终止退出,当有一个n可以整除num时。
这样可以提高执行速度。
53.输出head所指链表的所有元素。
54.使指针p指向下一个结点。
六、程序设计题(本大题共2小题,第55小题8分,第56小题12分,共20分)
55.#include<>
voidmain(void)
{charch1=′a′,ch2=′A′;
while(ch1<=′z′)
{printf(″%c″,ch1);ch1++;
printf(″%c,ch2″);ch2++;
}
printf(″\n″);
}
56.#include<>
voidmystrcat(char*,char*);
voidmain(void)
{char*str1=″ahcd″,str2=″dcfg″;
mystrcat(str1,str2);
prinft(″%s″,str1);
}
voidmystrcat(char*s,shar*t)
{inti=0,j=0;
while(s[i]!
=′\0′)
i++;
while((s[i]=t[j])!
=′\0′)
{