请高手帮我解决一下这道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
请简略的说一下过程,谢谢! 展开
#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
请简略的说一下过程,谢谢! 展开
2个回答
展开全部
#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
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
展开全部
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 了
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 了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询