当前位置:文档之家› C模拟考试题及参考答案(10级)

C模拟考试题及参考答案(10级)

C语言程序设计模拟试题(10级)一、单选题(、共30小题,每小题1分,共30分)1、有如下定义:struct date{int year,month,day;};struct person{char name[20];char sex;struct date birthday;} a;对结构体变量a的出生年份赋值时,下面正确的赋值语句是:()。

A. a.year=2010;B. birthday.year=2010;C. a.birthday.year=2010;D. year=2010;2、若定义了struct num{int a;int b;}d[3] ={{1,4},{2,5},{6,7}};则执行printf("%d\n",d[2].a* d[2].b/d[1].b);语句的输出结果是:()。

A.2B.2.5C.8D.8.43、以下程序的运行结果是:()。

void main(void){struct num{int x;int y;}cnum[2]={1,3,2,6};printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].y);}A. 18B. 12C. 6D. 14、在VC++6.0中,若有以下说明:struct st{ int x;float y;};则:sizeof(struct st) 的值为():A. 6B. 8C. 10D. 125、若变量x和y均为整型,且x=y=1,则表达式y+=x+1的值为( )。

A. 3B. 2C. 1D.无正确结果6、表示关系x<=y<=z的c语言表达式为( )。

A. (X<=Y<=Z)B. (X<=Y)AND(Y<=Z)C. (X<=Y)&&(Y<=Z)D. (X<=Y)&(Y<=Z)7、x为int型变量,执行以下语句后,x的值为( )。

x=10;x+=x-=x-x;A.10B.20C.30D.408、有以下程序:void main( ){ ;;;}程序运行后的结果是( ):A.编译时有警告错误B.编译时有语法错误C.编译没有错误,但是运行时出错D.程序正常运行,但是无任何输出9、若有输入语句"scanf("%d,%d,%d" ,&x,&y,&z) ;",欲使x的值为10,y的值为20,z的值为30,则正确的输入应为( ):A. 10 , 20 ,30〈回车〉B. 10 20 30〈回车〉C. 10,20,30〈回车〉D. 10〈回车〉20〈回车〉30〈回车〉10、关于if后面一对圆括号中的表达式,叙述正确的是( )。

A. 只能用关系表达式B. 只能用逻辑表达式C. 只能用关系表达式或逻辑表达式D. 可以使用任意合法的表达式11、以下不正确的if语句是( )。

A. if (a<b) t=a ;B. if (a !=b && b) ;C. if (a=b) printf("equal" ) ;D. if (a>b) && (b>c) printf("max=%d",a);12、在对文件进行操作时,读文件的含义是( ):A. 将内存中的信息存入磁盘B. 将磁盘中的信息输入到内存C. 将CPU中的信息存入磁盘D. 将磁盘中的信息输入到CPU13、调用fopen函数打开一个文件失败时,函数返回的值是():A. -1B. EOFC. NULLD. 114、feof(fp)函数是用来测试fp所指的文件是否结束,如果文件结束,则feof(fp)返回的值是():A. 0B. 1C. NULLD. 以上答案都不对15、在引用数组元素时,其下标表达式的类型必须是( )。

A. 字符型B. 整型C. 整型或字符型D. 整型常量16、对定义"int a[2]; "的正确描述是( )。

A. 定义一维数组a,包含a[1]和a[2]两个元素B. 定义一维数组a,包含a[0]和a[1]两个元素C. 定义一维数组a,包含a[0]、a[1]和a[2]三个元素D. 定义一维数组a,包含a(0)、a(1)和a(2)三个元素17、假设有两个字符数组a[80],b[80],则正确的输出语句是( )。

A.puts(a,b);B.printf("%s %s",a[],b[]);C.putchar(a,b);D.puts(a); puts(b);18、以下运算符中,优先级最高的是( )。

A. !B. [ ]C. ++D. %19、C程序中,合法的关键字是( ):A. intB. integerC. IntD. Integer20、在C程序中,不合法的浮点型常量是( ):A.3.4E2.5B..456C.0.820000D.100.3e521、While 语句中循环结束的条件是while后面表达式的值是( )。

