c进阶测试题(上)

简介: c进阶测试题(上)

选择题

1.请问该程序的输出是多少(C)

#include<stdio.h>
int main(){
 unsigned char i = 7;
 int j = 0;
 for(;i > 0;i -= 3){
++j;
 }
printf("%d\n", j);
 return 0;
}

A. 2

B. 死循环

C. 173

D. 172

首先unsigned char型是不会为负数,那这个题的意思就是看i=7是一直进行-3操作,j++,打印j,最后i=0,此时j等于几,那么我们直接来分析一下。

就是这样一个循环那么i=7进行减等操作,即为n个256+7整除3即可(n为最小值,0也是一个数,不要忽略了),得出的答案是173。

2.以下程序运行时,若输入1abcedf2df<回车>输出结果是(C)

#include <stdio.h>
int main() {
 char a = 0, ch;
 while ((ch = getchar()) != '\n') {
 if (a % 2 != 0 && (ch >= 'a' && ch <= 'z')
  ch = ch - 'a' + 'A';
 a++;
 putchar(ch);
 }
 printf("\n");
 return 0;
}

A. 1abcedf2df

B. 1ABCEDF2DF

C. 1AbCeDf2dF

D. 1abceDF2DF

所以在1,3,5,7,9下标的字母会变成大写。

3.以下哪个选项一定可以将flag的第二个bit置0(A)

A. flag&=~2

B. flag|=2

C. flag^=2

D. flag>>=2

这个就不过多解释了,很简单的一道题,如果不清楚可以看作者的原反补码

4.下面两个结构体

struct One{
double d;
char c;
int i;
}
struct Two{
char c;
double d;
int i;
}

在#pragma pack(4)和#pragma pack(8)的情况下,结构体的大小分别是(C)

A. 16 24,16 24

B. 16 20,16 20

C. 16 16,16 24

D. 16 16,24 24

我们先看pack为4 的情况

这个是结构体1的情况,默认对齐数是4,所以每个变量放到4的整数倍即可,可以知道此时的结构体内存大小是16

这个是结构体2的情况

因为默认对齐数是4,所以每个变量放到4的整数倍即可,可以知道此时的结构体内存大小是16

接下来看pack为8的情况:

结构体1:

依然是16

结构体2:

用了19个字节,应该为8的整数倍所以是24.

目录
相关文章
|
5月前
|
C语言 C++ 编译器
C++入门攻略
C++入门攻略在代码中引用的格式:类型& 引用变量名(对象名) = 引用实体; 5.2 引用的特性: #include<stdio.h>
C++入门攻略
|
C++
c进阶测试题(下)
c进阶测试题(下)
87 0
|
移动开发 前端开发 Linux
进阶攻略|前端完整的学习路线
进阶攻略|前端完整的学习路线
217 0
|
弹性计算 数据安全/隐私保护
小白初体验阿里云飞天加速计划
本人农校大四学生,在无意间通过网友分享了解到阿里云有飞天计划,免费领用ecs学习服务器体验,目前主要学习的是一些基础操作,重置密码,建立连接,看开放了那些端口等等,具体的使用和实例还未完全想好怎么做,感想阿里云给出的免费学习机会!
小白初体验阿里云飞天加速计划
|
弹性计算 Apache 数据安全/隐私保护
新手小白的ECS之路
一些ECS使用体验以及感想
100 0
新手小白的ECS之路
|
数据安全/隐私保护
阿里云入门使用
设置阿里云服务器登录密码
85 1
阿里云入门使用
|
监控 开发工具 C#
一个小白的阿里云初体验
我利用阿里云服务器完成了我的摄像头远程监控。可以在远程观察内网里的视频。
|
弹性计算 Java Docker
冬季实战营第一期:从零到一上手云服务器,直播课学习心得
冬季实战营第一期:从零到一上手云服务器
128 0
冬季实战营第一期:从零到一上手云服务器,直播课学习心得
|
弹性计算 关系型数据库 MySQL
ECS七天实践进阶训练营第三天学习
ECS七天实践进阶训练营第三天学习
191 0
ECS七天实践进阶训练营第三天学习