第一部分选择题
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。
1.属于C语言基本数据类型的是()
A.指针型B.无符号整型
C.数组型D.结构型
2.C语言的长整型数值在计算机中占用的字节个数是()
A.1B.2
C.3D.4
3.C语言中,″\x3d″在内存中占用的字节数是()
A.1B.2
C.4D.5
4.设intx;则执行printf(″%x\n″,~x^x);的结果是()
A.0B.1
C.ffD.ffff
5.对于while语句,错误的说法是()
A.用条件控制循环体的执行次数
B.循环体至少要执行一次
C.循环体有可能一次也不执行
D.循环体中可以包含若干条语句
6.设int a=9,b=20;则printf(″%d,%d\n″,a-,-b);的输出结果是()
A.9,19B.9,20
C.10,19D.10,20
7.执行下列语句
int a=8,b=7,c=6;
if(a b)if(b c){a=c;c=b;}
printf(″%d,%d,%d\n″,a,b,c);
后输出的结果是()
A.6,7,7B.6,7,8
C.8,7,6D.8,7,8
8.设static char x[ ]=″12345″,y[ ]={′1′,′2′,′3′,′4′,′5′,′\0′};那么()
A.x数组的长度等于y数组的长度
B.x数组的长度大于y数组的长度
C.x数组的长度少于y数组的长度
D.x数组与y数组的存储区域相同
9.设int i,x={1,2,3,4,5,6,7,8,9};
则下面语句
for(i=0;i 3;i++)
printf(″%d″,x[i][2-i]);
的输出结果是()
A.147B.159
C.357D.369
10.设int b[ ]={1,2,3,4},y,*p=b;
则执行语句y=*p++;之后,变量y的值为()
A.1B.2
C.3D.4
11.设int a,*p;则语句p= a;中的运算符“ ”的含义是()
A.位与运算B.逻辑与运算
C.取指针内容D.取变量地址
12.若函数能被其它编译单位引用,那么函数定义时的存储类型应选用()
A.autoB.static
C.externD.register
13.下面函数定义有错误的是()
A.f1(x1,x2)B.f1(x1,x2)
int x1,x2;int x1;int x2;
{函数体}{函数体}
C.f1(int x1,x2)D.f1(int x1,int x2)
{函数体}{函数体}
14.C语言中计算a3正确的表达是()
A.a^3B.pow(a,3)
C.a**3D.power(a,3)
15.下列定义正确的是()
A.anum t={a,b}x;B.enum t{1,2}x;
C.anum {′+′,′-′}x;D.enum t{a,b}x;
16.设有定义:union u{int a;float b};
char c;}aa;
则printf(″%d\n″,sizeof(aa));的输出是()
A.32B.16
C.12D.8
17.数据-35.78在文本文件中占用的字节个数是()
A.4B.5
C.6D.8
18.在下列有关宏替换的叙述中,正确的说法是()
A.宏替换占用运行时间
B.宏名有类型
C.带参数的宏替换和函数等价
D.宏替换只是字符替换
19.下列程序的运行结果是()
# defineA5
# defineBA+1
main( )
{int a;
a=B;
printf(″%d\n″a-);
}
A.6B.5
C.4D.出错
20.为了向二进制文件尾部增加数据,打开文件的方式应采用()
A.″ab″B.″rb+″
C.″wb″D.″wb+″
第二部分非选择题
二、填空题(本大题共10小题,每小题2分,共20分)
21.设int y;执行表达式(y=4)||(y=5)||(y=6)后,y的值是______.
22.设char ch=′A′;则printf(″%c″,(ch =′A′ ch =′Z′)ch+32:ch);的值是_____.
23.结构化程序设计的三种基本结构是:选择结构、循环结构和______.
24.下列程序
int x=3;
do{printf(″%d″,-x);}while(!x);
循环执行的次数是______.
25.在C语言中,一个二维数组可以看成若干个______数组。
26.设int a={{1,3,5,7},{2,4,6,8}};则*(*a+1)的值为______.
27.若函数定义为
int data()
{float x=9.9;
return(x);
}
则函数返回的值是______.
28.设struct student
{int no;char name;
float score;
{s1,*p= s1;。
用指针变量p给s1的成员no赋值1234的方法是______.
29.判断文本文件是否结束时使用的符号常量EOF的值是______.
30.设有一个名为″myfile.c″的C程序,
其主函数为mian(int argc,char *argv[ ])。如果在执行时,输入的命令行为
myfile aa bb ↙
则形式参数argc的值是______.
三、程序分析题(本大题共5小题,每小题5分,共25分)
阅读下列程序,将输出结果写到各题右侧的空白处
31.fun(int x)
{
int y=0;
static int z=3;
z++;++y;
return(x+y+z);
}
main( )
{
int I,x=2;
for(i=0;i 2;i++)
printf(″%5d″,fun(x++));
}
32.main( )
{
int s=0,i;
for(i=1;;i++)
{
if(s 50)break;
if(i%2==0) s+=i;
}
printf(″i=%d,s=%d\n″,i,s);
}
33.gcd(int m,int n)
{ if(m==n)return m;
else if(m n) return gcd(m-n,n);
else return gcd(m,n-m);
}
main( )
{
printf(″Gcd=%d\n″,gcd(24,36));
}
34.# include stdio.h
main( )
{int i=0;
char c,s #;=″SABC″;
while(c=s[i])
{
switch(c)
{
case ′A′:i++;break;
case ′B′:++i;
default:putchar(c);i++;
}
putchar(′*′);
}
}
35.int a1=300,a2=400;
main( )
{int a3=100,a4=200;
sub1(a3,a4);
sub1(a1,a2);
printf(″%d,%d,%d,%d\n″,a1,a2,a3,a4);
}
sub1(int x,int y)
{ a1=x;
x=y;
y=a1;
}
四、程序填充题(本大题共3小题,每小题6分,共18分)
给出下列程序,将横线处缺少的部分补上,使其能正确运行。
36.将十个整数输入数组,求出其平均值并输出。
main( )
{int i,a ,sum=0,*p=______;/*第一空*/
for(i=0;i 10;i++)
{ scanf(″%d″,p);sum+=______;/*第二空*/
printf(″%8.2f\n″,______);/*第三空*/
}
37.输入一个无符号整数后求出它的各位数之和并输出。
例如若输入123,则将各位之和6(即1+2+3)输出。
______f(num)/*第一空*/
unsigned int num;
{ unsigned int k=0;
do
{ k+=______;/*第二空*/
num/=10;
} while(num);
______;/*第三空*/
}
main( )
{unsigned int n;
scanf(″%d″, n);
printf(″%u\n″,f(n));
}
38.为数组输入数据,逆序置换后输出。(逆序置换是指:数组的首元素和末元素置换,第二个元素和倒数第二个元素置换,………)
# define N8
main()
{int i,j,t,a[N];
for(i=0;i N,i++)scanf(″%d″,a+i);
i=0;j=N-1;
while(i j)
{ t=*(a+i);________;/*第一空*/
______=t;/*第二空*/
i++;______;/*第三空*/
}
for(i=0;i N;i++)printf(″%5d″,*(a+i));
}
五、程序设计题(第39小题5分,第40、41小题各6分,共17分)。
39.将100个整数输入数组后按每行10个数输出。
40.计算e=1+ 的值并输出(设n=20)。
41.生成Fibonacci数列的前20项并输出,其中
fi=