• C_9练习题


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

    1. C语言程序中,要使用数学库函数(例sqrt、sin等),需要在程序最前面加上包含文件的预处理命令()。

    A. #include
    B. #include
    C. #include
    D.不需要加什么

    2下面四个选项中,均是不合法的用户标识符的选项是()

    A.A、P_0、do
    B. float 、1a0、A
    C.b-a、goto、int
    D._123、temp、INT

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

    A. C语句必须在一行内写完
    B. C程序中的每一行只能写一条语句
    C.C语言程序中的注释必须与语句写在同一行
    D. C语句必须以分号结束

    4.下面四个选项中,均是合法整形常量的选项是()

    A.160、-O、011al
    B.-Oxcdf、01a、Oxe
    C.-01、986,012、0668
    D.-0x48a、2e5、0x

    5.如果变量 x、y已经正确定义,下列哪个选项的语句不能正确将x、y的值进行交换()。

    A. x=x+y, y=x-y, x=x-y;
    B. t=x, x=y; y=t;
    C. t=y, y=x, x=t;
    D. x=t, t=y, y=x;

    6,下列运算符中,优先级最低的是()

    A.*
    B.=
    C.==
    D.%

    7.执行printf(“%f”,(x=3,y=5,x>y?1:1.5);后的输出结果是()

    A.语法错误
    B.1
    C. 1.5
    D.1.500000

    8.设a=1,b=2,c=3,d=4,则表达式:a

    A.1
    B.2
    C.3
    D.4

    9.设字符型变量x的值是064,表达式-x><28x的值对应的8进制值是()。

    A. 333
    B. 0333
    C. X333
    D.020

    10.若变量已正确定义,执行scanf(“%d%c%f”,&opl,&op,&op2);输入()之后,op1的值为1,op的值为’*,op2的值为2.0。

    A.12.
    B.1
    2
    C.1 2.0
    D.1
    2

    11.有如下程序:

    #include 
    
    int main() {
        int a = 2, b = -1, c = 2;
    
        if (a)
            if (b < 0)
                c = 0;
            else
                c++;
    
        printf("%d\n", c);
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    该程序的输出结果是()

    A.0
    B.1
    C.2
    D.3

    12.以下正确的描述是()

    A. continue语句的作用是结束整个循环的执行
    B.只能在循环体内和switch语句体内使用break语句
    C.在循环体内使用break语句或continue语句的作用相同
    D.从多层循环嵌套中退出时,只能使用 continue语句

    1. 假定char类型变量占用1个字节,且数组定义如下char str[81];,则数组str在内存中所占字节数是()

    A.0
    B.10
    C. 80
    D.81

    14.以下关于二维数组初始化的说法,正确说法的个数是()。
    (1)语句int a[2][3]=(0);能将 int型数组a中的每个元素全部初始化为0。
    (2)语句int a[2][3]=0;能将int型数组a中的每个元素全部初始化为0。
    (3)语句int a[2][3];能将int型数组中a的每个元素全部初始化为0。
    (4)语句int a[2][3]={{1.2].(3.4),(5.6}]:能将 int型数组元素a[0][0],a[0][1].a[0][2].a[1][0].a[11]a[1]2]依次初始化为1,2,3,4,5,6。
    (5)语句int a][3]=(1,2,3,4,5,6);能将 int型数组元素a[0][0].a0][1],a[0][2].a[1]10;a111a[1][2]依次初始化为1,2,3,4,5,6。
    (6)语句int a[][3]=[(1,2,3).[4,5,6)];能将int型数组元素a[0][0],a[0][1],a[0][2],a[1][0],a[1][1].a[1][2]依次初始化为1,2,3,4,5,6。

    A.1
    B.2
    C. 3
    D.4

    1. 下面描述正确的是()

    A.两个字符串所包含的字符个数相同时才能比较字符串
    B.字符个数多的字符串比字符个数少的字符串大
    C.字符串“STOP”和“STOP”相等
    D.字符串“That”小于字符串“The”

    1. 下面程序运行后的输出结果是()。
    #include 
    
    int x, y;
    
    void Fun() {
        int a = 18, b = 16;
        x = x + a + b;
        y = y + a - b;
    }
    
    int main() {
        int a = 9, b = 8;
        x = a + b;
        y = a - b;
    
        Fun();
    
        printf("%d, %d", x, y);
    
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    A.51,3
    B.34,2
    C. 17,1
    D.前面都不正确

    17.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()

    A.函数调用可以作为独立的语句存在
    B. 函数调用可以作为一个函数的实参
    C.函数调用可以出现在表达式中
    D.函数调用可以作为一个函数的形参

    18,若有以下说明,且0<=i<10,则对数组元素的错误引用是(int a]= (0,1, 2,3,4,5, 6,7, 8,9), *p= a, i;

    A.*(a+i)
    B. a[p-a+i]
    C. p+i
    D. *(&a[i)

    19.设有如下定义,则对data中的a成员的正确引用是(struet sk{ int a; float b;} data, *p=&data;

    A. (*p).data.a
    B. (*p).a
    C. p->data.a
    D. p.data.a

    20,已有定义int k=2; int *ptrl, *ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是()

    A. k= *ptrl +*ptr2;
    B. ptr2 = k;
    C. ptrl =ptr2;
    D.k=ptrl(*ptr2);

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

    #include 
    
    void main() {
        int count = 0, s = 0, new_number = 0, L_number, digit, number;
    
        printf("Enter a number: ");
        scanf("%d", &number);
    
        L_number = number;
    
        if (L_number < 0)
            L_number = -L_number;
    
        do {
            digit = L_number % 10;
            s = s + digit;
            new_number = new_number * 10 + digit;
            count++;
    
            printf("%d#%d#%d#%d\n", count, digit, s, new_number);
    
            L_number = L_number / 10;
        } while (L_number != 0);
    }
    //输入907
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    2_____

    #include 
    
    int fun(int x, int y) {
        static int m = 0, i = 2;
        i += m + 1;
        m = i + x + y;
        return m;
    }
    
    void main() {
        int j = 1, m = 1, k;
    
        k = fun(j, m);
        printf("%3d", k);
    
        k = fun(j, m);
        printf("%3d", k);
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    3______

    #include 
    #include 
    
    int main() {
        char str1[20] = "your name is: ";
        char str2[10];
        int i = 0, j;
    
        j = strlen(str1);
        printf("Please input your name: ");
        gets(str2);
    
        while (str2[i] != '\0') {
            str1[j] = str2[i];
            i++;
            j++;
        }
    
        str1[j] = '\0';
    
        puts(str1);
    
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    4————————

    #include 
    
    int main() {
        int i;
        char a[4][6] = {"one", "two", "three", "four"};
        char *p[4], **s = p;
    
        for (i = 0; i < 4; i++)
            p[i] = a[i];
    
        printf("%c", *(*a + 1));
        printf("%c", **++s + 2);
        printf("%c", (*(p + 2))[3]);
    
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    5_______

    #include 
    
    struct stu {
        int num;
        char name[10];
        int age;
    };
    
    void fun(struct stu *p) {
        printf("%s\n", p->name);
    }
    
    int main() {
        struct stu students[3] = {
            {1001, "Zhang", 20},
            {1002, "Wang", 19},
            {1003, "Li", 18}
        };
    
        fun(students + 2);
    
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    三、程序填空题(共35分。请将答案填写在答题纸的相应位置上。)
    1.使用递归函数实现字符串的逆序输出。如输人abe,输出cba

    #include 
    
    void reverse_str(char *p);
    
    int main() {
        char str[80];
        gets(str);
        reverse_str(str);
        return 0;
    }
    
    void reverse_str(char *p) {
        char *q;
        q = p;
    
        if (——————————) {
            q=p+1;
            ——————————
            ——————————
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    2.输入一个非负整数,从高位开始逐位分割并输出它的各位数字。例如,输入9837,输出 9 8 3 7

    #include 
    
    int main() {
        int digit, number, pow, t_number;
        scanf("%d", &number);
        
        t_number = number;
        pow = 1;
    
        while (__________) {
            pow =________;
            t_number = t_number / 10;
        }
    
        while (pow >= 1) {
            digit = ________;
            number = ________;
            pow = pow / 10;
            
            printf("%d ", digit);
        }
    
        printf("\n");
    
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    四、编程题(本大题共2小题,1小题15分,2小题30分,共45分。请在答题纸的相应位置上作答。)
    1.为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。编写程序计算电费。输入某用户的月用电量(单位:千瓦时)。输出该用户应支付的电费(元),结果保留两位小数;若量用电量小于0.则输出"Invalid Value!"。

    2、数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和 19都是素数。编写程序验证

    3.无记名投票统计。下面给出了main)函数,请将其他函数补充完整,即写出i void vinput(int nint vD和 void prtResult(int n,int plint v)函数的定义
    。#include
    #define NUM 20
    void vInput(int n,int v[D;/
    将n个人的投票结果保存到数组v中:
    void prtResult(int n,int p.int v[]);
    /*将n个投票结果,响]按候选人pli]进行统计,并输出投票结果:
    void main()
    {
    int vote[NUM);
    static int candidate[4]=(0);/候选人的初始票数均为0/
    printf(“请对 3个候选人投票:n”);
    vInput(NUM,vote);/*将投票结果保存到数组 vote 中prtResult(NUM,candidate,vote);/统计的票数并输出投票结果
    }

  • 相关阅读:
    DNS服务器典型配置
    Ae 效果:CC Page Turn
    HTML批量文件上传方案——图像预览方式
    如虎添翼?微软OneNote迎来新利器
    如何通过副业挣到更多的钱?
    [云] 大数据分析栈(Big Data Analytics Stack)+ Apache Hadoop分布式文件系统(HDFS)+Apache Spark
    2.4 PE结构:节表详细解析
    观影笔记 |独行月球
    面向过程程序设计——循环结构程序设计(1)
    JoySSL:免费SSL证书的新选择
  • 原文地址:https://blog.csdn.net/weixin_47431459/article/details/134416178