求解:07年4月2级C语言填空17题

求解:07年4月2级C语言填空17题,第1张

既简洁又清晰的分析:

由s1=s2=(char*)malloc(sizeof(char))语句可知s1,s2指向同一地址,赋值语句

*s1=15

*s2=20

都被赋值在同一内存地址中,所以*s2的值将覆盖住*s1的值,即*s1=20;所以

m=*s1+*s2=20+20=40;

你不妨将*s1=15*s2=20语句顺序对调一下,其输出结果应为30。

malloc一块size为sizeof(char)的内存占一个字节,也即八个比特,所以整型值赋给字符类型时在内存中是以二进制形式存储的,只对其低八位字节参与处理。所以不仅可以装两位数,3,4,5,6。。位都能装,不过只是对其二进制的低八位参与处理。

1、给以下程序输入3个数值给a,b,c,变量b中的值给a,变量c中的值给b,变量a中的值给

c,交换后输出a,b,c的值。

#include <stdio.h>

main()

{int a,b,c__n___

printf("enter a,b,c")scanf("%d%d%d",&a,&b,&c)

____n = a________a = b_______b = c________c = __n___

printf("%d%d%d",a,b,c)

}

2、求出200以内的整数中,最大的可以被17整除的数是哪个数。

#include <stdio.h>

___1_void main (void)__

{int i;

for(___i = _200______i >0____i--)

{if(___!(_i % 17_)__)break}

printf("%d\n",____i_____)

}

3,以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们的和。

main()

{int i,a[20],sun,count

sum=count=0

for(i=0i<20i++)scanf("%d",___&a[i]___)

for(i=0____i <20____i++)

{if(a[i]>0)

{count++

sum+=___a[i]____

}

}

printf("sum=%d,count=%d\n",___sum____,___count____)

}

4,以下程序的功能是调用函数fun计算:m=1+2+3+4+5+6+7+8+9+10,并输出结果。

int fun(int n)

{int m=0,i

for(i=___1___i<=n____i++____)

{

m=____m + i____

}

return___m____

}

main()

{printf("m=%d\n",__fun(10)____)}

5,以下程序将数组中的数据按逆序存放

#include <stdio.h>

#define SIZE 12

main()

{int a [SIZE],i,j,t

for(i=0i<SIZEi++) scanf("%d",__&a[i]__)

i=0j=____11____

while(i<j)

t=a[i]___a[i] = a[j]______a[j] = t____i++j--__}

for(i=0i<SIZEi++)printf("%3d",a[i])

printf("\n")

}

第一题:9/10=0(因为是整形)m和n各加一次,m=1,n=1,i=10. 10/10=1 ,k=1,n=2

继续执行循环体 ,i=1111/10=1,执行 default k++即k加一次为2, n加一次n=3 结束循环体 输出1,3,2

第二题:判断15/3=0 为假,continue x=16 ,16/3=5 所以为真 又因为x++ break(结束整个循环体) 所以x=17 输出结果为17


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

原文地址:https://54852.com/yw/12001943.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存