教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 政务民生 >

C语言习题集(100题)+

来源:网络收集 时间:2026-09-15
导读: 1. i=2;printf(%d,i++);打印出来的数字为? 答案:2 解:i++和++i均为自增表达式,执行完后,i都会加1,均会有i+=1,也就是i=2+1=3的效果。不过,两个表达式的值不同。i++表达式的值为自增1之前i的值。这里也就是2。++i为只增1之后的i的值,也就是3。 因此,

1. i=2;printf("%d",i++);打印出来的数字为?

答案:2

解:i++和++i均为自增表达式,执行完后,i都会加1,均会有i+=1,也就是i=2+1=3的效果。不过,两个表达式的值不同。i++表达式的值为自增1之前i的值。这里也就是2。++i为只增1之后的i的值,也就是3。

因此,i=2;printf("%d",i++);打印出来的数字为2;

i=2;printf("%d",++i);打印出来的数字为3。

2. unsigned char i=0;i--;i为?

答案:255

unsigned char的为1个字节,数据范围从0~255。

i=0已经位于数据范围的下边界,如果再-1,会发生负溢出,溢出至255。 如果i=255,再加1,则会发生正溢出,溢出至0。

类似的情况参考下表

3. signed char i=0;i--;此时i为?

答案:-1

解:参考表1

signed char数据范围从-128~127。

当i=0,i自减1,不会发生溢出。

因此,i=0-1=-1

4. int i;for(i=0;i<100;i--);循环次数为?100

5. int i;for(i=0;i<100;i++);循环结束后,i=?100

解:参考表1

int的范围为-21亿~+21亿

因此,i在0~100的范围内的自增1操作,不会发生溢出。

循环次数计算考虑i的值的变化,i从0变到99,都满足i<100循环执行条件。 当i=99+1的时候,条件被打破,循环推出。

因此,循环推出后i=100

如果没有溢出,则通过以下公式计算

for(i=start;i<end;i++)

循环次数为(end-1)-start+1=end-start(使用等比数列公式:项数=(an-a0)/delta+1 循环结束后i=end

如果没有溢出,则通过以下公式计算

for(i=start;i<=end;i++)

循环次数为end-start+1

循环结束后i=end+1

6. unsigned short i;for(i=0;i<40000;i++);循环次数为?A.40000 B.无穷大

答案:选A

参考表1

unsigned short范围为0~65535,

该循环不会溢出。

等差数列公式

an=a0+(n-1)*delta

n为项数,也就是循环次数

an=39999,a0=0

delta=1

循环次数=(an-a0)/detla+1=(39999-0)/1+1=40000

7. signed short i;for(i=0;i<40000;i++);循环次数为? A.40000 B.无穷大

答案为B

参见表1

signed short数据范围从-32768~32767

循环会溢出

当i=32767的时候,i++使得i溢出到-32768,因此,i永远不可能达到40000。该循环为死循环。

8. float i;for(i=0.0F;i<400000.0F;i+=1.0F);循环次数为A.400000 B.无穷大,答案A

9.float i;for(i=0.0F;i<400000000.0F;i+=1.0F);循环次数为A.400000 B.无穷大,答案B

float有效位数为7,当i=399999的时候,执行i++

399999

+ 1

----------------------------

1加在第6位有效数字上,在7位以内,则不会出现精度不够的情况。

如果是i=399999999.0F,同样执行i+=1.0F

1是加到第9位有效数字上的,会出现精度不够的情况。

具体表现为x+deltax==x

也就是i+=1.0F将不再使i能够继续增大

此时,i永远不会达到400000000.0F,循环成为死循环。

10. printf函数中,%lf对应哪种数据类型?

%lf double

%f float

%d int

%ld long

%c char

%s char s[]

%x 整数以十六进制显示(小写的abcdef)

%X 整数以十六进制显示(大写的ABCDEF)

%u unsigned int

%o 整数以八进制显示

11. a的ASCII码是? 97

12. A的ASCII码是? 65

13. 0的ASCII码是? 48

14. \n的ASCII码是? 10

15. char s[]="123";strlen(s)的值为?3

strlen是string.h中声明的库函数,用于显示字符串中除 \0 以外的字符个数。

16. char s[]="123";sizeof(s)的值为?

sizeof是关键字,用于显示变量或数据类型的字节数。

int a; sizeof(a)为4

sizeof(int)为4

char s[]="123";sizeof(s)的值为数组元素个数*每个元素的字节数=4*1=4

这里数组元素个数应包含末尾的 \0

17. 提前退出循环的关键字是?break;

int i;

for(i=0;i<10;i++)

{

if(i==5)

break;

printf(“%d,”,i);

}

屏幕输出为0,1,2,3,4,

18. 提前结束本次循环的关键字是?continue;

int i;

for(i=0;i<10;i++)

{

if(i==5)

continue;

printf(“%d,”,i);

}

屏幕输出为0,1,2,3,4,6,7,8,9,

19. 有一个关键字可以构造出while循环,该关键字是?

答案可以是goto,也可以是for

以下三个循环的作用是一样的,

都是在屏幕上输出0,1,2,3,4,5,6,7,8,9,

int i;

i=0;

while(i<10)

{

printf(“%d,”,i);

i++;

}

int i;

i=0;

LOOP:

if(i<10)

{

printf(“%d,”,i);

i++;

goto LOOP;

}

int i;

for(i=0;i<10;i++)

{

printf(“%d,”,i);

}

20. 请用宏定义给unsigned int一个别名UINT

#define UINT unsigned int

21. 请用typedef给unsigned int一个别名uint

typedef unsigned int UINT;

注意typedef后面有;

而且两者在别名和原名的顺序上是相反的。

22. 如果要用到printf,需要include哪个头文件?

23. 如果需要用到sqrt,需要include哪个头文件?

printf, scanf, getchar, putchar 使用之前都得#include <stdio.h>

sqrt, sin ,cos 使用之前都得#include <math.h>

strlen使用之前都得#include <string.h>

24. 0x22转化为十进制为___ 34

0x22=2*161+2*160=34

25. 22转化为十六进制

22/16=1 22%16=6

1/16=0 1%16=1

22转化为16进制为0x16

222转化为16进制

222/16=13 222%16=14

13/16=0 13%16=13

14转化为十六进制为E

13转化为十六进制为D

222转化为16进制为0xDE

26. 22转化为二进制数为______(前面的0不要省略,总共写出8位数字) 思路:先转化为16进制,再由16进制转化为2进制。

22转化为16进制为0x16,0x16转化为二进制为00010110

0x22转化为二进制为_____(前面的0不要省略,总共写出8位数字)

0x22转化为二进制为00100010

对于十六进制到二进制的转化

可以现先在草稿纸上写出如下表格,然后查表

27. 0x22转化为二进制为____(前面的0不要省略,总共写出8位数字) 直接查表

0x22=00100010

28. int的上限为多少亿?(写出数字即可,不要带单位)

int范围 -21亿~21亿,见表1

29. 编译程序程序总共有四部,第一步是?A.预处理 B.链接

编译程序程序总共有四部:预处 …… 此处隐藏:7552字,全部文档内容请下载后查看。喜欢就下载吧 ……

C语言习题集(100题)+.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/978304.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)