A. 0B. 1C. -1D. 非022、C语言中while和do-while循环的主要区别为( )。

A. do-while的循环体至少无条件执行一次B. while的循环控制条件比do-while的循环控制条件严格C. do-while允许从外部转到循环体内D. do-while的循环体不能是复合语句23、执行循环语句"for (i=1; i<10; i++) a++;"后,变量i的值是( )。

A. 9B. 10C. 11D. 不确定24、有以下程序段:int t=0;while(t=1) t--;while循环执行的次数是( )。

A. 一次也不执行B. 只执行一次C. 无限次D. 执行2次25、以下正确的描述是( )。

A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可以嵌套C.函数的定义和函数的调用均不可以嵌套D.函数的定义和函数的调用均可以嵌套26、以下叙述中正确的是( )。

A.在C语言中静态变量在未赋值时,其值为0B.在C语言中任何变量在未赋值时,其值为0C.外部变量在程序的任何函数中均有效D.函数中任何一个局部变量均无法保留上一次调用时的运行结果27、以下关于函数调用的描述中错误的是( )。

A.实参可以是常量、表达式或有确定值的变量B.实参和形参共用同一内存单元C.实参和形参的类型、个数必须一致D.只有发生函数调用时,系统才为形参分别存储空间28、已经有以下函数定义:fun (char a){ printf((“a=%c\n”, a); }该函数的返回值类型是( )。

A.voidB.charC.intD.不确定29、下面程序运行时,如果从键盘上输入3,5<回车>,程序输出的结果是()。

void main( void){ int a,b,*pa,*pb;pa=&a; pb=&b;scanf("%d,%d",pa,pb);*pa=a+b;*pb=a+b;printf("a=%d,b=%d\n",a,b);}A) a=13,b=13B) a=8,b=8C) a=8,b=13D) 出错30、设有定义:int n1=0, n2, p=&n2, q=&n1;,以下赋值语句中与n2=n1; 语句等价的是()。

A) *p=*q;B) &q=&p;C) p=&n1;D) p=q;二、填空题(共5小题,每小题3分,共15分)1、统计学生成绩中不及格的学生名单。

#include<stdio.h>struct student{long num;char name[20];float score;}stu[6]={{9910110,”wangling”,85},{9910111,”liming”,90.5},{9910112,”fengyong”,90.5}, {9910113,”fangjun”,56},{9910114,”sunping”,77.5},{9910115,”kongxiao”,50.5}};void main(){ struct student s;int i,count=0;printf(“不及格名单:\n”);for(i=0;i<6;i++)if(________<60){ count++;printf(“%ld:%-12s %.1f\n”, stu[i].num, stu[i].name, stu[i].score);}printf(“不及格人数:%d\n”,count);}答案:stu[i].score2、下面的函数sum 完成计算1~n的累加和。

sum(int n){ if(n<=0)printf("data error\n");if(n==1) return 1;else ___________}答案:答案:return sum(n-1)+n;或:return (sum(n-1)+n);或:return n+sum(n-1);或:return (n+sum(n-1));3、下面程序是实现1+1/2+1/4+1/6+…+1/50的值,请填空:main(){ int i=2;float sum=1;while (i<=50){sum=sum+1/(float)i;i++;__________;}printf(“sum=%f\n”,sum)}答案:i++i=i+1++ii+=1i++;i=i+1;++i;i+=1;4、下面程序输入一个字符串,输出其中所出现过的大写英文字母.如输入字符串“UKSDYckjsjsjJSJJD”;应输出“UKSDYJ”。

按程序功能填空。

#include <stdio.h>main(){ char a[80], b[26];int i,j,k=0;gets(a);for(i=0;a[i]!='\0';i++)if(a[i]>='A'&&a[i]<='Z'){ for(j=0;j<k;j++)if (b[j]==a[i]) break;if(j= =k){ b[k]=a[i]; k++; }}b[k] =' \0';for(i=0; ;i++)printf("%c ",b[i]);}答案:i<strlen(b)i<ki<j+1b[i]!='\0'b[i]!=05、下面的程序将浮点数写到文件test中,然后读出并显示。

相关主题