最新c语言程序设计试卷及答案(A)
《C语言程序设计》2013至2014 学年度第 1 学期期末(A)卷
专业班级姓名学号
题号一二三四五六七八合计得分
评卷人
(考生注意:考试时间为120分钟。答案须写在答题纸上,并注明题号,考试结束后将试卷连同答题纸一齐交)
一、单项选择题(每小题2分,共40分)
1.在一个C语言程序中,有并且只能有一个( )函数。
A. main函数
B.自定义函数
C.外部函数
D.内部函数
2.一个C语言程序,总是从()函数开始执行。
A. main函数
B.自定义函数
C.外部函数
D.内部函数
3.下列标识符中,不能用作变量名的是( )。
A. _1234_
B. _1_2
C. int_2_
D. 2_int_
4.下列字符常量不合法的是( )。
A. ‘2’
B. ‘\t’
C. ‘ab’
D. ‘ \n’
5.执行以下语句后的输出结果为( )。
int x; float y; y=3.6; x=(int)y+10; printf(“x=%d,y=%f”,x,y);
A. x=13.6,y=3.600000
B. x=13,y=3.600000
C. x=13,y=3
D. x=13,y=3.6
6.以下哪种变量类型在C语言中不存在( )。
A. 整型变量
B.实型变量
C. 字符串变量
D.字符变量
7.设m=10,n=4,则赋值运算m%=n+1执行后m的值是( )。
A. 1
B. 2
C. 3
D. 0
8.下面语句执行后输出结果为( )。
int x=10,y=3,z; printf(“%d\n”,z=(x%y,x/y));}
A. 0
B.1
C. 3
D. 4
9. 下面语句执行后输出结果为( )。
int x=10,y=10,z=10; printf(“%d,%d,%d ”,x++,--y,++z);}
A. 10,10,10
B. 10,9,11
C. 9,10,11
D. 11,10,9
10.以下选项中不是C语句的是( )。
A. {int i; i++; printf("%d\n", i); }
B. ;
C. a=5,c=10
D. { ; }
11.以下程序的输出结果是( )。
main( )
{ int x=2,y=-1,z=2;
if( x if(y<0) z=0; else z=z+1; printf(“%d”,z); } A. 0 B. 1 C. 2 D. 3 12.不能表达:x为奇数时表达式为“真”,偶数时表达式为“假”的表达式是( )。 A. x%2= =1 B. !(x%2= =0) C. !(x%2) D. x%2 13.以下程序段中while语句的循环次数是( )。 int i=0;while(i=1) {i++;} A.无限次 B. 有语法错误,不能执行 C. 一次也不执行 D. 执行一次 14.假设a,b均为字符数组以下正确的输入语句是( )。 A.gets(a,b); B. scanf(“%s%s”,a,b); C. scanf(“%s%s”,&a,&b); D.gets(“a”); gets(“b”); 15.若有定义:int a,*p; 则以下正确的赋值表达式是 ( )。 A. p=&a B. p=a C. *p=&a D. *p=*a 16.以下函数调用语句中,func(a+b,c-d+100);含有的实参个数是( )。 A. 1 B. 2 C. 4 D. 5 17.有以下定义:struct person{char name[9]; int age;} struct person class[10]={“Johu”,17,“Paul”,19,“Mary”,18,“Adam”,16,}; 则下面能输出字母M的语句是( )。 A. printf(“%c\n”,class[3].name); B. printf(“%c\n”,class[3].name[1]); C. printf(“%c\n”,class[2].name[1]); D. printf(“%c\n”,class[2].name[0]); 18.下列关于break和continue语句的叙述正确的是()。 A.都可以出现在程序的任何位置 B.break语句可以出现在循环体或switch语句中 C. continue语句可以出现在循环体或switch语句中 D.两者必须配对使用 19.用作累加器和累乘器的变量应该赋初始值为()和()。 A.0 0 B.0 1 C.1 0 D.1 1 20.下列语句()可以实现变量a与b的数值交换。 A.{a=b;b=a;} B.{t=a;b=a;a=t;} C{t=a;a=b;b=t;}. D.以上都正确 二、填空(每空1分,共20分) 1. C语言源程序文件的后缀是_____,经过编译后,生成文件的后缀是_____,经过连接后,生成文件的后缀是_____。 2. 表达式 3.5+1/2+56%10的结果为_____。 3. C语言中的三种逻辑运算符分别是_____、_____、_____。 4. 填空完成以下计算s=1+1/2+1/3+……+1/10的程序 main( ) { int n; float s=1.0; for(n=10; _____; _____ ) s=s+_____; printf(“%f”,s);} 5. 以下程序的功能是用选择法对数组a中的整数由小到大进行排序。 void sort(int b[],int n) { int i,j,t; for(i = 0;i for(_____;j if(b[i]_____b[ j]) {t = b[i];_______;b[ j]=t;}} main() { int a[]={5,8,6,2,7,4,1,3}; int i; sort(a,8); for(i = 0;i<8;i ++ ) printf(“﹪5d”,a[i]); printf(“\ n”);} 6. printf("%5.3f\n",123456.12345);输出为_____。 7. 存储字符串“program”的字符数组至少需要____个元素。 8指针变量可以加减一个整数,例如:_______________;指针变量可以有空值,例如_____________________________________________________。 9以下程序从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。#include #define SIZE 10 struct Student_type <------------------- { char name[10]; 程 int num; 序 int age; 段 char addr[15]; 1 }stud[SIZE]; <----------------- void save( ) <------------------- { FILE *fp; int i; if((fp=fopen("stu.dat","wb"))==NULL) 程 { printf("cannot open file\n"); 序return; 段} 2 for(i=0;i if(fwrite(&stud[i],sizeof(struct Student_type),1,fp)!=1) printf("file write error\n"); fclose(fp); } <------------------- int main() <------------------- { int i; printf(“enter d ata of students:\n"); 程for(i=0;i } <------------------- 请回答问题:程序段1完成的功能是___________________________________; 程序段2完成的功能是___________________________________; 程序段3完成的功能是___________________________________。 三、程序阅读(每小题5分,共30分) 1. 执行以下程序: main( ) { int i,j,k,t;