一、1.单项选择题
0. 以下属于C语言保留字的是( )
A.fopen
B.include
C.get
D.unsigned
1. C语言中,错误的int类型的常数是( )
A.100000
B.0
C.37
D.0xaf
2. 在C语言中,"a"和"a"存储所占用的字节数分别是( )
A.1,1
B.1,2
C.2,1
D.2,2
3. 对于数学表达式
,正确的C语言表达式是( )
A.2sqrt(x)+(a+b)/3sin(x)
B.2sqrt(x)+(a+b)/(3sin(x))
C.2*sqrt(x)+(a+b)/3/sin(x)
D.2*sqrt(x)+(a+b/3*sin(x))
4. 设int x=10,a=0,b=25;,条件表达式x<1? a+10:b的值是( )
A.0
B.1
C.10
D.25
5. C语言中,下列运算符优先级最高的是( )
A.!
B.%
C.>>
D.==
6. sizeof(double)是( )
A.函数调用
B.int型表达式
C.double型表达式
D.非法表达式
7. 设有以下程序段: int a=1,b=10,c=1,x; x=a&&b||++c; printf("%d,%d ",x,c); 执行后输出的结果是( )
A.0,0
B.0,1
C.1,0
D.1,1
8. 设int x;,则以下语句中错误的输入是( )
A.scanf ("%d",x);
B.scanf ("%d",&x);
C.seanf ("%o",&x);
D.scanf ("%x",&x);
9. 设int(*P)();,P的含义是( )
A.指向一维数组的指针变量
B.指向二维数组的指针变量
C.指向一个整型变量的指针变量
D.指向整型函数的指针变量
10. 在C语言中,运算符"="和"=="的功能分别是( )
A.关系运算和赋值运算
B.赋值运算和关系运算
C.都是关系运算
D.都是赋值运算
11. 设int x[]={1,2,3,4,5),*p=x;,则值为3的表达式是( )
A.p+=2,*p++
B.p+=2,*++p
C.p+=2,p++
D.p+=2,++*P
12. 设for(i=0,j=10;(j>0)&&(i<4);i++,j--);,该语句的循环次数是( )
A.0
B.3
C.4
D.无限
13. 设函数定义如下: float f1(float a,float b) { return(a+b); } 若有float x=1.1,y=2.2;,则以下语句中正确的函数调用是( )
A.printf ("%f",f1(x));
B.printf ("%f",f1(&x,y));
C.printf ("%f",f1(*x,*y));
D.printf ("%f",f1(x,y));
14. 结构型变量占用内存的字节数是( )
A.各成员占用内存字节数之和
B.第一个成员占用的内存字节数
C.占用内存最大成员所需的字节数
D.最后一个成员占用的内存字节数
15. 设enum color {purple,Mack,red,white}d;,若将d赋值为枚举常量red,则正确的是( )
A.d=(enum color)2;
B.d=(enum color)3;
C.d="red";
D.d=color;
16. 若main()函数带参数,参数个数最多是( )
A.0
B.1
C.2
D.3
17. 设宏定义#define PI 3.1415926,用宏名PI替换的是( )
A.算术表达式
B.字符串
C.单精度实型数
D.双精度实型数
18. 调用系统函数labs时,应选用的文件包含是( )
A.#include "stdio.h"
B.#include "string.h"
C.#include "ctype.h"
D.#include"math.h"
19. 设 struct st {int i; int j; }*P; main() { struct st m[]={{10,1},{20,2},{30,3}}; p=m; printf ("%d ",(*++p).j); } 则程序的输出结果是( )
A.1
B.2
C.3
D.10
二、2.填空题
0. C语言中,标准输入设备的文件指针名是______。
1. 一个C语言程序的基本组成单位是______。
2. C语言中,&作为双目运算符表示的运算是______。
3. 连接两个字符串的系统函数名是______。
4. 设float a [4][5];,则数组a中第一维下标的最大值是______。
5. 设char str[]="book";,则执行printf ("%d ",sizeof(str));后输出的值是______。
6. 27.设
#define F(x)x*x
main()
{inta=3,b=4,c;
c=F(a+b);
printf ("%d ",c);
}
则程序执行后输出的值是______。
7. 设int a;float b;char c;long d;double e;,则表达式a/c-b+d-e值的类型是______。
8. 29.设
int x=5:
x+=x-=x+x;
则执行printf ("%d ",x);后输出的值是______。
9. 设
union
{
int i;long j;char k;
}t,*p=&t;
则用指针法给t的成员i赋值为20的语句是______。
三、3.程序分析题
0. main()
{int i,s=0;
for(i=1;i<10;i+=2)s+=i+1;
printf ("%d ",s);
}
1. main()
{int x=15,y=21,z=0;
switch(x%3)
{case 0:z++;break;
case 1:z++;
switch(y%2)
{default:z++;
case 0:z++;break;
}
}
printf ("%d ",z);
}
2. main()
{int a=0,b=5,c=3;
while(c>0&&a<5)(b=b-1;
++a:
c--;
}
printf ("%d,%d,%d ",a,b,c);
}
3. int z=5;
f()
{static int x=2;int y=5;
x=x+2;z=z+5;
y=y+z;
printf ("%5d%5d ",x,z);
}
main()
{static int x=10;int y;
y=z:
printf ("%5d%5d ",x,z);
f();
printf ("%5d%5d ",x,z);
f();
}
4. struct prob
{char*a;
int b;
}x[]={"Zhang San",19,"Li Si",21,"Wang Wu",20);
main()
{int i,m1,m2;
m1=m2=X[0].b;
for(i=1;i<3;i++)
if(x[i].b>m1)m1=x[i].b;
else if(x[[i].b<m2)m2=x[i].b;
for(i=0;i<3;i++)
if(x[i].b!=m1&&x[i].b!=m2)
{print("%s:%d ",x[i].a,x[i].b);
break;
}
}
四、4.程序填充题
0. 用递归方法写出计算n的阶乘的函数,调用该函数计算并输出n=0,1,2,……,10时各阶乘的值。
计算公式:
long fac(int n)
{
if(______)return(1);/*第一空*/
else return______;/*第二空*/
}
main()
{
int m;long int fa;
for(m=0;m<=10;m++)
{
______;/*第三空*/
printf ("%d!=%1d ",m,fa);
}
}
1. 使用二维数组形式并按下列形式输出数据
0 1 2 3 4
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
main()
{int i,j,______;/*第一空*/
for(i=0;i<5;i++)
for(j=0;j<s;j++)a[i][j]=______;/*第二空*/
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)printf ("%2d",a[i][j]);
______;/*第三空*/
}
}
2. 键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str.dat中。
#include<stdio.h>
main()
{
char ch;int sumch=0;
FILE*fp;
fp=fopen ("str.dat","w");
while((ch=getchar())!=______)/*第一空*/
{
sumch++;
putchar(ch);
fputc(______,fp);/*第二空*/
}
printf("sumch=%d ",sumch);
fprintf(______,"sumch=%d ",sumch);/*第三空*/
fclose(fp);
}
五、5.程序设计题
0. 为实型变量x输入一个值后,输出x的值、x的平方根、x的平方、x的立方根和x的立方。
1. 输入三个整型数,找出其中数值最大者并输出。
2. 根据Fibonacci数列公式: