一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)
1,若变量已正确定义并赋值,表达式()不符合 C 语言语法
A. a*b/c;
B. 3.14%2
C. 2, b
D. a/b/c
A. 1
B. 非 0的数
C. 非1的数
D. 大于 0 的数
3.若变量已正确定义,表达式()的值不是 2
A. 2&3
B. 1<<1
C. a=2
D. 1^3
4,已知: char w; int x; float y; double z;,则表达式w*x+z-y 结果的类型是()
A. float
B. char
C. int
D. double
5.以下所列的C语言常量中,错误的是
A. OxFF
B. e5
C. 2L
D.'“;”
6,设变量定义为"int x, *p-&x;",则&*p相当于()
A. p
B. *p
C. x
D. *&x
7·关系表达式15-5的值是()
A. true
B. false
C. 0
D. 1
8.表达式strlen(“hello10128”)的值是()
A. 5
B. 6
C. 7
D. 8
9,设变量定义为"int x, p=&x;",则p相当于()
A. p
B. *p
C. x
D. *&x
10下列关于单目运算符+、一的叙述中正确的是()
A.它们的运算对象可以是int型变量,但不能是double型变量和float型变量
B.它们的运算对象可以是任何变量和常量
C.它们的运算对象可以是char型变量和int型变量,但不能是float型变量
D.它们的运算对象可以是char型变量、int型变量和float型变量
A. 由于 do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B.do-while循环中,根据情况可以省略while
C. 在 doswhile 循环体中,必须有能使循环退出的操作:
D.doewhjle循环电do开始,用while结束,在while(表达式)后面不能写分号
A. 10
B. 9
C. 1
D. 0
13: 以下正确的函数定义是()
A. double fun(int x, int y){ z=x+y; retum z;
B. void fun(x, y) {int x,y; double z; z=x/y; retum z;}
C. float f(int x, int y) {float z; z=x/y; return z;}
D. int fun(int x, y) {int z; return z; }
A. strcat(a2,al);
B. strcat(al,a2);
C. strepy(al,a2);
D. strcpy(a2,al);
15,对于以下的变量定义,表达式()不符合 C 语言语法
struct node
{
int len;
char "pk;
}x= {2, “right”}, *p = &x;
A. p->pk
B. *p.pk
C. *p->pk
D. *x.pk
16,程序段如下,则以下说法中正确的是()
int k=10;
while(k==0) k=k+1;
A. while 循环执行 10 次
B. 循环是无限循环
C. 循环体语句一次也不执行
D. 循环体语句执行一次
#include
int func(int a,int b)
{
return(a+b);}
void main(){
int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d ",r);
}
A.12
B. 13
C.14
D.15
有如下程序段int *p=&a,a=10 ,b=1;a=*p+b;执行该程序段后, a的值为()
A. 12
B. 11
C. 10
D.编译出错
有程序段
#define N 2
#define M n+1
#define NUM (M+1)*M/2
void main(){
int i,n=0;
for(i=1;i<=NUM;i++){
…}
循环次数()
A. 6次
B. 8次
C. 0次
D. 无穷次
20,设有以下说明语句: struct ex fintx;float y;charz;) example;则下面叙述中不正确的是()
A. struct 结构体类型的关键字
B. example是结构体类型名
C. x, y,z都是结构体成员名
D. struct ex是结构体类型
二、程序阅读题(本大题共5小题,每小题6分,共30分。请将程序的运行结果填写在答题纸的相应位置上。)
1._________
#include
int main() {
int m, k = 0, s = 0;
for (m = 1; m <= 4; m++) {
switch (m % 4) {
case 0:
case 1:
s += m;
break;
case 2:
case 3:
s -= m;
break;
}
k += s;
printf("%d\n", k);
}
return 0;
}
2_______
#include
int main() {
int a[8] = {70, 63, 54, 95, 40, 75, 90, 66};
int i, s = 0;
for (i = 0; i < 8; i++) {
if (a[i] >= 70 && a[i] <= 90) {
s += a[i];
}
}
printf("s=%d\n", s);
return 0;
}
3_______
```c
#include
int LA(int *a, int n) {
int i, s = 0;
for (i = 0; i < n; i++) {
s += a[i];
}
return s;
}
int main() {
int a[5] = {1, 2, 3, 4, 5};
int b = LA(a, 5) + LA(a + 1, 3);
printf("b=%d\n", b);
return 0;
}
4________
#include
int main() {
int i;
char str[] = "student";
for (i = 0; i <= 6; i++) {
switch (i) {
case 0:
printf("%c ", str[i]);
break;
case 1:
printf("%c ", str[i]);
break;
case 2:
printf("%s\n", str);
break;
}
}
return 0;
}
5________
#include
int f(int n)
{
ints=0,i;if(n==0||n==1
return 1;
for(i=n-1;i>=0;i--)
s+=f9i0*f(n-1-i);
return s;
}int main()
{
int i;
for(i=1;i<=4;i++)
printf("f(%d)=%d ",i,f(i);
return 0;
}
三、填空题
#include
1 {
_________;
*p1 = *p2;
*p2 = temp;
}
int main() {
int a, b, *p, *q;
printf("input a, b:");
scanf("%d%d", &a, &b);
p = &a;
q = &b;
if (——————————) {
swap(p, q);
printf("a=%d, b=%d\n", a, b);
printf("max=%d, min=%d\n", *p, *q);
return 0;
}
2,下列函数 int fun(int score[], int m, int below])的功能是:计算score中m个人的平均成绩aver,将低于 aver 的成绩放在 below 中,通过函数返回人数。请填空。
int fun(int score[], int m, int below[])
{
int i.aver.j=0,s=0;
for(i=0;i
for(i=0;i
retum j;
}
3.下列程序功能是:用结构体描述一个学生的情况:姓名,成绩,年级,编写程序输入10个人的情况,为每个人成绩增加10%,年级增加1年级,并输出修改后的结果。请填空。
#include
struct staff {
char name[10];
float score;
int grade;
} s[10];
int main() {
int i;
for (i = 0; i < 10; i++) {
printf("请输入: ");
printf("第%d个学生姓名:", i + 1);
scanf("%s", ______);
printf("成绩:");
scanf("%f", &s[i].score);
printf("年级:");
scanf("%d", &s[i].grade);
}
printf("修改后:\n");
for (i = 0; i < 10; i++) {
printf("第%d个学生姓名:%s %f %d\n", i + 1, s[i].name, s[i].score, s[i].grade);
}
return 0;
}
四、编程题(本大题共3小题,每小题15分,共45分。请在答题纸的相应位置上作答。)
1.编写程序,输入两个正整数m和n,求其最大公约数和最小公倍数。
(1)求最大公约数和最小公倍数要求分别用函数实现:
(2)编写主函数输入,调用函数,输出。
2.编写程序,利用ex=1+x+x2/21+x3/31+x4/41+…计算e的近似值,要求误差小于10^-6