
我用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__。、以下程序段的运行结果是等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)