if(y<0)z=0;
elsez=z+1;
printf(“%d\n”,z);
}
A)3B)2C)1D)0
(5).设inta=9,b=20;则printf(″%d,%d\n″,a--,--b);的输出结果是(C)
,,20
,,20
(6)有以下程序
#include""
main()
{inti,j,m=1;
for(i=1;i<3;i++)
{for(j=3;j>0;j--)
{if((i*j)>3)break;
m*=i*j;
}
}
printf("m=%d\n",m);
}
程序运行后的输出结果是A
A)m=6
B)m=2
C)m=4
D)m=5
(7)有以下程序D
#include""
main()
{inta=1;intb=2;
for(;a<8;a++){b+=a;a+=2;}
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是
A)9,18
B)8,11
C)7,11
D)10,14
(8)以下关于return语句的叙述中正确的是b
A)一个自定义函数中必须有一条return语句
B)一个自定义函数中可以根据不同情况设置多条return语句
C)定义成void类型的函数中可以有带返回值的return语句
D)没有return语句的自定义函数在执行结束时不能返回到调用处
(9)下列选项中,能正确定义数组的语句是D
A)intnum[0..2008];
B)intnum[];
C)intN=2008;
intnum[N];
D)#defineN2008
intnum[N];
(10).有以下程序段
inta[10]={1,2,3,4,5,6,7,8,9,10},*p,b;
p=&a[3];
b=p[5];
b中的值是(D)
B.6
(11)有以下程序
#include""
main()
{inta[5]={1,2,3,4,5},b[5]={0,2,1,3,0},i,s=0;
for(i=0;i<5;i++)s=s+a[b[i]];
printf("%d\n",s);
}
程序运行后的输出结果是c
A)6
B)10
C)11
D)15
(12)有以下程序
#include""
#defineSUB(a)(a)-(a)
main()
{inta=2,b=3,c=5,d;
d=SUB(a+b)*c;
printf("%d\n",d);
}
程序运行后的输出结果是C
A)0
B)-12
C)-20
D)10
(13)有以下程序
#include""
main()
{inta=2,b=2,c=2;
printf("%d\n",a/b&c);
}
程序运行后的输出结果是a
A)0
B)1
C)2
D)3
(14)下面程序段的运行结果是(A)
#include<>
main()
{inta=1;intb=2;intc=2;intt;
while(a
{t=a;a=b;b=t;c--;
}
printf("%d,%d,%d",a,b,c);
}
A)1,2,0B)2,1,0C)1,2,1D)2,1,1
(15)有以下程序
#include""
main()
{ int c=0,k;
for(k=1;k<3;k++)
switch(k)
{ default:
c+=k;
case 2:
c++;break;
case 4:
c+=2;break;
}
printf("%d\n",c);
}
程序运行后的输出结果是A
A)3
B)5
C)7
D)9
二填空题(本题共4小题,满分20分)
1.(4分)以下程序运行结果是:
X=8
#include<>
main()
{
inti,j,X=0;
for(i=0;i<2;i++)
{
X++;
for(j=0;j<3;j++)
{
if(j%2)continue;
X++;
}
X++;
}
printf("X=%d\n",X);
}
2.(4分)以下程序运行结果是:
x=10
0
1
2
3
#include<>
voidfun1(intx)
{
x=20;
}
voidfun2(intb[4])
{
intj;
for(j=0;j<4;j++)
{
b[j]=j;
}
}
main()
{
intx=10;
inta[4]={1,2,3,4},k;
fun1(x);
printf("x=%d\n",x);
fun2(a);
for(k=0;k<4;k++)
{
printf("%d\n",a[k]);
}
}
3.(4分)↙
则程序运行结果是:
66
#include<>
main()
{
intx,y;
scanf("%2d%*4s%2d",&x,&y);
printf("%d",y-x);
}
4.(8分)以下程序的功能是输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形。
例如,输入整数5时(注意:
n不得大于10),程序运行结果如下:
ABCDE
FGHI
JKL
MN
O
请填空完成该程序。
#include<>
intmain()
{
inti,j,n;charch='A';
scanf("%d",&n);
if(n<11)
{for(i=1;i<=n;i++)
{for(j=1;j<=n-i+1;j++)
{printf("%2c",ch);
ch++;
}
printf("\n");
}
}
elseprintf("nistoolarge!
\n");
printf("\n");
return0;}
三:
判断题(本题共10小题,满分20分)
是结束本次循环,而continue是结束所有的循环×
2.在C语言中,变量不区分大小写×
3.不同的函数中可以使用相同的变量名。
(√)
4.形式参数是局部变量。
(√ )
5.若用数组名作为函数的实参,传递给形参的是数组第一个元素的值。
(×)
语言是低级语言×
语言中,每个函数都必须要有一个且只有一个main函数×
语言中,整形常数表示的方法有3种√
9.对于开辟一个静态变量,我们没有必要对它进行初始化×
10.假定x和y为double型,则表达式x=2,y=x+3/2的值是3×
四(本题共2小题,满分30分)
编程题
1.规定一个工人工作时间每个月160小时,每小时工资为5元,如果加班的话,每小时增加4元,请编程计算并打印此工人一个月的工资,要求由键盘输入工作时间(14分)。
参考答案:
入20个学生的成绩,求出其中大于平均成绩学生的人数,并对20名学生成绩按从高到低进行排序。
.1f.1f5C以下语句:
intb;charc[10];则正确的输入c数组的语句是
A)scanf("%d%s",&b,&c);
B)scanf("%d%s",&b,c);
C)scanf("%d%s",b,c);
D)scanf("%d%s",b,&c);
(B正确)
4.若变量c为char类型,能正确判断出c为小写字母的表达式是
A)'a'<=c<='z'
B)(c>='a')||(c<='z')
C)('a'<=c)and('z'>=c)
D)(c>='a')&&(c<='z')
(D正确)
5.凡是在函数中未指定存储类别的变量,其隐含的存储类别是
A)自动
B)静态
C)外部
D)寄存器
(A正确)
6.若要求从键盘读入含有空格字符的字符串,应使用函数
A)gets()
B)scanf()
C)getchar()
D)getch()
(A正确)
7.若有定义:
intaa[8];则以下表达式中不能代表数组元素aa[1]的地址的是
A)&aa[0]+1
B)&aa[1]
C)&aa[0]++
D)aa+1
(C正确)
8.若有以下的定义:
intt[3][2];则t数组最后一个元素是
A)&t[3][2]
B)t[3][2]
C)t[2]
D)t[2][1]
(D正确)
9.若有定义:
intx,*pb;以下正确的赋值表达式是
A)pb=&x
B)pb=x
C)*pb=&x
D)*pb=*x
(A正确)
10、若c,c1,c2均为字符型变量,下列语句执行后。
c='a';
c1=++c;
c2=c++;
c1,c2的值分别为
A)c1='b',c2='c'B)c1='a',c2='c'C)c1='b',c2='b'D)c1='a',c2='b'
(结果为C)
11.有如下语句
intx,y;
scanf("%d,%d",&x,&y);
若使变量x得到数值11,变量y得到数值12,下面四组输入形式中,正确的是
A)1112<回车>
B)11<回车>12<回车>
C)11,<回车>12<回车>
D)11,12<回车>
(D正确)
12、有如下程序段
inta=14,b=15,x;
charc='A';
x=(a&&b)&&(c<'B');
执行该程序段后,x的值为
A)ture
B)false
C)0
D)1
(D正确)
13、下列运算符中优先级最高的运算符是
A)!
B)%
C)-=
D)&&
(A正确)
14、在以下程序段中,输出值为
#defineP(x)3*x*x
printf("%d",P(2+3));
A)75
B)15
C)5
D)3
(B正确)
15、printf("%d,%d,%d,%d",6>5,6&&5,6||5,6<5);输出运行结果是
A)1,1,1,1
B)0,1,1,0
C)1,0,1,0
D)1,1,1,0
(D正确)
二、判断(本题共10小题,满分20分)。
1、charnn[][4]={‘abc’,’2’};×
2、在C语言中,如果想表示反斜杠符时要用到两个反斜杠。
√
3、判断字符串str1是否与字符串str2相等,应使用if((str1,str2)==0))。
×
4、设有数组定义:
chararray[]="China";则数组array实际所占的空间为5个字节。
×
5、可以对整型数组进行整体输入、输出。
×
6、在C语言中,引用数组元素时,其数组下标的数据类型允许是整型常量或整型表达式√
7、用户定义的标识符中,大小写字母代表相同标识。
×
8、用数组名作为函数实参,其本质是通过实参数组名把实参数组的首地址传送给形参数组名;这样,两个数组共同占用一段内存空间。
√
9、在作用域内,全局变量和局部变量有重名现象。
若重名,则全局变量将被屏蔽而不起作用.√
10、gets()、puts()一次只能输入、输出一个字符串;scanf()、printf()可以输入、输出几个字符串。
√
三、填空(本题共5小题,满分20分)。
1、下列程序的运行结果是____________
#include<>
intmain(void)
{intn=0;
while(n++<=1)
printf(“%d\t”,n);
printf(“%d\n”,n);
return0;
}
答案:
123
2、下列程序的运行结果是____________
#include<>
intm=13;
intfun(intx,inty)
{intm=3;return(x*y-m);}
intmain(void)
{inta=7,b=5;
printf("%d\n",fun(a,b)/m);
}
答案:
2
3、下列程序的运行结果是____________
#include<>
intmain(void)
{intx,y,z;
x=y=z=0;
++x||++y&&++z;
printf(“x=%d\ty=%d\tz=%d\n”,x,y,z);
x=y=z=-1;
++x&&++y||++z;
printf(“x=%d\ty=%d\tz=%d\n”,x,y,z);
return0;
}
答案:
x=1y=0z=0
x=0y=-1z=0
4、运行程序时,输入howdoyoudo程序输出结果是___________________
#include<>
intmain(void)
{chars[20],s1[20];
scanf("%s",s);
printf("%s\n",s);
scanf("%s%s",s,s1);
printf("s=%s,sl=%s",s,s1);
puts("\n");
gets(s);
puts(s);
}
答案:
howdoyoudo
how
s=do,s1=you
do
5、以下程序为求2个数中较大者。
其中①_____________;②______________。
#include<>
intmain(void)
{intmax(intx,inty);
inta,b,c;
scanf("%d%d",&a,&b);
c=①_____________;
printf("max=%d\n",c);
}
intmax(intx,inty)
{intz;
if(x>y)z=x;
elsez=y;
②______________;
}
答案:
①max(a,b);②return(z);
三、编程(本题共2小题,满分30分)。
1、求10~50之间被3整除的数及其和。
#include<>
intmain()
{
inti,sum=0;
for(i=10;i<=50;i++)
if(i%3==0)
{
sum=sum+i;
printf("%3d",i);
}
printf("\n10-50之间被3整除的数的和是%d\n",sum);
}
2、随机生成10个100~200之间整数,采用数组的方法将数据按降序排列。
#include<>
#include<>
intmain()
{
inta[10],i,j,t;
for(i=0;i<10;i++)
a[i]=rand()%101+100;
for(i=0;i<=8;i++)
for(j=0;j<=8-i;j++)
if(a[j]{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0;i<10;i++)
printf("%4d",a[i]);
}
(3)一、本题共15小题,满分30分(每小题2分)。
1、以下合法的赋值语句是_B_
A)x=y=100B)d--;C)x+y;D)c=int(a+B);
2、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是_C_
A)INPUTx、y、z;B)scanf(“%d%d%d”,x,y,z);
C)scanf(“%d%d%d”,&x,&y,&z);D)read(“%d%d%d”,&x,&y,&z);
3、下面标识符中,不合法的用户标识符为D。
A)PkdB)k_90C)_924D)k#b
4、下面不是字符串常量的是A。
A)‘abc’B)“12’12”C)”0”D)“”
5、下面不属于C语言的数据类型是_C_。
A)整型B)实型C)逻辑型D)双精度实型
6、若定义:
inta=7;floatx=,y=;则表达式x+a%3*(int)(x+y)%2/4的值是B。
A)7B)2.50000C)
7、设有以下定义:
#defineg2
inta=0;doubleb=;charq=’A’;
则下面语句中错误的是D。
A)a++;B)b++;C)q++;D)g++;
8、设有程序段:
intk=10;while(k==0)k=k-1;则下面描述中正确的是C。
A)while循环执行10次B)循环是无限循环
C)循环语句一次也不执行D)循环体语句执行一次
9、假定a和b为int型变量,则执行以下语句后b的值为_D_
a=1;
b=10;
do{
b-=a;
a++;
}while(b--<0);
A)9B)-2C)-1D)8
10、设j为int型变量,则下面for循环语句的执行结果是_B_
for(j=10;j>3;j--)
{
if(j%3)
j--;
--j;
--j;
printf("%d",j);
}
A)63B)74C)62D)73
11、以下只有在使用时才为该类型变量分配内存的存储类说明是_B_
A)auto和staticB)auto和register
C)register和staticD)extern和register
12、有如下程序
#include<>
intfunc(intk,intq)
{return(k+q);}
voidmain()
{intx=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d\n",r);
}
该程序的输出的结果是_D_
A)12B)13C)14D)15
13、在定义inta[10];之后,对a的引用正确的是C。
A)a[10]B)a[]C)a[10-10]D)a(6)
14、为了判断两个字符串s1和s2是否相等,应当使用D。
A)if(s1==s2)
B)if(s1=s2)
C)if(strcpy(s1,s2))
D)if(strcmp(s1,s2)==0)
15、若有如下定义语句:
inta[10]={1,2,3,4,5,6,7,8,9,10};
则对数组正确的引用是_B_。
A)a[10]B)a[a[4]+4]C)a[a[9]]D)a[a[3]5]
得分
评卷人
二、本题共10小题,满分20分(每小题2分)。
1、C语句末尾必须有分号。
√
2、不同的函数中可以使用相同的变量名。
√
3、运算符“%”只能用于整数运算。
×
4、乘除运算符优先级高于加减运算符。
√
5、C语句前面必须有行号。
×
6、C程序中每行只能写一条语句。
×
7、C语言本身没有输入输出语句。
√
8、注释必须跟在一行语句的后面。
×
9、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。
×
10、在C程序中,main函数必须位于子程序的最前面。
×
得分
评卷人
三、本题共4小题,满分20分(每空4分)。
1、下面程序的运行结果是x=__,y=_4_。
voidmain()
{floatx=;inty;
y=(int)x;
printf("x=%f,y=%d",x,y);}
2、有如下程序
voidmain()
{floatx=,y;
if(xelseif(xelsey=;
printf(“%f\n”,y);
}
该程序的输出结果是___
3、下面程序段功能从键盘输入两个数并将较大者输出。
voidmain()
{
floata,b,max;
printf("input2realsplease:
");
scanf("%f%f",&a,&b);
__max=a>ba:
b;__________
printf("Themaxis%f\n",max);
}
4、以下程序的输出结果是__15_
#include<>
intf()
{staticinti=0;
ints=1;
s+=i;i++;
returns;
}
voidmain()
{inti,q=0;
for(i=0;i<5;i++)q+=f();
printf("%d\n",q);
}
四、本题共2小题,满分30分。
1、编写程序,求1!
+2!
+3!
+……+n!
。
n从键盘输入。
#include<>
intmain()
{
intsum=0,p=1,i,n;
printf("请输入一个整数");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
p=p*i;
sum=sum+p;
}
printf("%d的阶乘和是%d",n,sum);
}
2、请编写C程序求出二维数组中,主对角线上的所有奇数,表格中用灰色底纹标记的区域为主对角线。
11
6
4
7
3
6
3
5
6
1
7
9
9
2
3
4
#include<>
intmain()
{
inti,j;
inta[4][4]={{11,6,4,7},{3,6,3,5},{6,1,7,9},{9,2,3,4}};
for(i=0;i<=3;i++)
for(j=0;j<=3;j++)
if(i==j&&a[i][j]%2!
=0)
printf("%2d",a[i][j]);
}