2010 ─ 2011 学年第二学期C语言程序设计课程试卷一、选择题(下列每题中只有一个正确答案,每题1分,共20分)1、C语言程序的基本单位 C 。
(A)程序行(B)语句(C)函数(D)字符2、设有语句“ int a=3; ”,则执行语句“ a+=a-=a*a; ”以后变量a的值是 D 。
(A)3 (B)0 (C)9 (D)-123、合法的C语言字符常量是 A 。
(A)…t‟(B)“A”(C)65 (D)A4、以下程序的输出结果是 D 。
main(){ int a=12,b=12;printf(“%d %d\n”,--a,++b);}(A)10 10 (B)12 12 (C)11 10 (D)11 135、若变量已正确定义,那么以下语句段的输出结果是____C____。
x=0;y=2;z=3;switch(x){ case 0:switch(y==2){ casa 1:printf(“*”);break;case 2:printf(“%”);break;}case 1:switch(z){ case 1:printf(“$”);case 2:printf(“*”);break;default:printf(“#”);}}(A)%$ (B)#* (C)*# (D)**$6、设实型变量为f1、f2、f3、f4的值分别为4,3,2,1;整型变量ml、m2的值为1。
表达式“(ml=fl>f2)&&(m2=f3<f4)”的值是 A 。
(A)0 (B)1 (C)2 (D)出错7、执行下列程序后,i 的值是 C 。
void main(){ int i, x;for(i=1, x=1;i<20; i++){if (x>=10) break;if(x%2= =1){x+=5; continue; }x-=3;}}(A)4 (B) 5 (C)6 (D)78、对以下for循环,叙述正确的是 B 。
for(x=0,y=0;(y!=123)&&(x<4); x++, y++);(A)执行了3次(B)执行了4次(C)是无限循环(D)循环次数不定9、在定义int a[5][4]; 之后,对a的正确引用是 C 。
(A)a[2][4] (B)a[5][0] (C)a[0][0] (D)a[0,0] 10、以下程序段的输出结果是 B 。
char str[ ]=”ab\n\012\\\””; printf(“%d\n”,strlen(str));(A)12 (B)6 (C) 4 (D) 311、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是 B (A)地址传递(B)单向值传递(C)由实参传给形参,再由形参传回实参(D)传递方式由用户指定12、C语言中,形参缺省的存储类别是 A(A)auto(自动)(B)static(静态)(C)register(寄存器)(D)extern(外部)13、已知指针P的指向如下图所示,则执行语句“*P++;”后,表达式“*P”的值是 A 。
(A)20 (B)30 (C)21 (D)3114、以下程序的输出结果是 C 。
void sub(int x,int y,int *z){ *z=y-x;}main(){ int a,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf(“%d,%d,%d\n”,a,b,c);}(A)5,2,3 (B)5,-2,-7 (C)-5,-12,-7 (D)-5,-12,-17 15、以下程序段的输出结果是 A 。
char str[ ]=“ABCD”,*p=str;printf(“%d\n”,*(p+4));(A)68 (B)0 (C)字符D地址(D)不确定的值16、C语言中,从计算机的内存中将数据写入文件,称为_ _ C _。
(A)输入(B)修改(C)输出(D)删除17、若以“a+”方式打开一个已存在的文件,则以下叙述正确的是 A 。
(A)文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作(B)文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作(C)文件打开时,原有文件内容不被删除,只可作写操作(D)以上各种说法皆不正确18、已知为year整型变量,不能使表达式“(year%4==0&&year%100!=0)||year%400==0 ”的值为“真”的数据是 A 。
(A)1998 (B)1992 (C)1996 (D)200019、比较两个字符串str1,str2(此处的str1和str2为两个字符数组名)是否相等的正确的表达式为 D 。
(A)if(str1=str2) … (B)if(str1==str2) …(C)if(strcmp(str1,str2)=0) … (D)if(strcmp(str1,str2)==0) …20、若c1,c2为char型变量,则为了使以下语句的输出为:a,b 正确的输入形式是B 。
scanf (“%c,%c”,&c1,&c2);printf (“%c,%c”,c1,c2);(A)a b (B)a,b (C)‟a‟ ‟b‟(D)ab二、填空题(每空1分,共20分)1、若a为int型变量,则表达式“ ((a=4*5,a*2), a+6) ”的值为26 。
2、以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时,结束输入,请填空。
main(){ float x ,amax,amin;scanf(“%f”,&x);amax=x;amin=x;while( a>=0 ){ if( amax<x ) amax=x;if( amin>x ) amin=x;scanf(“%f”,&x);}printf(“\n最高分=%f\n最低分=%f\n”,amax,amin);}3、下面程序的功能是将一个字符串按逆序存放,请填空。
#include <stdio.h>#include <string.h>void main( ){ char st[50],m; int i,j; gets(st);for( i=0,j=strlen(st); i< j ; i++, j--){ m=st[i]; st[i]= st[j] ; st[j] =m; }printf(“%s\n”,st);}4. 以下程序的输出结果是9.00double sub (double x ,double y ,double z ){ y-=1.0; z=z+x ; return z ;}void main ( ){ double a=2.5, b=9.0;printf (“%.2f\n ”,sub (b-a ,a ,a ));}5、 当定义一个以下类型的结构体变量时,系统分配给它的内存是 14 字节。
struct student{ char name[10];float height;}6、下面程序的输出结果是 12\nbeijingchina 。
void main(){ static char str[]="beijing";printf("%d\n",strlen(strcpy(str ,"china")));printf("%s",str);}7、下面程序是用来统计文件中字符的个数,其中文件以只读的方式打开,请填空。
#include <stdio.h>void main(){ FIlE *fp;long num=0;if((fp=fopen(“fname”,” r ”))==Null) //文件以只读的方式打开{ printf(“Can‟t open file!\n”); exit(0); }while( !feof(fp) ) //是否到文件末尾{ fgetc( fp ); num++ }printf(“num=%d \n”,num);fclose(fp);}8、设有int a=10,*p =&a; 则 *p+1的值是 11 。
9、数学式子xy ab3 写成C 语言表达式是 3*a*b/(x*y)10、下面程序的功能对3个整数进行从大到小排序,请补充完整。
#include<stdio.h>void main(){float a,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if ( a < b){ t=a;a=b;b=t; }if ( a<c ){ t=a;a=c;c=t; }if (b-c <0){ t=b ;b=c; c=t ; }printf("%5.2f,%5.2f,%5.2f\n",a,b,c);}11、输出100~1000范围内的所有“水仙花数”。
所谓“水仙花数”是一个3位正整数,其各位数字的立方和等于该数本身。
完善下面程序。
#include<stdio.h>void main(){ int i,j,k,n; //i,j,k分别存放三位正整数的从百位到个位上的数 for(n=100;n<1000;n++){ i= n/100 ;j=n/10-i*10;k=n%10;if ( n== i*i*i+j*j*j+k*k*k )printf("%4d",n);}printf("\n");}12、若int a=2,b=4: 则表达式“ a > b ? a : b ”的值为 4 。
13、C语言作为结构化程序设计语言,具有顺序结构、选择结构和循环结构3种基本结构。
三、程序设计(每题10分,共60分)1、有3个整数a、b、c,由键盘输入,输出其中最大的数。
2、通过键盘输入一行字符串,统计其中字母、数字、空格和其它字符的个数。
3、求一个3×3的整型矩阵对角线元素之和。
4、写一个判断素数的函数int prime (int x),其实现如下功能:如果x是素数,则该函数返回1;否则,该函数返回0。
在main函数中实现如下功能:声明一个整型变量n,用于保存键盘输入的一个整数,用n作为实参调用prime函数,根据其返回值,输出是否为素数的信息。
5、写一函数,求一个字符串的长度int length (char *p) ,实现如下功能:返回指针变量p所指向的字符串的长度。