C_15练习题

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

  1. C程序是由()构成的。

A.常量

B.变量

C.运算符

D. 函数

  1. 下列合法的标识符是()

A. Case

B. Li-da-yong

C. 3con

D. Sa

3.以下描述不正确的是()

A.宏名无类型

B. 宏替换不占用运行时间

C.宏名必须用大写字母表示

D.宏替换只悬孚符替换

4.以下正确的字符常量是()

A. 412

B. 255

C. 108"

D.''

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

A.若int a=3, b=2,c=1; f=a>b>c;则f值为真

B.若intm=0, n=l,a=1.b=2,c=3;(m=a>b)&&(n=c>4),则n值为真

C.若inta=2,b=3,c=1;c=a/b;则c的值为真

D.若inta=2,b=3;表达式a>b?a:0的值为真

6·定义doubie i=3.5.j=5.5;则表达式(int)i+j的值是()。

A. 9.0

B. 8.5

C.8

D. 8.0

7,若intx=6:则x+=x-x*=x; x的值为()

A.0

B. -60

C. 60

D. -24

8.已有定义"intx=3,y=4,z=S;",则表达式"!(x+y)+z-1 &&y+z/2"的值是()

A. 6

B.0

C. 2

D. 1

  1. 对于循环while(le)语句,le 等价于()

A. e=0

B. e! =0

C. e=

D. e! =1

10,使用"scanf ("X=%fy=%f", &x. &y) ",要使X, y均为1.25,正确的输入是()

A. 1.25, 1.25

B. 1.25 1.25

C. X=1.25,y=1.25

D. x=1.25,y=1.25

11.设变量已正确定义,以下( )与其它switch语句不等价。

A

#include <stdio.h>

int main() {

int op, value1, value2;

// Assume that you have variables value1 and value2 defined somewhere

switch (op) {
    case '+':
        printf("%d\n", value1 + value2);
        break;
    case '-':
        printf("%d\n", value1 - value2);
        break;
    case '*':
        printf("%d\n", value1 * value2);
        break;
    default:
        printf("Error\n");
        break;
}

return 0;

}

B

#include <stdio.h>

int main() {

int op, value1, value2;

// Assume that you have variables value1 and value2 defined somewhere

switch (op) {
    default:
        printf("Error\n");
        break;
    case '*':
        printf("%d\n", value1 * value2);
        break;
    case '-':
        printf("%d\n", value1 - value2);
        break;
    case '+':
        printf("%d\n", value1 + value2);
        break;
}

return 0;

}

C

#include <stdio.h>

int main() {

int op, value1, value2;

// Assume that you have variables value1 and value2 defined somewhere

if (op != '+' && op != '-' && op != '*') {
    printf("Error\n");
} else {
    switch (op) {
        case '+':
            printf("%d\n", value1 + value2);
            break;
        case '-':
            printf("%d\n", value1 - value2);
            break;
        case '*':
            printf("%d\n", value1 * value2);
            break;
    }
}

return 0;

}

D

#include <stdio.h>

int main() {

int op, value1, value2;

// Assume that you have variables value1 and value2 defined somewhere

switch (op) {
    case '+':
        printf("%d\n", value1 + value2);
        break;
    case '-':
        printf("%d\n", value1 - value2);
        break;
    case '*':
        printf("%d\n", value1 * value2);
        break;
}

return 0;

}

12,若变量已正确定义,对以下while循环结束条件的准确描述是()。

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

int main() {
    int flag = 1;
    int denominator = 1;
    double item = 1.0;
    double pi = 0;

    while (fabs(item) > 0.0001) {
        item = flag * 1.0 / denominator;
        pi = pi + item;
        flag = -flag;
        denominator = denominator + 2;
    }

    return 0;
}

A. item的绝对值不大于 0.0001

B. item的绝对值不小于0.0001

C. item的绝对值等于0.0001

D.item的绝对值不等于0.0001

13,若有定义, int a[10];,则对数组a元素的正确引用是()

A. a[10]

B. a[3.5]

C. a(5)

D. a[10-10]

  1. 若有以下说明语句:
    struct date{int year,month,day;}birthday;则下面叙述不正确的是()。

A. struct 是结构体类型的关键字

B. struct date是用户定义的结构体类型名

C. year、 month、day都是结构体成员名

D. bitthday是用户定义的结构体类型名

15,有两个字符数组a,b,则以下正确的输入语句是()

A. gets(a,b);

B. scanf("%s%s",a,b);

C. scanf("%s%s",&a,&b);

D. gets("a").gets("b");

  1. C语言程序中,当调用函数时()

A.实参和形参各占一个独立的存储单元

B.实参和形参共用一个存储单元

C可以由用户指定是否共用储存单元

D.由家统自动指定是否共用存储单元

17,关于语言中的函数,下列说法错误的是()。

A+在不同的函数中不可以使用相同名称的变量。

B.函数中的形式参数是在栈中保存的。

C.在一个函数内定义的变量只在本函数范围内有效。

