C练习题13

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

1.结构化程序由三种基本结构组成、三种基本结构组成的算法是()

A.可以完成任何复杂的任务

B. 只能完成部分复杂的任务

C. 只能完成符合结构化的任务

D. 只能完成一些简单的任务

  1. 以下名字,不能作为C 语言标识符的是()

A. name

B. ab_c

C.student-2

D. name

  1. 在一个C程序中,()

A. main 函数必须出现在固定位置

B. main 函数可以出现在任何地方

C. main 函数必须出现在所有函数之前

D.main函数必须出现在所有函数之后

4,以下选项中,非法的字符常量是()

A.' Y'

B. '\77'

C. "n"

D. 't'

5.设x、 y、t均为int型变量,则执行语句: x=y=0;E+xl++y;后, y的值为()

A. 不定值

B.0

C. 1

D. 2

  1. 下面的程序段将输出(int a=5,b=-3, c;c=a%b;printf("%dn", c);

A. 1

B. -1

c. 2

D. -2

  1. 设有如下定义: int ix=10,iy=3,iz;则语句 print("%din",iz-(ix%iy,ix/iy));的输出结果是()

A.I

B. 2

C. 3

D. 4

8.在下图中,阴影部分区域可用表达式()来表示。

A. (x<=a)&&(x>=b)&&(x<=c)

B. (x<=a)(b<=x<=c)

C. (x<=a)l(x>=b)&&(x<=c)

D. (x<=a)&&(b<=x<=c)

9若a是32-位int类型变量,判断其32个2进位中末两位均为1的表达式为()

A a&3=3

B. a&3=11

C. a&i1=3

D. a&l1=11

  1. 如果下面程序运行结果是 i=12.5,j=4.0,从键盘应输入()。
c 复制代码
#inctude"stdio.h"
int main(){
 float ij;
 scanf("i=%fj=%f",&i,&j);
 printf("i=%fj=%fn",ij); 
 return 0;
 }
 

A. 12.5 4.0

B. i=12.5 j-4.0

C. i=12.5 j=4

D. i=12.5.j=4

11.下列程序的运行结果是()

c 复制代码
#include <stdio.h>

int main() {
    int a, b, c;

    a = 20;
    b = 30;
    c = 10;

    if (a < b) {
        a = b;
    }

    if (a >= b) {
        b = c;
        c = a;
    }

    printf("a=%d, b=%d, c=%d\n", a, b, c);

    return 0;
}

A. a=20, b=10,c=20

B. a=30, b=10, c=20

C. a=30,b=10, c=30

D. a=20, b=10,c=30

  1. 设有以下定义;
    char *cc[2]={"1234","5678");则正确的叙述是()

A.cc 数组的两个元素中各自存放了字符串"1234"和"5678"的首地址素

B.cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址

C. cc是指针变量,它指向含有两个数组元素的字符型一维数组

D. cc数组元素的值分别是"1234"和"5678"

13.以下程序的运行结果是()。

c 复制代码
#include <stdio.h>

int main() {
    int p[7] = {11, 13, 14, 15, 16, 17, 18};
    int i = 0, k = 0;

    while (i < 7 && p[i] % 2) {
        k = k + p[i];
        i++;
    }

    printf("%d\n", k);

    return 0;
}

A. 58

B. 56

C. 45

D. 24

  1. 以下数组定义中错误的是()

A. int x[][3]={0};

B. int x[2][3]={{1,2},(3,4},{5,6)};

C. intx[][3]={{1,2,3},(4,5,6)};

D. int x[2][3]=(1,2,3,4,5,6};

15.以下哪一种对于str 的定义不恰当,有可能使 strlen(str)获得非预期的结果()

A. char str[]="hello world!";

B. char str[100]="X";

C. char str[4] = "abcd";

D.char str[6]= {65, 66, 67, 68, 69, 0};

16.在一个C源程序文件中,如要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是()

A. extern

B. register

C. anto

D. static

17.以下对 C 语言中函数的有关描述正确的是()

A.调用函数时只能把实参的值传送给形参,形参的值不能传送给实参,

B.C函数既可以嵌套定义又可以递归调用。

C.函数必须有返回值,否则不能使用函数。

D. 程序中有调用关系的所有函数必须放在同一个源程序文件中。

18 下列不正确的定义是()

A. int*p,t

B. int i,p=&i;
C. int
p=&i,i;

D. int i,*p;

19下列程序的输出结果是

c 复制代码
#include <stdio.h>

#define F(X, Y) ((X) * (Y))

int main() {
    int a = 3, b = 4;
    printf("%d\n", F(a++, b++));

    return 0;
}

A12

B. 15

C.16

D. 20

20,以下哪个选项中的p不是指针变量()

A. intp;

B. int §[5];

C. imt *p[6];

D.char name[20];int age;}*p, q;

二、程序阅读题(本大题共 5 小题,每小题 6分,共 30 分。请将程序的运行结果填写在答题纸的相应位置上。)

c 复制代码
#include <stdio.h>

void main() {
    int i;
    char str[] = "student";

    for (i = 0; i <= 3; i++) {
        switch (i) {
            case 0:
                printf("%c ", str[i]);
                // No break statement, falls through to the next case
            case 1:
                printf("%c\n", str[i]);
                break;
            case 2:
                printf("%s\n", str);
                break;
            default:
                printf("***");
        }
    }
}
c 复制代码
#include <stdio.h>

