本文介绍: 1. 有以下说明语句:则下面引用形式错误的是()A:p->numD:(*p).num

第一题

1. 有以下说明语句:则下面引用形式错误的是()

struct Student 
{
    int num;
    double score;
};
 
struct Student stu[3] = {{1001,80}, {1002,75}, {1003,91}}
struct Student *p = stu;

A:p->num

B:(p++).num

C:(p++)->num

D:(*p).num

答案解析 B

本题考查的是对结构变量如何引用,如果是结构定义对象,用 ‘ -> ‘;如果是结构体的指针,就用 ‘ . ‘ ;

A:p是一个结构指针指向的是一个结构数组的首元素,所以p->num,拿到的是首元素的num = 1001;

B:p++还是一个结构体指针不可以用 ‘ . ‘;

C:正确,p++是后置++,返回的是++之前的值,所以取到的是首元素的num

D:解引用之后才是结构体的对象使用 ‘ . ‘来访问,取到的是首元素的num = 1001

第二题

2. 以下程序运行结果是()

#include <stdio.h&gt;
#define X   5
#define Y   X+1
#define Z   Y*X/2
int main() 
{
    int a = Y;
    printf("%d,%d", Z, --a);
    return 0;
}

A:7,6

B:12,6

C:12,5

D:7,5

答案解析  A

本题考查的是宏定义替换,所以

a = –Y = –X + 1 = 4 + 1 = 5;

Z = Y * X / 2 = X + 1 * X / 2 = 5 + 1 * 5 / 2 = 7;

所以

a = 5;

Z = 7;

第三

3. 不能把字符串“HELLO!”赋给数组b语句是()

A:char b[10] = {‘H’,’E’,’L’,’L’,’O’,’!’,”};

B:char b[10];  b = “HELLO!”;

C:char b[10];  strcpy(b,”HELLO!”);

D:char b[10] = “HELLO!”;

答案解析 B

A CD都是正确赋值;但是我们知道b是数组名数组名是首元素的地址,是一个常指针不可以被改变,所以错误;b的数据类型char * const可以改变数组内容,但是不能改变数组地址

第四题

4. 下面C程序输出结果是()

unsigned fun(unsigned num) 
{
    unsigned k = 1;
    do 
    {
        k *= num % 10;
        num /= 10;
    } while (num);
    return(k);
}

int main() 
{
    unsigned num = 26;
    printf("%d", fun(num));
    return 0;
}

A:12

B:无限循环

C:1

D:26

答案解析 A

单独的unsigned指的是unsigned int类型

符号整数,永远是大于等于0;

第一次进入循环

k = 6 num = 2

第二次进入循环

k = 12 num = 0;

num = 0的时候结束循环返回k = 12

第五题

5. 以下代码输出结果是()

int main() 
{
    int n = 10;
    int const *p = &amp;n;
    p++;
    printf("%d", *p);
    return 0;
}

A:10

B:11

C:随机

D:编译错误

答案解析 C

int const *p = &amp;n; const是在*的左侧,修饰的是p指向内容不能被修改,所以p++之后,p指向的是n下面的地址处,这里存储的值是未知的,所以是随机值。

原文地址:https://blog.csdn.net/2302_76941579/article/details/134819143

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_48112.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注