c模拟考试题及参考答案09级.docx
《c模拟考试题及参考答案09级.docx》由会员分享,可在线阅读,更多相关《c模拟考试题及参考答案09级.docx(22页珍藏版)》请在冰豆网上搜索。
c模拟考试题及参考答案09级
C语言程序设计模拟试卷(09级)
1.2.4.5.9.11.12.13.15.19.20.22242526282930
一、单选题(、共30小题,每小题1分,共30分)
1、设a、b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是()。
A.a<=b
B.!
((a〈b)&&!
c||1)
C.'a'&&'b'
D.a||b+c&&b-c
2、设有语句chara='\72';则变量a()。
A.包含1个字符
B.包含2个字符
C.包含3个字符
D.说明不合法
3、有以下程序:
voidmain()
{;
;;
}
程序运行后的结果是():
A.编译时有警告错误
B.编译时有语法错误
C.编译没有错误,但是运行时出错
D.程序正常运行,但是无任何输出
4、x为int型变量,执行以下语句后,x的值为()。
x=10;
x+=x-=x-x;
A.10
B.20
C.30
D.40
5、若有输入语句"scanf("%d,%d,%d",&x,&y,&z);",欲使x的值为10,y的值为20,z的值为30,则正确的输入应为():
A.10,20,30〈回车〉
B.102030〈回车〉
C.10,20,30〈回车〉
D.10〈回车〉20〈回车〉30〈回车〉
6、以下不正确的if语句是()。
A.if(a
B.if(a!
=b&&b);
C.if(a=b)printf("equal");
D.if(a>b)&&(b>c)printf("max=%d",a);
7、关于if后面一对圆括号中的表达式,叙述正确的是()。
A.只能用关系表达式
B.只能用逻辑表达式
C.只能用关系表达式或逻辑表达式
D.可以使用任意合法的表达式
8、以下运算符中,优先级最高的是()。
A.!
B.[]
C.++
D.%
9、假设有两个字符数组a[80],b[80],则正确的输出语句是()。
A.puts(a,b);
B.printf("%s%s",a[],b[]);
C.putchar(a,b);
D.puts(a);puts(b);
10、对定义"inta[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)三个元素
11、在引用数组元素时,其下标表达式的类型必须是()。
A.字符型
B.整型
C.整型或字符型
D.整型常量
12、feof(fp)函数是用来测试fp所指的文件是否结束,如果文件结束,则feof(fp)返回的值是():
A.0
B.1
C.NULL
D.以上答案都不对
13、调用fopen函数打开一个文件失败时,函数返回的值是():
A.-1
B.EOF
C.NULL
D.1
14、在对文件进行操作时,读文件的含义是():
A.将内存中的信息存入磁盘
B.将磁盘中的信息输入到内存
C.将CPU中的信息存入磁盘
D.将磁盘中的信息输入到CPU
15、在C程序中,不合法的浮点型常量是():
A.3.4E2.5
B..456
C.0.820000
D.100.3e5
16、C程序中,合法的关键字是():
A.int
B.integer
C.Int
D.Integer
17、设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是()
A.P2=k;
B.P1=P2;
C.k=*P1+*P2;
D.k=*P1*(*P2);
18、以下选项中,对指针变量p不正确的操作是()。
A.inta[6],*p;p=&a;
B.inta[6],*p;p=a;
C.inta[6];int*p=a=1000;
D.inta[6];int*p1,*p2=a;*p1=*p2;
19、设有如下的程序段:
charstr[]="Hello";
char*ptr;
ptr=str;
执行上面的程序段后,*(ptr+5)的值为()。
A.'o'
B.'\0'
C.不确定的值
D.'o'的地址
20、While语句中循环结束的条件是while后面表达式的值是()。
A.0
B.1
C.-1
D.非0
21、有以下程序段:
intt=0;
while(t=1)t--;
while循环执行的次数是()。
A.一次也不执行
B.只执行一次
C.无限次
D.执行2次
22、执行循环语句"for(i=1;i<10;i++)a++;"后,变量i的值是()。
A.9
B.10
C.11
D.不确定
23、C语言中while和do-while循环的主要区别为()。
A.do-while的循环体至少无条件执行一次
B.while的循环控制条件比do-while的循环控制条件严格
C.do-while允许从外部转到循环体内
D.do-while的循环体不能是复合语句
24、以下关于函数调用的描述中错误的是()。
A.实参可以是常量、表达式或有确定值的变量
B.实参和形参共用同一内存单元
C.实参和形参的类型、个数必须一致
D.只有发生函数调用时,系统才为形参分别存储空间
25、以下正确的描述是()。
A.函数的定义可以嵌套,但函数的调用不可以嵌套
B.函数的定义不可以嵌套,但函数的调用可以嵌套
C.函数的定义和函数的调用均不可以嵌套
D.函数的定义和函数的调用均可以嵌套
26、已经有以下函数定义:
fun(chara)
{printf((“a=%c\n”,a);}
该函数的返回值类型是()。
A.void
B.char
C.int
D.不确定
27、以下叙述中正确的是()。
A.在C语言中静态变量在未赋值时,其值为0
B.在C语言中任何变量在未赋值时,其值为0
C.外部变量在程序的任何函数中均有效
D.函数中任何一个局部变量均无法保留上一次调用时的运行结果
28、在VC++6.0中,若有以下说明:
structst
{intx;
floaty;
};
则:
sizeof(structst)的值为():
A.6
B.8
C.10
D.12
29、在下列结构变量st的定义中,不正确的是()。
A.structstudent{intnum;floatscore;}st;
B.structstudent{intnum;floatscore;};studentst;
C.struct{intnum;floatscore;}st;
D.structstudent{intnum;floatscore;};structstudentst;
30、在VC6.0中,若有以下共用体说明:
unionuu
{floatx;
doubley;
charz;
}luck;
luck所占存储单元字节数为():
A.8
B.4
C.13
D.1
二、填空题(共5小题,每小题3分,共15分)
1、下面程序是实现1+1/2+1/4+1/6+…+1/50的值,请填空:
main()
{inti=2;
floatsum=1;
while(i<=50)
{
sum=sum+1/(float)i;
i++;__________;
}
printf(“sum=%f\n”,sum)
}
答案:
i++
i=i+1
++i
i+=1
i++;
i=i+1;
++i;
i+=1;
2、下面的程序可以实现从10个数中找出最大值和最小值功能,请填空。
#include
intmax,min;
find(int*p,intn)
{int*q;max=min=*p;
for(q=p;q
if(___________)max=*q;
elseif(min>*q)min=*q;
}
main()
{intI,num[10];
printf("Input10numbers:
\n");
for(i=0;i<10;i++)
scanf("%d",&num[i]);
find(num,10);
printf("max=%d,min=%d\n",max,min);
}
答案:
max<*q
max<=*q
*q>max
*q>=max
3、下面的程序将浮点数写到文件test中,然后读出并显示。
#include
main()
{FILE*fp;
floatf=12.34;
if((______(“test”,“wb”))==NULL)
{printf("Cannotopenfile.");exit(l);}
fwrite(&f,sizeof(float),1,fp);
rewind(fp);
fread(&f,sizeof(float),1,fp);
printf(“%f\n”,f);
fclose(fp);
}
答案:
fp=fopen
4、统计学生成绩中不及格的学生名单。
#include
structstudent
{
longnum;
charname[20];
floatscore;
}stu[6]={{9910110,”wangling”,85},{9910111,”liming”,90.5},{9910112,”fengyong”,90.5},{9910113,”fangjun”,56},{9910114,”sunping”,77.5},{9910115,”kongxiao”,50.5}};
main()
{
structstudent*p;
intcount=0;
printf(“不及格名单:
\n”);
for(p=stu;________;p++)
if(p->score<60)
{count++;
printf(“%ld:
%-12s%.1f\n”,p->num,p->name,p->score);
}
printf(“不及格人数:
%d\n”,count);
}
答案:
pp<=stu+5
5、下面程序输入一个字符串,输出其中所出现过的大写英文字母.如输入字符串“UKSDYckjsjsjJSJJD”;应输出“UKSDYJ”。
按程序功能填空。
#include
main()
{chara[80],b[26];
inti,j,k=0;
gets(a);
for(i=0;a[i]!
='\0';i++)
if(a[i]>='A'&&a[i]<='Z')
{for(j=0;jif(b[j]==a[i])break;
if(j==k)
{b[k]=a[i];k++;}
}
b[k]='\0';
for(i=0;__;i++)
printf("%c",b[i]);
printf("\n");
}
答案:
iiib[i]!
='\0'
b[i]!
=0
三、程序改错题(共5小题,每小题3分,共15分)
1、打开C:
\CAADATA\36中源程序文件pg4102.cpp,该程序是从键盘上输入一批学生的成绩,计算其中及格的有多少人(以负数作为数据输入结束的标识)?
请修改,使程序能正确运行。
该源程序内容如下:
#include
voidmain(void)
{
intcount,grades;
printf(“请输入分数:
\n”);
scanf("%d",&grades);
while(grades>=0)
{
if(grades>=60)count++;
}
printf("共有%d个学生成绩合格!
\n",count);
}
2、打开C:
\CAADATA\37中源程序文件pg3104.cpp,该程序是判断一个输入的字符是哪种类型的字符,修改程序,使之能正确运行。
该源程序内容如下:
#include
voidmain()
{
charch;
printf(“pleaseinputacharacter!
”);
ch=getchar();
ifch>='a'&&ch<='z'
printf("thisisalowercase\n");
elseifch>='A'&&ch<='Z'
printf("thisisauppercase\n");
elseifch>='0'&&ch<='9'
printf("thisisanumber\n");
else
printf("thisisaothercharacter\n");
}
3、打开C:
\CAADATA\41中源程序文件pg6101.cpp,该程序有小问题,程序结果不正确。
请修改,使程序能正确运行。
该源程序内容如下:
#include
voidmain(void)
{
inta[5];
printf("请输入5个整数:
");
for(i=1;i<=5;i++)
scanf("%d",&a[i]);
printf("这5个数为:
");
for(i=1;i<=5;i++)
printf("%4d",a[i]);
printf(“\n”);
}
4、打开C:
\CAADATA\42中源程序文件pg5101.cpp,该程序是求两个数的和,有一个小问题,请修改,使程序能正确运行。
该源程序内容如下:
#include
voidmain()
{
floata,b,c;
printf("请输入两个数,中间用逗号隔开:
");
scanf("%f,%f",&a,&b);
c=add(a,b);
printf("两个数之和为:
%f\n",c);
}
floatadd(floatx,floaty)
{
floatz;
z=x+y;
returnz;
}
5、打开C:
\CAADATA\43中源程序文件pg8107.cpp,该程序将字符串a的值复制给字符串b。
请改正其中的错误。
该源程序内容如下:
#include
#include
intmain(void)
{
char*a="Youareagreatboy";
char*b="";
printf("复制前,字符串a:
%s,字符串b:
%s\n",a,b);
strcpy(b,a);
printf("复制后,字符串a:
%s,字符串b:
%s\n",a,b);
return0;
}
四、编程题
1、打开C:
\CAADATA\38中的源程序文件pg106.cpp,补充程序使得程序运行时完成以下功能:
从键盘输入3个数,并按由大到小的顺序输出。
并以原文件名保存(不得删除原文件中的注释内容,否则该题不计分)。
(10分)
2、打开C:
\CAADATA\39中的源程序文件pg207.cpp,补充程序并以原文件名保存(不得删除原文件中的注释内容,否则该题不计分),使得程序运行时完成以下功能:
编写程序找出3×3矩阵中的最大元素及其行列位置并输出。
(12分)
3、打开C:
\CAADATA\40中的源程序文件pg307.cpp,按要求补充程序并以原文件名保存(不得删除原文件中的注释内容,否则该题不计分),要求为:
编写判断一个年份是否为闰年的函数leapyear(),并在主函数调用该函数输出1900~2100年之间的所有闰年。
闰年的条件是:
能被4整除但不能被100整除,或者能被400整除。
(18分)
C语言程序设计模拟题参考答案(09级)
一、单选题:
题号
1
2
3
4
5
6
7
8
9
10
答案
B
A
D
B
C
D
D
B
D
B
题号
11
12
13
14
15
XX文库-让每个人平等地提升自我16
17
18
19
20
答案
B
B
C
B
A
A
A
C
B
A
题号
21
22
23
24
25
26
27
28
29
30
答案
C
B
A
B
B
C
A
B
B
A
二、填空题:
1、答案:
i++
或:
i=i+1
或:
++i
或:
i+=1
或:
i++;
或:
i=i+1;
或:
++i;
或:
i+=1;
2、答案:
max<*q
或:
max<=*q
或:
*q>max
或:
*q>=max
3、答案:
fp=fopen
4、答案:
p或:
p<=stu+5
5、答案:
i或:
i或:
i或:
b[i]!
='\0'
或:
b[i]!
=0
注意:
以上答案只需填一个,多填会被自动评卷系统扣分
三、程序改错题:
1、参考答案:
#include
voidmain(void)
{
intcount,grades;
printf("请输入分数:
\n");
scanf("%d",&grades);
count=0;//添加本句
while(grades>=0)
{
if(grades>=60)count++;
scanf("%d",&grades);//添加本句
}
printf("共有%d个学生成绩合格!
\n",count);
}
2、参考答案:
#include
voidmain()
{
charch;
printf("pleaseinputacharacter!
");
ch=getchar();
if(ch>='a'&&ch<='z')//加上括号
printf("thisisalowercase\n");
elseif(ch>='A'&&ch<='Z')//加上括号
printf("thisisauppercase\n");
elseif(ch>='0'&&ch<='9')//加上括号
printf("thisisanumber\n");
else
printf("thisisaothercharacter\n");
}
3、参考答案:
#include
voidmain(void)
{
inta[6],i;//增加变量i定义,修改数组长度为6
printf("请输入5个整数:
");
for(i=1;i<=5;i++)
scanf("%d",&a[i]);
printf("这5个数为:
");
for(i=1;i<=5;i++)
printf("%4d",a[i]);
printf("\n");
}
4、参考答案:
#include
floatadd(floatx,floaty)//将add函数定义提前到调用add之前
{
floatz;
z=x+y;
returnz;
}
voidmain()
{
floata,b,c;
printf("请输入两个数,中间用逗号隔开:
");
scanf("%f,%f",&a,&b);
c=add(a,b);
printf("两个数之和为:
%f\n",c);
}
5、参考答案:
#include
#include
intmain(void)
{
char*a="Youareagreatboy";
charb[20]="";//定义数组b
printf("复制前,字符串a:
%s,字符串b:
%s\n",a,b);
strcpy(b,a);//参数b必须是数组
printf("复制后,字符串a:
%s,字符串b:
%s\n",a,b);
return0;
}
四、编程题:
1、pg106.cpp
参考程序:
#include
voidmain()
{inta,b,c,temp;
scanf(“%d,%d,%d”,&a,&b,&c);
if(a
{temp=a;a=b;b=temp;}
if(a{temp=a;a=c;c=temp;}
if(b{temp=b;b=c;c=temp;}
printf(“%d,%d,%d\n”,a,b,c);
}
2、pg307.cpp
可在主函数中将二维数组的9个元素初始化为以下值:
864
219
753
参考程序:
#include
voidmain()
{inta[3][3]={{8,6,4},{2,1,9},{7,5,3}};
inti,j,row,colum,max;
max=a[0][0];
row=colum=0;
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
if(a[i][j]>max)
{max=a[i][j];
row=i;
colum=j;
}
printf("max=%d,row=%d,colum=%d\n",max,row,colum);
}
3、pg307.cpp
参考程序:
#include
main()
{intleapyear(intyear);
intyear;
printf(“1900~2100年之间的所有闰年是:
\n”);
for(year=1900;year<2100;year++)
if(leapyear(year)==1)printf(“%8d”,year);
}
intleapyear(intyear)
{intleap;
if(year%4==0)
{if(year%100==0)
{if(year%400==0)leap=1;
elseleap=0;
}
elseleap