一、填空与选择1.C语言从源程序的书写到上机运行输出结果要经过_______________四个步骤。
2.C语言的表达式与语句的区别在于___________________________________。
3.C语句_____________(有、没有)输入、输出语句。
4.结构化程序的编写有_______________________________三种程序结构。
5.C语言中,变量的存储类别共有四种,即时___________________和寄存器型。
6.表达式10/3*9%10/2的值是___________________。
7.设有“intx=2,y”说明,则逗号表达式“y=x+5,x+y”的值是_________________。
8.设有“intx=1”,则“x>0?2*x+1:0”表达式的值是______________________。
9.变量Y满足以下两条件中的任意一个:①能被4整除,但不能被100整除;②能被400整除。请用逻辑表达式表示所给条件。
_________________________________________________________________
10.C语言调用函数中,参数的虚实结合是_________________
A.传值
B.传址
C.不分
11.逻辑运算符“&&、||、!”中是短路运算符号是____________________
12.C语言是由________________基本单位组成的。
A.过程
B.语句
C.函数
D.程序
13.有如下语句:X+Y*Z>39&&X*Z||Y*Z是什么表达式__________
A.算术表达式
B.逻辑表达式
C.关系表达式
D.字符表达式
14.若进入TC集成环境后,运行(RUN)源程序系统提示包含文件(Include)或库文件(Lib)无法定义时,应修改TC菜单中的哪一项中的哪个子菜单项?
A.File\Change
B.File\Directory
C.Option\Directories
D.TC系统出故障了,应重新安装TC环境。
15.下面几种说法中哪个是正确的?_____________
A.else语句需与它前面的if语句配对使用;
B.else语句需与前面最接近它的if语句配对使用;
C.else语句需与前面最接近它的,且没有和其它else语句配对的if语句配对;
D.以上都正确。
16.定义结构体的关键字是_______________
A.union
B.enum
C.struct
D.typedef
17.定义联合体的关键字是___________________
18.链表的首指针能根据程序的需要进行移动读取链表中的某项内容,即链表可以没有首指针吗?
A.当然可以
B.不可以
C.无所谓
D.最好不要移动首指针
19.定义一个数组a是一个具有3个元素的指针数组,它的定义语句格式是____
A.(*a)[3]
B.*a[2]
C.*a[3]
D.以上写法都不对。
20.有说明语句:chara[]=“thisisabook”。请问该数组到底占了几个字节?_____
A.11
B.12
C.14
D.15
21.设整型变量a为5,使b不为2的表达式是___________
A.b=a/2
B.b=6-(--a)
C.b=a%2
D.b=a>3?2:1
22.设整型变量n的值为2,执行语句“n+=n-=n*n”后,n的值是_________
A.0
B.2
C.-4
D.4
23.设A,B均为整型变量,下列表达式中不是赋值表达式的是__________
A.A=b+3,b+5,--b
B.A=4*5;
C.A=++A-B
D.a=b=5
24.执行语句“x=(a=3,b=a--)”后,x,a,b的值依次为_________
A.3,3,2
B.3,2,2
C.3,2,3
D.2,3,2
25.下列对数组操作不正确的语句是_________
A.inta[5];
B.charb[]={‘h’,’e’,’l’,’l’,’o’};
C.inta[]={2,3,4,5};
D.charb[3][]={1,2,3,4,5,6};
26.设A为存放短整型的一维数组,如果A的首地址为P,那么A中第I个元素的地址为_______________
A.P+I*2
B.P+(I-1)*2
C.P+(I-1)
D.P+I
27.如果X=5,执行语句X*=X+=X*3后,则X的值为__________
A.100
B.400
C.450
D.900
28.下列常量中哪个是不合法的_________________
A.2e32.6
B.0.2e-5
C.“basic”
D.0x4b00
29.下列标识符错误的是_______
A.x1y
B._123
C.2ab
D._ab
30.c语言中int型数-8在内存中的存储形式为_____
A.1111111111111000
B.1000000000001000
C.0000000000001000
D.1111111111110111
二、读程序1.写出下列程序段的输出结果:
main()
{intx=5;
inty=10;
printf("%d\n",x++);
printf("%d\n",++y);}
2.写出下列程序的输出结果:
main()
{intx,y,z;
x=y=z=-1;
printf("x=%d\ty=%d\tz=%d\n",x,y,z);
++y&&++x||++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);}
3.下面程序的输出结果是什么?
#include"stdio.h"
main()
{intx=3;
switch(x)
{case1:
case2:printf("x<3\n");
case3:printf("x=3\n");
case4:
case5:printf("x>3\n");
default:printf("xunknow\n");}}
4.标记出变量p、q、a、b、c、x、y和c1的作用范围和变量性质(局部、全局)
intp=1,q=5;
floatf1(inta)
{intb,c;
charch;
…局部变量ch在此范围内有效
}
charc1;
charf2(intx,inty)
{inti,j;
5.根据源程序,写出相应的数学表达式
#include“stdio.h”
main()
{intx,y;
scanf(“%d”,&x);
if(x<0)y=-1;
elseif(x==0)
y=0;
elsey=1;
printf(“x=%d,y=%d\n”,x,y);}
6.分析下列程序所完成的功能。
main()
{inta,b,c,*pa=&a,*pb=&b,*pc=&c,*p;
scanf("%d,%d,%d",pa,pb,pc);
if(*pa>*pb)
p=pa,pa=pb,pb=p;
if(*pa>*pc)
p=pa,pa=pc,pc=p;
if(*pb>*pc)
p=pb,pb=pc,pc=p;
printf("%d<=%d<=%d",*pa,*pb,*pc);}
三、程序填空:(根据题意,将空缺的语句补上。)1.该程序完成的功能是求1+2+3+…+10的累加和,并进行累加和的输出打印。变量sum是存放累加值的。
#include"stdio.h"
main()
{________________
i=1,sum=0;
for(;i<=10;)
{sum+=i;
_________}
printf("%d\n",sum);}
2.阅读函数,根据函数完成的主要功能,补充、完善主函数。
floatav(floata[],intn)
{inti;floats;
for(i=0,s=0;i
return(s/n);}
main()
{floata[10];
_______________
for(i=0;_________)
scanf("%f"______);
printf("%f",av(a,10));}
3.从键盘输入一些字符,逐个把它们送到磁盘文件TEXT.txt中,直到输入一个“$”为止。请将空缺地方补充完善。
#include"stdio.h"
main()
{FILE*fp;
charch;
if((fp=fopen("test.txt","w"))==NULL)
{printf("cannotopenfile\n");
;
}
;
while(ch!=’$’)
{fputc(ch,fp);putchar(ch);
ch=getchar();}
_______________________;}
四、编程:1.输入一单精度二维数组a[4][3],计算该二维数组中的最大元素的值及其所在位置(行、列),并输出计算结果。
2.个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键盘上输入N个学生的信息,要求输出总平均成绩最高的学生信息,包括学号、性别、姓名和平均成绩。
参考答案
一、填空与选择1.编辑、编译、连接、执行
2.“表达式”未尾加“;”号就成“语句”
3.没有
4.顺序、分支、循环
5自动型、外部型、静态型
9.y%4==0&&y%100!=0||y%400==0
6.7.8.10.1112.13.14151617
393A&&、||CBCCCUnion
18192021222324252627282930
BCDCCBCDDBACA
二、读程序1.52.X=-1Y=-1Z=-13.X=3
11X=-1Y=0Z=0X>3
X=0Y=0Z=-1Xunknow
4.标记出变量p、q、a、b、c、x、y和c1的作用范围和变量性质(局部、全局)
5.
6.从小到大排序。
三、程序填空:(根据题意,将空缺的语句补上。)1.intI,sum
I++;
2.intI
I<10;I++
&a[I]
3.exit(o)
ch=getchar()
fclose(fp)
四、编程:(略)1.
main()
{
floata[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}
intm,n,b,c,d;
b=a[0][0];c=0;d=0;
for(m=0;m<4;m++)
for(n=0;n<4;n++)
if(b
{b=a[m][n];c=m;d=n;}
printf(“a[%f][%f]=%f”c,d,a[c][d],);}
2.N个学生,每个学生的信息包括学号、性别,从键盘上输入N个学生的信息,要求输出学号、性别等信息。
structabc
{chara[20];
charb;}
main()
{
structabcstud1[10];
inta;
for(a=0;a<10;a++)
scanf(“%s”,a);