void main() {
    int a[4][4] = {
        {1, 2, -3, -4},
        {0, -12, -13, 14},
        {-21, 23, 0, -24},
        {-31, 32, -33, 0}
    };

    int i, j, s = 0;

    for (i = 0; i < 4; i++) {
        for (j = 0; j < 4; j++) {
            if (a[i][i] < 0) {
                continue;
            }
            
            if (a[i][j] != 0) {
                break;
            }

            s += a[i][0];
        }
    }

    printf("%d\n", s);
}
c 复制代码
#include <stdio.h>

void fun(int a[], int n, int k) {
    int i;

    for (i = n - 2; i >= k; i--) {
        a[i + 1] = a[i];
    }
}

int main() {
    int a[] = {1, 2, 3, 4, 5, 6};
    int i;

    fun(a, 6, 2);

    for (i = 0; i < 6; i++) {
        printf("%d,", a[i]);
    }

    return 0;
}
c 复制代码
#include <stdio.h>

void fun(char al[], char a2[], int n) {
    int k;

    for (k = 0; k < n; k++) {
        a2[k] = (al[k] - 'A' - 3 + 26) % 26 + 'A';
    }

    a2[n] = '\0';
}

int main() {
    char s1[5] = "ABCD", s2[5];

    fun(s1, s2, 4);
    puts(s2);

    return 0;
}
c 复制代码
#include <stdio.h>

struct st {
    int x;
    int *y;
} *p;

int dt[4] = {10, 20, 30, 40};

struct st a[4] = {
    {50, &dt[0]},
    {60, &dt[1]},
    {70, &dt[2]},
    {80, &dt[3]}
};

void main() {
    p = a;

    printf("%d, ", ++p->x);
    printf("%d, ", (++p)->x);
    printf("%d\n", (*p->y)++);
}

三、程序填空题(每空 5分,共35分。请将答案填写在答题纸的相应位置上。)1,猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾又多吃了一个。第二天早上有将剩下的挑子吃掉一半,又多吃了一个,后每天早上都吃了前一天剩下的一半零一个。到第day (通过键盘输入)天早上想再吃时,只剩下一个挑子了。求第一天共摘了多少桃子。输入10,输出为 1534。

c 复制代码
#include <stdio.h>

int main() {
    int day;
    int m = 0;
    int n = 1;

    scanf("%d", &day);

    while (________) {  // Corrected the loop condition
        m = ________;
        n = n + 2;
        ________;
    }

    printf("%d\n", m);

    return 0;
}

2.从键盘输入的一个正整数,求各位数字中最大者。

例如: 1083各位数字中最大者是8.

c 复制代码
#include <stdio.h>

void main(void) {
    unsigned long num, max, t;
    max = 0;
	scanf("%ld",&num);
    do {
       t=_________;
        if (max < t) {
            if(max<t) max=t;
            _________;
        }
    } while (num);

    printf("max=%ld\n", max);
}
  1. 程序功能:将两个字符串连接。
c 复制代码
#include <stdio.h>

void concatenate(char string1[], char string2[], char string[]);

void main() {
    char s1[100], s2[100], s[100];

    printf("Input string1: ");
    scanf("%s", s1);

    printf("Input string2: ");
    scanf("%s", s2);

    concatenate(s1, s2, s);

    printf("\nThe new string is %s\n", s);
}

void concatenate(char string1[], char string2[], char string[]) {
    int i, j;

    for (i = 0; string1[i] != '\0'; i++) {
        string[i] = string1[i];
    }

    for (j = 0; string2[j] != '\0'; j++) {
        _____________;
    }

    string[________] = '\0';
}

四、编程题(本大题共3小题,每小题15分,共45分。请在答题纸的相应位置上作答。)

1.用迭代法求一个数 a的平方根。求平方根的迭代公式为:Xn+1 =(Xn +a/Xn)/2要求前后两次求出的x的差的绝对值小于10-5

  1. 编写程序,计算如下数列的前n 项之和。请将程序补充完整。1, -2, 3, -4, 5, -6, 7, -8,【要求:编写一个求和的函数实现计算,再编写主函数调用,在主函数中输入项数n 的值并传入到计算函数中】
    #include <stdio.h>
    int cal(int n)
    {inti,s-0,f-1; //i为循环控制, s求和, f改变正负号

}

void main()

{ int n;

}

3,用结构体来描述一个学生的成绩情况,内容包括:姓名,学号,C成绩和微机原理成绩。要求对一个班的30个学生的成绩进行统计处理:

(1)计算学生的平均分,并按平均分高低排出名次,打印出姓名。

(2)打印出平均分90分以上和不及格者的名字。

相关推荐
懒大王爱吃狼42 分钟前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
秃头佛爷2 小时前
Python学习大纲总结及注意事项
开发语言·python·学习
待磨的钝刨2 小时前
【格式化查看JSON文件】coco的json文件内容都在一行如何按照json格式查看
开发语言·javascript·json
XiaoLeisj4 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
励志成为嵌入式工程师5 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
捕鲸叉5 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer5 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
Peter_chq5 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
记录成长java7 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
前端青山7 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js