C语言题目 拜托写出详细过程

来源:百度知道 编辑:UC知道 时间:2024/06/14 18:12:25
程序运行结果是____
#include<stido.h>
main()
{ int a=28,b;
char s[10], *p;
p=s;
do{b=a%16;
if(b<10) *p=b+48;
else *p=b+55;
p++;
a=a/5;
}while(a>0);
*p='\0';
puts(s);
}

结果是:C51
main函数开始:a=28,p指向数组s[10]的第一个元素即*p就是s[0];

进入第一次do while 循环:
b=28%16=12(%是求余数),接着if条件,不符合b<10条件,所以运行else:*p=b+55=67,刚才说过,*p就是s[0],所以s[0]=67,这里,应该清楚,字符型CHAR 和整型INT 可以通过ASCII码互换,所以,整型67,就代表字符‘C’(查ASCII表)。接着p++,此时,p指向s[1];a=a/5=5(注意,a是整型,做除法时只取整数部分),到此,第一个循环结束,进入第二次循环;

第二次循环:同上面分析,b=a%16=5%16=5(注意,5%16的求余是5!)
*p=b+48=53=s[1],在ASCII中,53表示字符‘5‘;

第三次循环:同上b=a%16=1%16=1;*p=b+48=49=s[2];在ASCII中,49表示字符‘1’。
退出循环,输出数组s。