C语言—每日选择题—Day43

第一题

1. 使用malloc系统调用分配的内存是在什么上分配的?

A:栈

B:堆

答案及解析 B

malloc开辟的空间都是在堆上申请的内存空间,但是我们平常定义的定长数组之类的,都是在栈上开辟的空间;

第二题

2. C语言中,在头文件正常引用的情况下,执行后,输出结果为

printf("%5s", "abcdefg");

A:abcde

B:abcdefg

C:cdefg

D:输出错误信息

答案及解析 B

首先要知道printf可以自动识别字符串类型,所以这跟我们上面定义一个字符串,然后再输出没有区别,%ns,n大于字符串长度,在右边会自动补空格,如果n小于字符串长度的话,输出原来的字符串,一句话总结:大了补空格,小了无影响;

具体博客:C语言printf格式化打印(%d、%md、%f、%c、%s、%o、%x、%p、%e、%E、%n等)-CSDN博客

第三题

3. 下面程序输出的是:

#include <stdio.h>
#define f(x) x*x
int main ()
{
    int a=5,b=2,c;
    c=f(a)/f(b);
    printf("%d",c);
    return 0;
}

A:6.25

B:6

C:24

D:25

答案及解析 C

依旧是#define的替换,每次其实看到这个题的时候,都不想写进去,因为我们可以自己手动加括号,但是为了题,所以还是要做;

#define是 替换,不要自己脑海中加括号哦~

第四题

4. 结果为 j 字符的表达式是()

char *p[]={"Shanghai","Beijing","Honkong"};

A:*p[1] +3

B:*(p[1] +3)

C:*(p[3] +1)

D:p[3] [1]

答案及解析 B

这里p是一个指针数组的类型,大家可以试着自己画一画图,就一目了然了。如果有需要解释这个题,评论说一下就好啦

第五题

5. 对于下面代码段,正确的赋值语句( )

char a[5], *p=a;

A:p="abcd";

B:a="abcd";

C:*p="abcd";

D:*a="abcd";

答案及解析 A

CD错:因为字符串默认出现,就是指首元素的地址,所以我们在这里不可以对a和p解引用,这属于类型不匹配;

A:正确,p是一个char类型的指针,开始时指向的是a这个字符数组,之后完全可以改变指向,去指向"abcd"这个常量字符串;

B:错误,因为a是数组的首元素地址,首元素的地址是一个常量,所以不可以被改变,也就是说a的类型是 char * const;指向不可以被改变,但是内容可以被改变;

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

终将向阳而生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值