)
①x=4||x=5||x=6②33&&x<7④!
(x<=3)&&!
(x>=7)
18正确的标识符是(①)
①x_2②x·1③x=2④?
x
19以下叙述不正确的是D。
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面
20以下正确的函数定义形式是(②)
①doublefun(intx;inty)②doublefun(intx,inty)
③doublefun(intx,y)④doublefun(x,inty)
21若x,i,j和k都是int型变量,则计算下面表达式后,x的值为 C 。
x=(i=4,j=16,k=32)
A)4 B)16 C)32 D)52
22在C语言中,char型数据在内存中的存储形式是 D 。
A)补码 B)反码 C)原码 D)ASCII码
23若有说明:
intx,y=5,*p=&y,则与*&x=*p;等价的语句是(①)
①x=y②y=*p③x=&y④y=&x
24已知学生记录描述为
structstudent
{intno;struct{intyear;intmonth;intday;}birth;}s;
设变量S中的“生日”应是“1984年11月11日”,下列对“生日”的正确赋值方式是(①)
1s·birth·year=1984;②birth·year=1984;
s·birth·month=11;birth·month=11;
s·birth·day=11;birth·day=11;
③s·year=1984;④year=1984;
s·month=11;month=11;
s·day=11;day=11;
25根据题目中给出的数据输入和输出形式,程序中输入输出语句的正确内容是B。
main()
{intx;floaty;
printf(“enterx,y:
”)
输入语句
输出语句
}
输入形式enterx,y:
2,3.4
输出形式x+y=5.40
A)scanf(“%d%f”,&x,&y);
printf(“\nx+y=%4.2f”,x+y)
B)scanf(“%d,%f”,&x,&y);
printf(“\nx+y=%4.2f”,x+y)
C)scanf(“%d,%f”,x,y);
printf(“\nx+y=%6.1f”,x+y)
D)scanf(“%d%3.1f”,&x,&y);
printf(“\nx+y=%4.2f”,x+y);
26在C语言中,合法的长整型常数是(④)
①1297560②0.05678③2.1869e10④0L
27设x为5,执行下列语句后,y的值不为2的是(③)
①y=x/2②y=6-(--x)③y=x%2④y=x>3?
2:
2
28.设有程序段
intk=10;
while(k=0)k=k-1;
则下面描述中正确的是C。
A)while循环执行10次
B)循环是无限循环
C)循环体语句一次也不执行
D)循环体语句执行一次
29.C语言中while和do-while循环的主要区别是A。
A)do-while的循环体至少无条件执行一次
B)while的循环控制条件比do-while的循环控制条件严格
C)do-while允许从外部转到循环体内
D)do-while的循环体不能是复合语句
30若有说明:
inta[10];则对a数组元素的正确引用是D。
A)a[10]B)a[3.5]C)a(5)D)a[10-10]
31以下不能对二维数组a进行正确初始化的语句是A。
A)inta[2][3]=0
B)inta[2][3]={{1,2},{0}}
C)inta[2][3]={{1,2,3},{4,5,6}};
D)inta[][3]={1,2,3,4,5,6};
32下面函数调用语句含有实参的个数为(③)
func((exp1,exp2),(exp3,exp4,exp5));
①1②4③2④5
33设x为5,执行下列语句后,y的值不为2的是___C________
A)y=x/2B)y=6-(--x)C)y=x%2D)y=x>3?
2:
2
34C语言允许函数不返回值,此时该函数的类型是B。
A)float型
B)void型
C)long型
D)double型
27.若用数组名作为函数调用的实参,传递给形参的是A。
A)数组的首地址
B)数组第一个元素的值
C)数组中全部元素的值
D)数组元素的个数
35以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是B。
main()
{int*p,*q,a,b;
p=&a;
printf(“inputa:
”);
scanf(“%d”,*p);
······
}
A)*p表示的是指针变量P的地址
B)*p表示的是变量a的值,而不是变量a的地址
C)*P表示的指针变量p的值
D)*p只能用来说明p是一个指针变量
36变量的指针,其含义是指该变量的B。
A)值B)地址C)名D)一个标志
37若有以下定义,则对a数组元素地址的正确引用是D。
inta[5],*p=a;
A)p+5B)*a+1C)&a+1D)&a[0]
38字符串“ABC”在内存占用的字节数是(④)
①3②8③6④4
39若有以下定义:
charx,inty,floatt,doublev,则表达式x*y+t—v值的类型为(②)
①char②double③int④float
40若有以下的定义,则值为4的表达式是(②)
inta[]={1,2,3,4,5,6},*p=a;
①p+=2,*(p++)②p+=3,*p++③p+=4,*p++④p+=3,*++p
二、填空题:
1在Microsoftc++环境中运行一个C程序时,所运行的程序的后缀是______。
答案:
.exe
2C语言源程序文件的后缀是_____,经过编译后,生成文件的后缀是_____,经过连接后,生成文件的后缀是_____。
答案:
.c.obj.exe
3结构化程序由_____、_____、_____三种基本结构组成。
答案:
顺序、选择、循环
4若k为int整型变量且赋值11。
请写出运算k++后表达式的值A)_____和变量的值B)_____。
答案:
11、12
5函数体由符号____开始,用符号____结束。
函数体的前面是____部分,其后是____部分。
答案:
{、}、定义、执行
6在C语言程序中,用关键字____定义基本整型量,用关键字____定义单精度实型变量,用关键字___定义双精度实型变量。
答案:
int、float、double
7把a1、a2定义成单精度实型变量,并赋初值1的定义语句是____。
答案:
floata1=1.0,a2=1.0;
8表达式3.5+1/2的计算结果是____。
答案:
3.5
9表达式s=10应当读做“____”。
答案:
将10赋给变量s
10计算机中内存储器的最小存储单位称____,其中能容纳的数是____。
答案:
位、0或1
11在C语言中整数可用____进制数、____进制数和____进制数三种数制表示。
答案:
十、八、十六
12复合语句在语法上被认为是____。
空语句的形式是____。
答案:
一条语句、;13C语句的最后用____结束。
答案:
;
14以下程序段的输出结果是____。
15C语言中用____表示逻辑值“真”,用____表示逻辑值“假”。
答案:
非0、0
16将下列数学式改写成C语言的关系表达式或逻辑表达式A)____B)____。
A)a=b或a4答案:
A)a==b||a4||x<-4
17请写出以下程序的输出结果____。
main()
{inta=100;
if(a>100)printf("%d\n",a>100);
elseprintf("%d\n",a<=100);
}
答案:
1
18请写出与以下表达式等价的表达式A)____B)____。
A)!
(x>0)B)!
0答案:
A)x<=0B)1
19当a=1,b=2,c=3时,以下if语句执行后,a、b、c中的值分别为____、____、____。
if(a>c)b=a;a=c;c=b;
答案:
3、2、2
20以下程序段的输出结果是____。
intk,n,m;n=10;m=1;k=1;while(k<=n)m*=2;printf("%d\n",m);
答案:
死循环
21一个C源程序至少包含一个_main_函数。
C程序是由_函数_构成。
22在一个C源程序中,注释部分两侧的分界符分别为_/*__和_*/_。
23请写出数学式“
”的C语言表达式a/b/c。
24*后跟指针变量名,表示该指针变量_指向的变量__。
25函数中的形参和调用时的实参都是数组名时,传递方式为_地址_传递方式。
26设inta[20],*p=a;则对a[5]的引用可以是p[5]。
27C语言中的标识符只能由三种字符组成,它们是字母、数字和下划线_。
28请写出数学式
的C语言表达式(a+b)/(c+d)。
29设有char*a=”ABCD”,则printf(“%s”,a)的输出是ABCD;
30若已知a=10,b=20,则表达式!
a
31设a=2,c=‘a’,f=3.0,下列表达式的值为_1__
f==3.0?
a<=c:
a>=c
32设x和y均为int型变量,且x=1,y=2,则表达式1.0+x/y的值为__1.0_。
33若自定义函数要求不返回一个值,则在该函数说明时加一个类型说明符_void。
34在内存中存储“A”要占用_2_个字节,存储‘A’要占用_1个字节。
35若x和a均为int型变量,则计算表达式
(1)后的x值为_4_,计算表达式
(2)后的x值为_12_。
(1)x=a=4,6*2
(2)x=(a=4,6*2)
三、阅读程序,写出运行结果
1、main()
{inta1,a2;
inti=5,j=7,k=0;
a1=k&&j;
a2=a1||j;printf(“a1=%d\na2=%d\n”,a1,a2);}
结果:
a1=0
a2=1
2、main()
{inti,j,a[5];
for(i=0;i<5;i++)
a[i]=i+1;
for(j=4;j>=0;j--)
printf(“%3d”,a[j]);
}
结果:
54321
3、main()
{inti=2,x=5,j=7;
fun(j,6);
printf(“i=%d;j=%d;x=%d\n”,i,j,x);
}
fun(inti,intj)
{intx=7;
printf(“i=%d;j=%d;x=%d\n”,i,j,x);
}
结果:
i=7;j=6;x=7
i=2;j=7;x=5
4.main()
{inta=1,b=2,c;
c=max(a,b);
printf(“maxis%d\n”,c);
}
max(intx,inty)
{
intz;z=(x>y)?
x:
y;
return(z);
}
结果:
maxis2
5、main()
{intt,a=2,b=4;
printf(“a=%d,b=%d\n”,a,b);
t=a,a=b,b=t;
printf(“a=%d,b=%d\n”,a,b);
}
结果:
a=2,b=4
a=4,b=2
6.
#include
voidmain()
{voidprint_star();
voidprint_message();
print_star();
print_message();
print_star();
}
voidprint_star()
{printf(″******************\n″);}
voidprint_message()
{printf(″Howdoyoudo!
\n″);}
结果:
******************
Howdoyoudo!
******************
四、程序填空
1、以下程序实现:
输入三个整数,按从大到小的顺序进行输出。
请在括号内填入正确内容
main()
{intx,y,z,c;
scanf(“%d%d%d”,&x,&y,&z);
if(_xif(xif(yprintf(“%d,%d,%d”,x,y,z);
}
2、下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中,请填空。
main()
{inta[2][3]={{1,2,3},{4,5,6}};
intb[3][2],i,j;
printf(“arraya:
\n”);
for(j=0;j<=1;j++)
{for(i=0;_i<=2_;i++)
{printf(“%5d“,a[j][i]);
__b[i][j]=a[j][i]_;}
printf(“\n”);
}
printf(“arrayb:
\n”);
for(i=0;_i<=2_;i++)
{for(j=0;j<=1;j++)
printf(“%5d”,b[i][j]);
printf(“\n”);
}
}
3、输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母,其它字符不变,请在括号内填入正确内容。
main()
{charch;scanf(“%c“,&ch);
ifif (ch>=’a’&&ch<=’z’) ch=ch-32 ;
else ( ch>=’A’&&ch<=’Z’ ) ch=ch+32;
printf(“%c”,ch);
}
4、以下程序实现输出x,y,z三个数中的最大数,请在括号内填入正确内容
main()
{intx=4,y=6,z=7;
int_u,v_;
if(_x>y)u=x;
elseu=y;
if(__u>z_)v=u;
elsev=2;
printf(“v=%d”,v);
}
5下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空:
#indude "stdio.h"
main()
{int m=0,n=0;
char c; 1
while((【c=getchar()】)!
='\n')
{ if(c>='A' && C<='Z') m++ ;
if(c>='a' && c<='z') n++; }
printf("%d\n", m n:
m);
}
五、程序设计
1、编一程序,从键盘输入6名学生的5门成绩,分别统计出每个学生的平均成绩。
main()
{inti,j;
floatg,sum,ave;
for(i=1;i<=6;i++)
{sum=0;
for(j=1;j<=5;j++)
{scanf(“%d”,&g);sum+=g;}
ave=sum/5;
printf(“no=%dave=%5.2f\n”,i,ave);
}
}
2、编一个程序,输入10个整数,统计并输出其中正数、负数和零的个数。
main()
{intx,i,m1=0,m2=0,m3=0;
for(i=1;i<11;i++)
{scanf(“%d”,&x);
if(x>0)m1++;
elseif(x==0)m2++;
elsem3++;
}
printf(“numberof>0%d\n”,m1);
printf(“numberof=0%d\n”,m2);
printf(“numberof<0%d\n”,m3);
}
3、编一个程序,输入三个单精度数,输出其中最小数。
main()
{floatx,y,z;
scanf(“%f,%f,%f”,,&x,&y,&z);
if(xelsemin=y;
printf(“min=%f\n”,min);
}
4.输入4个整数,找出其中最大的数。
用一个函数来实现。
#include
voidmain()
{intmax_4(inta,intb,intc,intd);
inta,b,c,d,max;
printf(“4intergernumbers:
");
scanf("%d%d%d%d",&a,&b,&c,&d);
max=max_4(a,b,c,d);
printf("max=%d\n",max);
}
intmax_4(inta,intb,intc,intd)
{intmax(inta,intb);
intm;
m=max(a,b);
m=max(m,c);
m=max(m,d);
return(m);
}
intmax(intx,inty)
{if(x>y)
returnx;
else
returny;
}