
由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
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)