k:
c
c:
a);
}
A)4B)3C)2D)1
5、以下程序中,while循环的循环次数是()。
main()
{inti=0;
while(i<10)
{if(i<1)continue;
if(i==5)break;
i++;
}
}
A)1B)10C)6D)死循环,不能确定次数
6、执行语句:
for(i=1;i++<4;)后;变量i的值是()。
A)3B)4C)5D)不定
7、有关函数参数,下列说法不正确的是( )。
A)实参可以将数据传给形参;B)实参和形参是不同的变量;
C)形参可以将数据传给实参;D)实参和形参必须个数相等,类型一致。
8、C语言中,变量和函数具有两个属性是( )。
A)作用域和生存期B)类型和存储类别
C)作用域和类型D)作用域和存储类别
9、说明语句“int(*p)():
”的含义是()。
A)p是一个指向一维数组的指针变量
B)p是指针变量,指向一个整型数据
C)p是一个指向函数的指针,该函数的返回值是一个整型
D)以上都不对
10、说明语句"int*(*p);"的含义是()。
A)p是一个指向int型数组的指针
B)p是指针变量,它构成了指针数组
C)p是一个指向函数的指针,该函数的返回值是一个整型
D)p是一个指向函数的指针,该函数的返回值是一个指向整型的指针
11、下述程序的执行结果是( )。
#include<>
unionun
{inti;
charc[2];};
voidmain()
{unionunx;
[0]=10;
[1]=1;
printf(“\n%d”,;}
A)266B)11C)265D)138
12、若程序中有如下的说明和定义:
structex
{intx,y;}
…
structexx,y;
则会发生的情况是 ( )。
A)编译时错 B)程序能顺利编译、连接、执行
C)能顺利编译和连接,但不能执行 D)能通过编译,但连接出错
13、C语言可以处理的文件类型是( ) 。
A)文本文件和数据文件 B)文本文件和二进制文件
C)数据文件和二进制文件 D)数据代码文件
14、下面的for语句()。
for(x=0,y=0;(y!
=123)&&(x4);x++)
A)是无限循环B)循环次数不定C)循环执行4次D)循环执行3次
15、若有如下说明:
struct
{charch;
inti;
doublex;
}arr[2][3]={{‘a’,1,},{‘b’,2,},{‘c’,3,}};
则表达式() 的值为2。
A)arr[0][1].chB)arr[0][1].iC)arr[0][0].iD)arr[0][2].i
二、判断题
1、条件运算符的结合方向是“自左向右”( )。
2、switch语句中每一个case的常量表达式的值必须互不相同( )。
3、循环语句中循环体允许包含一个以上的语句,可以不以复合语句形式出现( )。
4、构成C程序的源文件之间以及函数与函数之间,相互位置可以任意( )。
5、C程序中的函数不能嵌套定义,但可嵌套调用( )。
6、从变量的作用域角度来分,可以分为全局变量和局部变量( )。
7、从终端输入一个字符串给字符数组,该字符串两端不必用双引号括起来( )。
8、若有说明:
inta[][4]={0,0};,则只有a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0( )。
9、利用指针和结构类型不能构成更复杂的数据结构( )。
10、共用体类型可以出现在结构体类型定义中( )。
11、当一个case语句末包含break语句时,执行完该case语句后跳出switch结构()。
12、宏定义中的标识符可以用大写字母,也可以用小写字母()。
13、do-while语句构成的循环,当while语句中的表达式的值为非零时结束循环()。
14、用“%”作求余运算时,该运算符两侧均应为整型数据()。
15、一个逗号表达式可以与另一个表达式组成一个新的逗号表达式()。
三、写出程序的运行结果
1、#include
main()
{inta=1,b=3,c=5,d=4;
if(ab)
if(cd)x=1;
else
if(ac)
if(bd)x=2;
elsex=3;
elsex=6;
elsex=7;
printf(“x=%d”,x);
}
2、#include
main()
{intk,j,m;
for(k=5;k=1;k--)
{m=0;
for(j=k,j=5;j++)
m+=k*j;
}
printf(“m=%d\n”,m);
}
3、#include<>
main()
{unionExa
{struct
{inta;
intb;
}out;
intc;
intd;
}e;
=1;=2;
printf("%d%d",
4、#include“”
main()
{inta[]={1,2,3,4},i,j,s=0;
j=1;
for(i=3;i>=0;i--)
{s=s+a[i]*j;
j=j*10;}
printf(“s=%d\n”,s);}
5、#include""
#include""
main()
{chars1[]="somthings";
chars2[]="test";
chars3[]="good";
printf("%s\n",strcat(strcpy(s1,s2),s3));
}
四、程序填空
1、下面程序输出100到200之间的素数,每行输出10个素数,请将缺省语句填上,使算法完整。
#include“”
main()
{intm,k,i,n=0;
for(m=101;m=200;m=m+2)
{if(①)printf(“\n”);
k=sqrt(m);
for(i=2,i=k;i++)
if(②)break;
if(i=k+1){printf(“%d”,m);n=n+1;}
}
}
2、一个函数days,实现求某月某日是该年的第多少天。
由主函数将年、月、日传递给days函数,计算后将日数传回主函数输出,请将缺省语句填上,使算法完整。
structy_m_d
{intyear;
intmonth;
intday;
}date;
main()
{intdays(int,int,int);
inti,day_sum;
printf(“inputyear,month,day:
”);
scanf(“%d,%d,%d”,&,&,&;
day_sum=days(①);
printf(“\n%d/%disthe%dthdayin%d.”,,,day_sum,;
}
days(intyear,intmonth,intday)
{intday_sum,i;
intday_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
②
for(i=1;iday_sum+=day_tab[i];
day_sum+=day;
if((year%4==0&&year%100!
=0||year%4==0)&&month>=3)
③
return(day_sum);
}
五、程序设计题
1,学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:
把分数最低的学生数据放在h所指的数组中,注意:
分数最低的学生可能不止一个,函数返回分数最低的学生的人数。
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STREC*a,STREC*b)
{…………
}
main()
{STRECs[N]={{“GA05”,85},{“GA03”,76},{“GA02”,69},{“GA04”,85},
{“GA01”,91},{“GA07”,72},{“GA08”,64},{“GA06”,87},
{“GA015”,85},{“GA013”,96},{“GA012,64},{“GA014”,91},
{“GA011”,91},{“GA017”,64},{“GA018”,64},{“GA016”,72};
STRECh[N];
inti,n;
n=fun(s,h);
printf(“The%dlowestscore:
\n”,n);
for(i=0;iprintf(“%d%4d\n”,h[I].num,h[I].s);
printf(“\n”);
}
2、从键盘