C_6练习题

一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)

1,若变量已正确定义并赋值,表达式()不符合 C 语言语法

A. a*b/c;
B. 3.14%2
C. 2, b
D. a/b/c

  1. 在 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型变量

  1. 以下描述中正确的是()

A. 由于 do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B.do-while循环中,根据情况可以省略while
C. 在 doswhile 循环体中,必须有能使循环退出的操作:
D.doewhjle循环电do开始,用while结束,在while(表达式)后面不能写分号

  1. int a[10];合法的数组元素的最小下标值为()

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; }

  1. char al[]=“abc”,a2[80]-“1234”;将a1串连接到a2串后面的语句是()

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. 循环体语句执行一次

  1. 有如下程序,该程序的输出的结果是()

#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

  1. 有如下程序段int *p=&a,a=10 ,b=1;a=*p+b;执行该程序段后, a的值为()
    A. 12
    B. 11
    C. 10
    D.编译出错

  2. 有程序段
    #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 if(②) below[j++]=score[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

  1. 编写程序,判断是否是回文数(回文数:数字对称,如 12321,123321 是回文数)。

你可能感兴趣的:(2模拟2C,c语言,算法,数据结构)