D.在一个函数内的复合语句中定义的变量在本复合语句范围内有效。

  1. 若变量已正确定义并且指针p已经指向某个变量x,则(*p)+相当于(

A. p

B. x++

C. *(p+)

D. &x++

19.定义下列结构体数组:

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

struct st {
    char name[15];
    int age;
} a[10] = {
    {"ZHAO", 14},
    {"WANG", 15},
    {"LIU", 16},
    {"ZHANG", 17}
};

int main() {
    // Your code logic here

    return 0;
}

执行语句 print["%d,%c",a[2].age, "(a[3].name+2))的输出结果为()。

A. 15, A

B. 16, H

C.16, A

D. 17,H

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

A. *(a+i)

B. a[p-a+i]

C. p+i

D. *(&a[i])

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

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

int main() {
    int m = 14, n = 63;

    while (m != n) {
        while (m > n)
            m = m - n;
        while (m < n)
            n = n - m;

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

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

int main() {
    int a, b, c, d;
    a = c = 0;
    b = 1;
    d = 20;

    if (a)
        d = d - 10;
    else if (!b)
        if (!c)
            d = 25;
        else
            d = 15;

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

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

int main() {
    char s[] = "abaacda", *p, *q, ch = 'a';
    int n = 0;

    for (p = q = s; *p != '\0'; p++)
        ;

    while (*q) {
        if (*q - ch)
            n++;
        if (n == 3) {
            while (p >= q)
                *(p + 1) = *p--;
            *q = 'H';
            break;
        }
        printf("%c", *q);
        q++;
    }

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

struct date {
    int year;
    int month;
    int day;
};

void func(struct date *p) {
    p->year = 2000;
    p->month = 5;
    p->day = 22;
}

int main() {
    struct date d;
    d.year = 1999;
    d.month = 4;
    d.day = 23;

    printf("%d, %d, %d\n", d.year, d.month, d.day);

    func(&d);

    printf("%d, %d, %d\n", d.year, d.month, d.day);

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

int func(int a, int b) {
    int m = i + a + b;
    return m;
}

int main() {
    static int m, i = 2;
    i += m + 1;
    int k = 4, n = 1, p;

    p = func(k, n);
    printf("%d\n", p);

    p = func(k, n);
    printf("%d\n", p);

    return 0;
}

三、程序填空题(每空5分,共35分。请将答案填写在答题纸的相应位置上。)

1,以下程序从键盘接收一个小写字母(不考虑输入错误的情况),将其循环更改为其后第5个位置的字符。如'公变为t,'w'变为℃'。请填空。

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

int main() {
    char ch;
    
    ch = getchar();
    
    if ((ch > 'a') && (ch <= 'u')) {
_________;
    } else {
    _______;
        putchar(ch);
    }

    return 0;
}
  1. 程序功能:输出数组中值为素数的元素下标
c 复制代码
#include <stdio.h>

int IsPrime(int n) {
    int i;
    for (i = 2; i < n; i++) {
        if (_______) {
            return 0; 
            ________;
}

int main() {
    int a[] = {3, 5, 7, 9, 11, 12};
    int i;

    for (_________) {
        if (IsPrime(a[i])) {
            printf("%d ", a[i]);
        }
    }

    return 0;
}

3,下列程序功能是:已知学生的信息由学号和学习成绩构成,函数fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数。请填空。

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

typedef struct {
    char num[10];
    int x;
} STU;

void fun(STU a[], STU m) {
    int j = 0;

    for (int i = 0; i < 5; i++) {
        if (a[i].x < a[j].x) {
            j = i; 
            ------------------------------------;
        }
    }

}

int main() {
    int i;
    STU s[5], k;

    for (i = 0; i < 5; i++) {
        scanf("%s%d", s[i].num, &s[i].x);
    }

    fun(s, k);

    printf("%s %d\n",_________);

    return 0;
}

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

1,编写程序:输入x,计算多项式1-x+xx/2!-xx*x/3!+.的和直到求项的绝对值小于10 的 -6 次方为止

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

3.下面的程序用于从键盘接收一个字符串(假设输入字符串长度在80以内),计算其长度并输出。请将其补充完整。【要求:不允许使用strlen(函数,用字符指针实现。】

#include<stdio.h>

void main){

char s[81],*p:

}

相关推荐
XKSYA(小巢校长)1 小时前
NatGo我的世界联机篇
开发语言·php
Cons.W1 小时前
Codeforces Round 975 (Div. 1) C. Tree Pruning
c语言·开发语言·剪枝
我是哈哈hh1 小时前
专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结
服务器·数据结构·c++·算法·机器学习·深度优先·剪枝
憧憬成为原神糕手1 小时前
c++_ 多态
开发语言·c++
VBA63371 小时前
VBA信息获取与处理第三个专题第三节:工作薄在空闲后自动关闭
开发语言
Tisfy1 小时前
LeetCode 2187.完成旅途的最少时间:二分查找
算法·leetcode·二分查找·题解·二分
挥剑决浮云 -1 小时前
Linux 之 安装软件、GCC编译器、Linux 操作系统基础
linux·服务器·c语言·c++·经验分享·笔记
Mephisto.java1 小时前
【力扣 | SQL题 | 每日四题】力扣2082, 2084, 2072, 2112, 180
sql·算法·leetcode
robin_suli1 小时前
滑动窗口->dd爱框框
算法