请高手帮我解决一下这道C语言题目,谢谢!

下面的程序运行结果为()#include<stdio.h>main(){inta=28,b;chars[10],*p;p=s;do{b=a%16;if(b<10)*p=b... 下面的程序运行结果为( )
#include<stdio.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);
}

A 10 B C2 C C51 D \0

请简略的说一下过程,谢谢!
展开
 我来答
时尚dog仔
2010-07-17 · TA获得超过7.5万个赞
知道大有可为答主
回答量:2.3万
采纳率:100%
帮助的人:5.7亿
展开全部
#include<stdio.h>
main( )
{
int a=28,b;
char s[10],*p;
p=s; //将数组s的首地址即s[0]传给p
do {b=a%16; //28除以16所得余数12赋给b
if(b<10) *p=b+48;//若b小于10则把b+48的值赋给p所指向的数组s的s[当前]中
else *p=b+55;//否则则把b+55的值赋给p所指向的数组s的s[当前]中
p++;//更新指针即p指向s[下一个]
a=a/5;//a整除5
} while(a>0);//a大于0循环
*p='\0';//防止程序出错
puts(s);//输出数组
}

第一轮循环
s[0]=12+55=67='C' a=5
第二轮循环
s[1]=5+48=53='5' a=1
第三轮循环
s[2]=1+48=49='1' a=0
注:s是字符数组,输入时会将int转为ascii码

答案C
teddy_0416
2010-07-17 · TA获得超过556个赞
知道小有建树答主
回答量:335
采纳率:0%
帮助的人:334万
展开全部
do-while整个过程:
b = 12 >>>> *p = 67(该ASCII码 对应字符就是 ‘C’) ====== s[0] = 'C'

a=a/5 >>>> a = 5 > 0; 继续循环体
b = 5; >>>> *p = 53 (该ASCII码 对应字符是 ‘5’) ====== s[1] = '5'

a=a/5 >>>> a = 1 > 0; 继续循环体:
b = 1; >>>>> *p = 49 ( 对应字符为 ‘1’) ======= s[2] = '1'

a = a/5; a = 0 == 0 跳出循环体:
*p = ‘\0’; ====== s[3] = '\0';

p++ 就是每次指向下一个存储单元

答案就是 c 了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式