C语言:以下程序段的输出结果是 (求详细解答)

C语言:以下程序段的输出结果是 (求详细解答),第1张

我用x86 32位 Linux的GCC编译器编译

结果:

28 70

分析:

main()

{int x, i;

for(i=1; i<=100; i++) //变量i,1到100循环

{ x=i; //x被赋值 x=i

if(++X%2==0) //x先被加一 x=i+1 判断此时x的值是否被2整除

if(++X%3==0) //x先被加一 x=i+2 判断此时x的值是否被3整除

if(++X%7==0) //x先被加一 x=i+3 判断此时x的值是否被7整除

printf("%d ",X); //如果以上判断全通过,即i+1, i+2, i+3的值分别被2,3,7整除,则打印x(此时x的值等于i+3)

}

printf("\n");

}

这个题主要考 “x++” 与 “++x”的区别

x++,先取出x的值,再x=x+1

++x,先x=x+1,再取出x的值(与(x=x+1)效果一致)

这里%d格式的作用是以十进制整数的形式输出变量。 %2d表示输出的变量列宽为2。如果这里的列宽值小于实际变量列宽,输出时就会自动补全,即以实际为准。 如本题D的情况。 如果列宽值大于实际,就左端补空格。如:a=2 用 %5d输出。会输出:“ 2”,左边是四个空格。

1 数组a的定义,实际使得

a[][4]={{1,0,0,0}, {2,0,0,0}, {3,0,0,0}, {4,0,0,0}};

并且c语言中除号/,如果被除数和除数都是整数,进行的是整除。

所以循环中使用了每个数组a中的元素进行的是整除,0/2当然还是0,1/2也是0,2/2为1,3/2为1,4/2为2。

k是把所有的整除结果累加起来,那么其实就只有1+1+2=4。

因此第一个输出4

2 strlen是获取字符串的长度的,字符串以‘\0’结尾。

str是一个字符数组,并被赋予了一个字符串作为它的值。这个字符串中'\\'表示一个'\'符号,'\012'表示8进制12所代表的字符,‘\t’表示制表符。

所以数一下这个字符串中‘\0’前的字母和特殊字符总共是9。

sizeof函数是获得数组的总大小,定义的是str[50],所以值是50。

因此第二题结果是9,50

x = 127, x = 127, x = 177, x = 7f

前面四个x的输出结果是这样的。

首先,x = 0177是八进制数177

x = %3d 表示以十进制输出,右对齐,占三个位置

x = %6d 表示以十进制输出,右对齐,占六个位置,所以前面空了三个 x = 127

x = %6o 表示以八进制输出,右对齐,占六个位置

x = %6x 表示以十六进制输出,右对齐,占六个位置

最后一个不是很清楚,估计也是按十六进制输出吧。

希望能帮到你~!

D

A g-c 7-3 =4 而数字4在下标3

B 同上 数字4下标是3

C 差值1

D 小写d ascii码 100 c被赋值为小写a 因此 小写a ascii码97 差值3 可以访问到下标3 也就是数字4

A对 字符数组赋值可以不用&,用了也是对的

B错 只有一个指针,但是这个指针并未指向可用的空间。

C错 虽然程序运行没问题,但是这样做是从s[2]开始写入s[0]和s[1]是随机值

前面0~1元素的数据不确定会导致后面不能完整用str索引 ,获取不到正确值

D错 str是什么,如果前面初始化为char str[20],也是错的,因为p[2]是一个字符,不是地址

所以A对,C的话 可以运行,但是获取的值不对,看你怎么认为该选项对不对了

望采纳

以上就是关于C语言:以下程序段的输出结果是 (求详细解答)全部的内容,包括:C语言:以下程序段的输出结果是 (求详细解答)、以下程序段的输出结果是___D__。、以下程序段的运行结果是等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zz/9506220.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存