2011年全国计算机等级二级C语言模拟试题及答案(13)
一、单项选择题。(每题1分,共20分)
1. C程序的基本单位是:( )
A.子程序
B.程序
C.子过程
D.函数
2.在C语言中,非法的八进制是:( )
A.016
B.018
C.017
D.02
3. 不是C语言实型常量的是:( )
A.55.0
B.0.0
C.55.5
D.55e2.5
4 .字符串“xyzw”在内存中占用的字节数是:( )
A.6
B.5
C.4
D.3
5. 若已定义f,g为double类型,则表达式:f=1,g=f+5/4的值是:( )
A.2.0
B.2.25
C.2.1
D.1.5
6. 若有语句char c1=`d`,c2=`g`;printf(“%c,%d\n”,c2-`a`,c2-c1);则输出结果为:( )
(a的ASCII码值为97)
A.M,2
B.G,3
C.G,2
D.D,g
7. 使用语句scanf(“a=%f,b=%d”,&a,&b);输入数据时,正确的数据输入是:( )
A.a=2.2,b=3
B.a=2.2 b=3
C.2.2 3
D.2.2,3
8.表示关系12<=x<=y的C语言表达式为:( )
A.(12<=x)&(x<=y)
B. (12<=x)&&(x<=y)
C. (12<=x)|(x<=y)
D.(12<=x)||(x<=y)
9.设x=1,y=2,m=4,n=3,则表达式x>y?x:m
B.3
C.2
D.4
10. 若有说明和语句:int a=5,b=6;b*=a+1;则b的值为:( )
A.5
B.6
C.31
D.36
11. 设整型变量s,t,c1,c2,c3,c4的值均为2,则执行语句(s=c1==c2)||(t=c3>c4)后,s,t的值为:( )
A.1,2
B.1,1
C.0,1
D.1,0
12. 语句for(a=0,b=0;b!=100&&a<5;a++)scanf(“%d”,&b); scanf最多可执行次数为:( )
A.4
B.6
C.5
D.1
13. 对于for(s=2; ;s++)可以理解为:( )
A. for(s=2;0 ;s++)
B. for(s=2;1 ;s++)
C. for(s=2;s<2 ;s++)
D. for(s=2;s>2;s++)
14. 若有char h=`a`,g=`f`;int a[6]={1,2,3,4,5,6};则数值为4的表达式为:( )
A.a[g-h]
B.a[4]
C.a[`d`-`h`]
D.a[`h`-`c`]
15. 设:char s[10]={“october”};则printf(“%d\n”,strlen(s));输出是:( )
A.7
B.8
C.10
D.11
16. 若有int a[3][5]={2,2},{2,6},{2,6,2}},则数组a共有个元素:( )
A.8
B.5
C.3
D.15
17. 设int a=5,b,*p=&a,则使b不等于5的语句为: ( )
A.b=*&a
B.b=*a
C.b=*p
D.b=a
18. 若有int a[7]={1,2,3,4,5,6,7},*p=a则不能表示数组元素的表达式是: ( )
A.*p
B.*a
C.a[7]
D.a[p-a]
19. 若有int b[4]={0,1,2,3},*p则数值不为3的表达式是: ( )
A.p=s+2,*(p++)
B.p=s+3,*p++
C. p=s+2,*( ++p)
D.s[3]
20.设有如下定义:struct jan{int a;float b;}c2,*p;若有p=&c2;则对c2中的成员a的正确引用是:( )
A.(*p).c2.a
B.(*p).a
C.p->c2.a
D. p.c2.a
二、填空题。(每空1分,共15分)
1.C语言标识符由 _________、__________和___________来构造。
2.在C语言中,字符串常量是用__________一串字符。
3.若有说明和语句:int a=25,b=60;b=++a;则b的值是__________ 。
4.若int x=5;while(x>0)printf(“%d”,x--);的循环执行次数为__________。
5.若有int a[5],*p=a;则p+2表示第__________ 个元素的地址。
6.若有说明和语句:int a=5,b=6,y=6;b-=a;y=a++则b和y的值分别是__________、__________。
7.已知整型变量a=3,b=4,c=5,写出逻辑表达式a||b+c>c&&b-c的值是__________。
8.C程序设计的三种基本结构是 ________、________和________。
9.数组是表示类型相同的数据,而结构体则是若干__________数据项的集合。
10.C语言中文件是指__________ 。
三、将下列程序补充完整。(每空2.5分,共30分)
1.输入三角形的三条边a,b,c,求三角形的面积。
#include “math.h”
#include “stdio.h”
main( )
{float a,b,c,d,t,s;
printf(“请输入三角形的三条边:”);
scanf(“%f,%f,%f”,&a,&b,&c);
if (1)
printf(“%f%f%f不能构成三角形!”, a,b,c);
else {t=(a+b+c)/2;
s= (2)
printf(“a=%7.2f,b=%7.2f,c=%7.2f,area=%7.2f\n”, a,b,c,s);}}
(1) __________
(2) __________
2.输入两个整数,n1,n2(要求n1
main()
{int n1,n2,j,n=0;
printf(“\n请输入两个数:”);
scanf ( (3) );
if(n1>n2){ (4) }
for(j=n1;j<=n2,j++)
if (5) n++;
printf(“a=],b=],n=]\n”n1,n2,n);}
(3) __________
(4) __________
(5) __________
3.输入两个整数,n1,n2(要求n1
#include “stdio.h”
int prime (int x)
{int k;
for (6)
if (x%k==0) return(0);
return(1)}
main()
{int a,b,j,n=0;
printf(“\n请输入两个数:”);
scanf(“%d,%d”,&a,&b);
if(a>b){ (7) }
for(j=a;j<=b,j++)
if( (8) ) n++;
printf(“a=M,b=M,n=M\n”a,b,n);}
(6)__________
(7)__________
(8) __________
4.编写程序,输入n个整数(n由键盘输入),统计其中正数、负数和零的个数。
#include “stdio.h”
main( )
{int x,n,k,k1=0,k2=0,k3=0;
printf(“input n=:”);
(9)
for(k=0;k
if (x<0)k1++;
(10) ;
else k3++;
printf(“k1=M,k2=M,k3=M\n”,k1,k2,k3)}}
(9)__________
(10) __________
5.设计一个程序完成以下功能:若从键盘输入英文字母,则原样输出;输入其他字符不理会,直到输入Q键结束.]
#include “stdio.h”
main( )
{char ch;
do{ch=getchar();
if ( (11) )break;
else if( (12) )putchar(ch);
}while(1);}
(11)__________
(12) __________
四、按格式写出程序运行结果。每题4分,共16分。
1.格式化输出函数]
main()
{ int a=1,c=65,d=97;
printf(“a10=%d,a8=%o,a16=%x\n”,a,a,a);
printf(“c10=%d,c8=%o,c16=%x,cc=%c\n”c,c,c,c);
d++;
printf(“d10=%d,dc=%c\n”d,d);}
输出结果:
2. 循环结构
main()
{ int y=9,k=1;
for(;y>0;y--)
{if(y%3==0){printf(“M”--y);continue;}
k++;}
printf(“\nk=M,y=M\n”,k,y);}
输出结果:
3.数组
#include “stdio.h”
main( )
{int k,j;
in ta[]={3,-5,18,27,37,23,69,82,52,-15};
for(k=0,j=k;k<10;k++)
if(a[k]>a[j])j=k;
printf(“m=%d,j=%d\n”,a[j],j);}
输出结果为:
4.字符输出
main( )
{char *p,s[]=“ABCD”;
for ( p=s;p printf(“%s\n”,p);}
输出结果:
五、按题目要求写出可运行程序:(19分)
1.求元素个数为10的一维数组元素中的最大值和最小值。
2.将矩阵 9 7 5 倒置为 9 3 4
3 1 2 7 1 6
4 6 8 5 2 8
3.编写函数:输入两个正整数m,n,求它们的最大公约数和最小公倍数。
编写程序如下:
参考答案
一、单项选择题:
1.D 2.B 3.D 4.B 5.B
6.B 7.A 8.B 9.B 10.C
11.A 12.C 13.B 14.C 15.A
16.D 17.B 18.C 19.A 20.B
二、填空题:
1.字母、数字和下划线 2.双引号 3.26
4.5 5.三(3) 6.1,20
7.1 8.顺序结构、选择结构、循环结构 9.类型不同
10.存储在外部介质上的相关数据集合。
三、将下列程序补充完整。
1.(1)((a+b
4.(9)scanf(“%s”,&n)(10)else if (x==0)
5.(11)ch==`Q`||==`q`(12)ch>=`A`&&ch<=`Z`||ch>=`a`&&ch<=`z`
四、按格式写出程序运行结果。
1.a10=1,a8=1,a16=1
c10=65,c8=101,c16=41,cc=A
d10=98,dc=b
2.8 5 2
k=4 y=0
3.m=82,j=7
4.ABCD
BCD
CD
D
五、按题目要求写出可运行程序。
1.#include “stdio.h”
main()
{ int term[10];
int i,max,min;
printf(“请输入10个整数:”);
for(i=0;i<10;i++)
scanf(“%d”,&term[i]);
(max=term[0];
min=term[0];
for(i=0;i<10;i++)
{if(term[i]
printf(“max=%d,min=%d”,max,min);}
2. main()
int j,k,x;
int a[][3]={9,7,5,3,1,2,4,6,8};
for(j=0;j<3;j++)
for(k=j+1,k<3;k++)
{x=a[j][k];a[j][k]=a[k][j];a[k][j]=x;}
for(j=0;j<3;j++)
{for(k=0,k<3;k++)
printf(“M”,a[j][k]);}}
3.#include “stdio.h”
int gcd(int m,int,n)
{if(n==0)return(m);
else return(gcd(n,m%n));
int tim(int m,int,n)
return(m*n/gcd(m,n));}
main()
{int m,n,g,t;
printf(“enter two number please:”);
scanf(“%d,%d”,&m,&n);
g=gcd(m,n);t=tim(m,n);
printf(“gcd(m,n)=%d\n”,g);
printf(“tim(m,n)=%d\n”,t);}
编辑特别推荐:
2011年计算机等级二级C语言课后练习题及答案解析汇总
2011年全国计算机等级二级C笔试考前练习习题汇总
2011年计算机等级考试二级C语言基础教程汇总
2011年计算机等级考试二级C语言辅导笔记汇总
2011年计算机等级考试二级C语言入门教程汇总