一、单项选择题 (本大题共20小题,每小题1分,共20分)
1. C语言程序由什么组成? ()
A. 子程序
B. 主程序和子程序
C. 函数
D. 过程
2.以下属于C语言中的简单数据类型的是( )
A. int、float、long
B. int、float、char、boolean
C. char、byte、double
D. int、boolean、long
3.以下那一个不是C语言合法的关键字()
A. switch
B. cher
C. int
D. double
4.设ch是char型变量,其值为’A’,则下面表达式的值是
ch=(ch>=’A’&&ch<=’Z’)?(ch+32):ch
A. A
B. a
C. Z
D. z
5. 若执行printf("%d\n", strlen("a\n\"\x41"))语句其输出结果是( )
A 8
B 7
C 6
D 4
6. 若int a, b, c; 则表达式(a=2, b=5, b++, a+b)的值是( )
A. 7
B. 8
C. 6
D. 2
7. 以下运算符中优先级最高的为( )
A. &&
B. +
C. *
D. =
8.数组名作为实参传递给形参时,数组名被处理为()
A 该数组的长度
B 该数组的元素个数
C 该数组的首地址
D 该数组中各元素的值
9. 表达式0x13^0x17的值是
A. 0x04
B. 0x13
C. 0xE8
D. 0x17
10.执行下列程序
#include “stdio.h”
main()
{ printf(“%d\n”,NULL) ;}
后输出的结果是()
A. –1
B. 0
C. 1
D. 2
11. 若有定义typedef char STRING[255]; STRING s; 则s是( )
A 字符指针数组变量 B字符指针变量
C 字符变量
D 字符数组变量
12. 判断char型变量c1是否小写字母的正确表达式为( )
A 'a'<=c1<='z'
B (c1>='a')&&(c1<='z')
C (c1>=a)&&(c1<=z)
D ('a'<=c1)||('z'>=c1)
13. 设E为表达式,以下与do…while(E);不等价的语句是( )
A do…while(!E==0);
B do…while(E>0||E<0);
C do…while(E==0);
D do…while(E!=0);
14.以下程序计算园的面积,程序编译时出错,出错的原因是()
main()
/* Beginning */
{
int r; float s;
acanf(“%d”,&r);
s=3.14*r*r;
printf(“s=%f\n”,s);
}
A. 注释语句书写位置错误
B. 存放圆半径的变量r不应该定义为整型
C. 输出语句格式描述符非法
D.函数名书写错误
15.设char c[5]={‘a’,’b’,’\0’,’c’,’\0’};则printf(“%s”,c);的输出是()
A. ‘a’‘b’
B. ab
C. abc
D. “ab\0c”
16. 全局变量的存储类型可以定义为
A. auto 或 static
B. extern 或 register
C. auto 或 extern
D. extern 或 static
17. 以下对C语言函数的有关描述中,正确的是()
A 调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B C函数既可以嵌套定义又可以递归调用
C 函数必须有返回值,否则不能使用函数
D C程序中有调用关系的所有函数必须放在同一个源程序文件中
18. 用来将两个字符串合并为一个字符串的函数是()
A strcmp()
B strcpy()
C strlen()
D strcat()
19.若fp已正确定义并指向某个文件,当未遇到该文件结束标志时,函数feof(fp)值( )
A 0
B 1
C -1
D 一个非0值
20.标准库函数fputs(p1,p2)的功能是
A. 从p1指向的文件中读一个字符串存入p2指向的内存
B. 从p2指向的文件中读一个字符串存入p1指向的内存
C. 从p1指向的内存中读一个字符串存入p2指向的文件
D. 从p2指向的内存中读一个字符串存入p1指向的文件
二、填空题 (本大题共10小题,每小题2分,共20分)
1.“n是大于整数m的偶数”的C语言表达式____________________________
2.在C语言中,标准输出设备、标准输入设备对应的文件指针分别是_______和_______ 3.当a=3,b=4,c=5时,写出下列各式的值a!=c的值为________________, a+b>c&&b==c的值为______________________。
4.静态型局部变量的作用域是______________________________________
5.下列函数要求计算两个整数x、y之和,并通过形参z传回该和值,请填空:
void add(int x,int y, __________z)
{__________=x+y;return;}
6.在C语言中,求平方根的函数是_____________________,求正弦函数是_______________ 7.假设有如下结构体类型说明:
struct test{
int a;
int b;
};
用一条语句定义上述结构体类型变量x和y的正确形式为___________________
将x的成员a和b分别赋值为3和5的正确形式为_______________;将x的成员a和b之和赋给y的成员a的正确形式为______________________.
8. 定义枚举类型的关键字为_________________________.
9.在c语言中,利用fopen以只读的方式打开当前目录下的 a.txt文件的正确形式为____________________;利用fopen以只写的方式打开d盘根目录下的a.txt文件的正确形式为________________________________。
10.定义计算园面积的宏(r为半径) #define S(r) ___________________________
三、程序分析题 (本大题共5小题,每小题5分,共25分)
1、若运行时输入:16<回车>,则以下程序的运行结果是__________________。
#include
main()
{ int age;
printf(“Input your age : “);
scanf(“%d”, &age);
if (age>=18)
printf(“your $4.5yuan/hour”);
else
printf(“Your $3.0yuan/hour”);
}
2. 写出下列程序的输出结果_________________________
main()
{
int x=100,a=10,b=20,ok1=5,ok2=0;
if(a
else if(ok2) x=10;
else x=-1;
printf(“%d\n”,x);
}
3. 写出下列程序的运行结果____________________________________________
#define PR(ar) printf(“%d ,” , ar)
main()
{
int j,a[]={2,4,6,8,10,12,14,16},*p=a+5;
for(j=3; j ; j--)
switch(j)
{
case 1:
case 2: PR(*p++);break;
case 3:PR(*(--p));
}
}
4.以下程序的执行结果是________________________________________ #include
main( )
{
char str[]={“1a2b3c”};
int i;
for (i=0; str[i]!=’\0’; i++)
if (str[i]>=’0’ && str[i]<=’9’)
printf(“%c”, str[i]);
printf(“\n”);
}
5.以下程序的执行结果是_______________________________________ struct st {
int x;
int *y;
} *p;
int s[]={1,2,3,4};
struct st a[]={1, &s[0], 2, &s[1], 3, &s[2], 4, &s[3]};
main( )
{
p=a;
printf("%d,", p->x);
printf("%d,",(++p)->x);
printf("%d,", *(++p)->y);
printf("%d\n", ++(*(++p)->y));
}
四、程序填充题 (本大题共5小题,每小题4分。共20分)
1.以下程序从键盘输入一个整数,判断其是否为偶数,请填空。
main()
{ __________________;
scanf(“%d”,&x);
if(______________) printf(“偶数!”);
______________ printf(“奇数!”);
}
2.以下程序从键盘输入10个数,输出总和及平均数,请填空。
main()
{ int k;
_____________________
for(k=1,sum=0;k<=10;k++)
{
scanf(“%f”,&f);
________________
}
printf(“sum=%f, \t average=%f\n”,sum,sum/10);
}
3. 以下函数用选择法对一个整数数组进行排序,请填空:
sort(int x[],int n)
{
int h,j,k,t;
for(h=0;____________;h++)
{
k=h;
for(j=h+1;j if(x[j]>x[k]) ___________________; if(k!=h) { t=x[h];x[h]=x[k];x[k]=t;} } } 4.以下程序用数组求Fibonacci数列的前20项,每5个一行输出,请填空:#include main() {int I; int f[20]={________________}; /*填空*/ for(I=2;I<20;I++) f[I]=f[I-2]+f[I-1]; for(I=0;I<20;I++) { if(I%5==0) printf(______________);/*填空*/ printf(“%12d”,f[I]); } } 5. 下列程序的功能是将一个结构体数组写入一个文件中保存起来,请填空: #include struct Test { char a[20] ; } ; main(){ ________________________; struct Test x[3]= { {“test1”},{“test2”},{“test3”}}; int i; fp = fopen (“d:\\cwz\\abc.bat”, ”wb”) ; for (i=0; i<3; i++) ________________________; _________________________; } 五、程序设计题 (本大题共2小题,第一题7分,第二题8分,共15分) 1. 设计一个显示文本文件内容的程序,文件名随程序执行时输入。 2.编写程序,根据输入的三个边长a、b、c,判断它们是否构成三角形,若能构成三角形,继续判断该三角形是等边、等腰还是一般三角形,并求出此三角形的面积和周长。 参考答案: 一、单项选择题 1.C 2.A 3.B 4.B 5.D 6.B 7.C 8.C 9.A 10.B 11.D 12.B 13.C 14.D 15.B 16.C 17.A 18.D 19.A 20.C 二、填空题 1. (n>m)&&(n%2==0) 2. stdin stdout 3. 1 0 4. 定义它的函数范围内有效 5. int * *z 6. sqrt() sin() 7. struct test x,y x.a=3;x.b=5 y.a=x.a+x.b 8. enum 9. fopen(“a.txt”, “r”) fopen(“a.txt”, “w”) 10. 3.14*(r)*(r) 三、程序分析题 1. Your $3.0yuan/hour 2. -1 3. 10,10,12, 4. 123 5.1,2,3,5 四、程序填充题 1. int x; x%2==0 else 2.float f,sum; sum=sum+f; 3.h k=j 4.0,1 “\n” 5.FILE *fp; fwrite(&x[i],sizeof(struct test),1,fp); fclose(fp) 五、程序设计题 1.#include main() {FILE *fp; char name[20]; printf(“input filename”); scanf(“%s”, name); if((fp=fopen(name,”r”))==NULL) {printf(“cannot open file\n”); exit(0); } while (!feof(fp)) putc(fgetc(fp)); fclose(fp); } 2.#include "stdio.h" #include "math.h" main() { float a,b,c,cir,area; scanf("%f%f%f",&a,&b,&c); if ((a+b>c)&&(b+c>a)&&(a+c>b)) {if (fabs(a-b)<1e-6&&fabs(b-c)<1e-6&&fabs(a-c)<1e-6) printf("it's a dengbian triangle"); else if (fabs(a-b)<1e-6||fabs(b-c)<1e-6||fabs(a-c)<1e-6) printf("it's a dengyao triangle"); else printf("it's a normal triangle"); cir=(a+b+c)/2; area=sqrt(cir*(cir-a)*(cir-b)*(cir-c)); printf("\ncircle=%.2f area=%.2f\n",cir*2,area); } else printf(" it's not a triangle"); getch(); }