一、填空题:
1、 函数体一般包括声明部分和( ).通常用作为程序的( )部分.
2、 “=”是( )符号,不是等号。在c语言中等于号用( )表示。
3、 设 int a=1,b=2,c=3,d;执行d=!(a+b+c)后,d的结果是( )
4、设int x=2;表达式(x&&1==1)?1:0的值是( )
5、如下程序的输出结果是( )和( )
main()
{int a[6]={1,2,3,4,5,6};
int *p;
p=a;
printf("%d,%d\n",*p,*(p+3)); }
6、(123)8表示的十进制数是( ).
7、定义二维数组a[5][6];后,第10个元素是( )
8、"*"称为( )运算符,"&"称为( )运算符.
9、在内存中存储“A”要占用( )个字节,存储‘A’要占用( )个字节。
10、C语言中文件按存储方式分为( )文件和( )文件。
11、从变量存在的时间长短(即变量的生存期)来划分,变量可以分为( )和( )。
12、do~while语句的其一般形式为( )。
13、一个函数返回值的类型由( )来决定。
14、已知 x=2.5,y=4.7,a=7, 则x+a%3*(int)(x+y)%2/4的值为( )。
15、有如下函数调用语句:func(r1,r2+r3,(r4,r5));该函数调用语句中,含有实参的个数是( )。
16、若有定义a[3][5];则排列在数组中的第8个元素是( )。
17、Break语句只能用于( )语句和( )语句。
18、结构化程序设计的三种基本结构包括( )( )( )。
19、能正确表示x的取值范围在[0,100]或[-10,-5]内的表达式为( )。
20、若定义char *p=“I love china”;则*p和*p(p+4)分别为( )和( )。
21、十六进制数0x3e对应的十进制数是( )。
二、选择题:
1、以下不正确的c语言标识符是( )
A.abc B.A123 C.ab_name D.123#
2、设d为字符变量,下列表达式正确的是( )。
A、d=678 B、d=’a’ C、d=”d” D、d=’gikl’
3、以下关于数组的描述正确的是( )
A 数组的大小是固定的,但可以有不同的类型的数组元素
B 数组的大小是可变的,但所有数组元素的类型必须相同
C 数组的大小是固定的,所有数组元素的类型必须相同
D 数组的大小是可变的,可以有不同类型的数组元素
4、字符串“m\x43\\\np\102q”占用的存储空间为( )字节。
A、7 B、8 C、15 D、16
5、以下对二维数组a进行正确初始化的是( )
A. int a[2][3] ={{1,2},{3,4},{5,6} } ;
B. int a[][3] = {1,2,3,4,5,6};
C. int a[2][] = {1,2,3,4,5,6};
D. int a[2][] ={{1,2},{3,4}};
6、执行printf("%d",strlen("china\n"))后的结果是( )
A.5 B.6 C.7 D.9
7、C语言源程序的基本单位是( )
A 过程 B 函数 C 子程序 D 标志符
8、有如下语句:scanf("a=%d,b=%d,c=%d",&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应是( )
A. 132 B. 1,3,2 C. a=1,b=3,c=2 D. a=1 b=3 c=2
9.设int m=1,n=2,则++m==n的结果是( )
A.0 B.1 C.2 D.3
10.对于二维数组a[2][3],元素a[0][2]是数组的第几个元素( )
A.3 B.4 C.5 D.6
11、逗号表达式(a=3*5,a*4),a+15的值为( )
A. 15 B.60 C.30 D.不确定
12. 下列类型属于构造数据类型的是( )。
A、结构体类型和指针类型 B、共同体类型和实型
C、结构体类型和枚举类型 D、数组和空类型
13. 若有如下语句:int *p1,*p2;则其中int所指的是( )
A. p1的类型 B.p2的类型
C.*p1和*p2的类型 D.p2和p1所能指向变量的类型
14.以下定义后,正确的k值是( )
enum{a, b=5,c,d=4,e}k;
k=e;
A.3 B.4 C.5 D.6
15.使用共用体union的目的是( )
A. 将一组数据作为一个整体,以便于其中的成员共享同一存储空间
B. 将一组具有相同数据类型的数据作为一个整体,以便于其中的成员共享同一存储空间
C. 将一组相关数据作为一个整体,以便程序中使用
D、将一组具有相同数据类型的数据作为一个整体,以便于程序中使用
16、以下正确的c语言标识符是( )
A.“abc” B.for C.ab_name D.123#
17、若用数组名作为函数调用的实参,传递给形参的是( )。
A、数组的首地址 B、数组第一个元素的值
C、数组中全部元素的值 D、数组元素的个数
18、下列说法中正确的是( )。
A、main函数必须放在C程序的开头。
B、main函数必须放在C程序的最后。
C、main函数可以放在C程序的中间部分,但执行时是从程序开头执行的。
D、main函数可以放在C程序的中间部分,但执行时是从main函数开始的。
19、以下对二维数组a进行正确初始化的是( )
E. int a[3][] ={‘abc’,‘1’};
F. int a[][3] ={‘abc’,‘1’};
G. int a[3][] ={‘a’,“1”};
H. int a[][3] ={“a”,“1”};
20、有定义char s[20]={ "china\n"};printf("%d",strlen(str))后的结果是( )
A.5 B.6 C.20 D.9
21、一个C程序中有且仅包含一个的是( )
A 过程 B main()函数 C 子程序 D 局部变量
22、c语言中,运算对象必须是整型数的运算符是( )
A.% B./ C.%和/ D.**
23、假设array是一个有10个元素的整型数组,下列写法正确的是 ( )
A.array[10]=0 B. array=0
C. array[0]=10 D. array[-1]=0
24、设int i=3,则printf(“%d”,-i++)的结果和i的值分别为( )
A. -3,4 B.-4,4 C.-4,3 D.-3,3
25. 若有定义int a[10],则a代表的是数组a的( )。
A、第一个元素 B、最后一个元素
C、首地址 D、最后一个元素的地址
26. 以下for循环执行次数是( )。
for(a=0,b=0;(b!=123)&&(a<=4);a++)
A、无限循环 B.5次 C.4次 D.次数不定
三.分析程序,给出程序的运行结果
1. 写出以下程序输入123456<回车>后的输出结果.
main()
{ int a,b;
scanf("%2d%3d",&a,&b);
printf("a=%d,b=%d\n",a,b);}
输出结果:
2. main()
{ int i,j;
for(i=0;i<=3;i++)
for(j=0;j<=5;j++)
{ if(i==0||j==0||i==3||j==5)
printf(“*”);
else printf(“ ”);
printf(“\n”);
}
输出结果:
3. #include<string.h>
void fun(char *s,int p,int k)
{int i;
for(i=p;i<k-1;i++)
s[i]=s[i+2];
}
main()
{char s[]="abcdefg";
fun(s,3,strlen(s));
puts(s);
}
输出结果:
4. #include<stdio.h>
main( )
{int a=1,b=2;
switch(a)
{case 1: switch(b)
{ case 1:printf(“**o**”);break;
case 2:printf(“**1**”);break;}
case 2: printf(“**2**”);break;}
}
输出结果:
5. main()
{ int a=5,*p;
p=&a;
a=*p+5;
printf("a=%d",a);}
输出结果:
6、int m=10;
int func(int x,int y)
{ int m=5;
return (x*y-m); }
main()
{ int a=7,b=5;
printf(“%d”,func(a,b)/m);
}
输出结果:
7、 main()
{int i,j;
for(i=1;i<=6;i++)
{ for(j=1;j<=10-i;j++)
printf(“ ”);
for(j=1;j<=2*i-1;j++)
printf(“*”);
printf(“\n”);}
}
输出结果:
四、程序填空题,在程序的空白处填上合适的语句
1、 根据以下的if语句写出与其功能相同的switch语句(x的值在0~100之间)
if语句:
if(x<60) m=1;
else if(x<70) m=2;
else if(x<80) m=3;
else if(x<90) m=4;
else if(x<100) m=5;
switch语句:
switch( )
{case 0: case 1: case 2: case 3: case 4: case 5: m=1;break;
case 6:m=2;break;
case 7:m=3;break;
case 8:m=4;break;
( ):m=5;
}
2、以下程序实现打印200~300之间所有的素数。
( )
void main()
{ int m,i,k,n=0;
for(m=200;m<=300;m+=2)
{ ( );
for(i=2;i<=k;i++)
if(m%i==0) break;
if( )
{ printf(“%d\n”,m);
n++;
}
if(n%10==0) printf(“\n”);
}
}
3、用冒泡法对10个数由小到大排序。
main( )
{int a[11],i,j,t;
for(i=1;i<=11;i++)
scanf(“%d”,&a[i]);
for(j=1;j<=9;j++)
for(i=1;( );i++)
if( )
{t=a[i]; ( );a[i+1]=t;}
for(i=1;i<=11;i++)
printf(“%d ”,a[i]);}
4、以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束统计,请填空。
Main( )
{ float x,max,min;
scanf(“%f”,&x);
max=min=x;
while( )
{if (x>max) max=x;
if( x<min) min=x;
( )
}
printf(“\nmax=%f\nmin=%f\n”,max,min);
}
五.编程题
1、编写函数,求1到n的和,然后调用该函数
求S=(1+2+3+……+10)/(1+2+3+……+100)*(1+2+3+……+50)
2、 编写程序输出下列图案: *
***
*****
*******
3、利用for循环编写一段能产生如下结果的程序。
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5