C+高级语言程序设计 急~~~~~~~~~~~~~~~

麻烦懂的人帮我回答一下以下问题,要有过程,谢谢!!!

设char x=‘a‘;,则printf("x=%c,y=%c\n",x,97);的输出是
A.x=a,y=a B.a=97,b=a C.a=97,y=97 D.x=a,y=97
答案是A 为什么不是D???

以下程序的输出结果是
intd=1;
fun(int p)
{
satic int d=5;
d+=p;
printf("%d",d);
return(d);
}
main()
{
int a=3;
printf("%d\n",fun(a+fun(d)));
}
答案是 6 15 15 我想知道是程序怎么运行得来的???

执行以下程序后输出的结果是
#include<stdio.h>
main()
{
intj,i,k=0,m=0;
for(i=0,i<2.i++)
{
for(j=0,j<3,j++)
k++,k-=j;
}
m=i+j;
printf("k=%d,m=%d\n",k,m);
}
答案是k=0,m=5 k=0我知道是怎么来的,但是m=5是怎么来的我算不出来,我算的m=3,想请懂的人帮帮我!!!!!

问题1:
请注意输出格式 不管是X还是Y输出的都是%c 而%c就是把0-255之间的整数输出成字符,也可以理解成把

ASCII码输出 X=97 然后又给Y了一个97 自然输出的就是两个a了。

问题2:
第一行打错了吧 应该是 int d=1;
首先分析下fun()函数的作用:输入进来的数,然后让这个数加5,打印出来,最后返回计算出来的值的值


下面看整体程序:
最初d=1 a=3 执行了 printf("%d\n",fun(a+fun(d)))这句 注意这里面有两个fun()函数,而且此句本身

就是一个printf语句 所以肯定要打印出来3个数字(因为fun()里面就有打印)。
分开来看第一个执行的是fun(d) !!!注意这个d并不是fun()函数定义里面的d,两者的作用域不同,不理解

的话去看看相关资料。
最初d=1
执行结果是打印了6 然后让d=6
然后执行fun(a+fun(d))部分 因为a=3 所以a+fun(d)整体就是9了 于是执行fun(9)
结果自然就是打印了15 然后d=15 也就是fun(a+fun(d))的返回值
printf("%d\n",fun(a+fun(d))); 就是打印最后的结果 也就是fun(a+fun(d))的返回值,也就是d最后的

数值,也就是15.。。

问题3:
边看边分析吧
初值k=0 m=0
接下来是两个循环
外循环让i为基数 其实就是i=0和i=1各循环一次
内循环让j为基数 其实就是j=0 j=1 和j=2三次
以下开始才是真正执行:
k++ //k=1了
k=k-j //此时k=1 j=0 所以k=1
然后j=1了
k++ //k=2了
k=k-j //这时候k=2 j=1 所以k=1
然后j=2了
k++ //k=2
k=k-j //k=2 j=2 所以k=0
到此为止内循环结束一次
接下来把i=1了再次执行一遍内循环 因为k还是等于0 内循环又和i值无关
所以执行完了第二遍实际上k还是0
最后m=i+j //i=1 j=2 所以m=3

我算的答案和你的一样...

刚看了楼上CX3201的答案 很精辟...高手啊 问题3应该是如他所说 首先把i和j加了1才去判断是否继续循环。。。。所以跳出循环的时候i和j其实已经超过了限制 即i=2 j=3了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-05
设char x=‘a‘;,则printf("x=%c,y=%c\n",x,97);的输出是
A.x=a,y=a B.a=97,b=a C.a=97,y=97 D.x=a,y=97
答案是A 为什么不是D???
因为输出y=%c,要将97转换成字符型。97(ascii)对应的字符是a.同样的道理,字符a对应的整数是97.
第2个回答  2009-04-05
'a'的ASCII码是97, %c是将ASCII码对应字符输出
1+5=6, 9+3+6=15, d=15,static变量的特性
跳出循环是因为判断到i<2和j<3为假,即i==2,j==3
相似回答