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进阶测试题(下)
90 0
|
弹性计算 Apache 数据安全/隐私保护
新手小白的ECS之路
一些ECS使用体验以及感想
101 0
新手小白的ECS之路
|
弹性计算 Linux C#
新手小白在阿里云学生ECS中收获的惊喜
一个大学生怎么能没有一个云服务器呢?这也太好用了吧!
|
弹性计算 Java Docker
冬季实战营第一期:从零到一上手云服务器,直播课学习心得
冬季实战营第一期:从零到一上手云服务器
129 0
冬季实战营第一期:从零到一上手云服务器,直播课学习心得
|
弹性计算 安全 Shell
ECS训练营第五天笔记
创建资源,连接ECS服务器,安装MongoDB,安装Leanote
ECS训练营第五天笔记
|
弹性计算 Linux 网络安全
|
弹性计算 关系型数据库 MySQL
ECS七天实践进阶训练营第三天学习
ECS七天实践进阶训练营第三天学习
192 0
ECS七天实践进阶训练营第三天学习
|
弹性计算
ECS七天实践进阶训练营第二天学习
ECS七天实践进阶训练营第二天学习
444 0
ECS七天实践进阶训练营第二天学习

相关实验场景

更多
下一篇
无影云桌面