#include <stdio.h> void main() { int a=28,b; char s[10],*p; p=s; do { b=a%16; if(b<10) *p=b+48; el
void 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);
}
运行结果是什么 展开
你给的C语言程序有一个错误,*P='\0';P应该小写,应该改成*p='\0';
改正后的程序的运行结果是C51
完整的程序和运行过程解析如下
#include <stdio.h>
void 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==28,p=s,p指向s[0],进入while循环,b=28%16=12,b>10,*p=12+55=67,所以s[0]=='C'(ascii码67),p++,p指向s[1],a=a/5=5
a==5,a>0,继续while循环,b=5%16=5,b<10,*p=5+48=53,所以s[1]=='5'(ascii码53),p++,p指向s[2],a=5/5=1
a==1,a>0,继续while循环,b=1%16=1,b<10,*p=1+48=49,所以s[2]=='1'(ascii码49),p++,p指向s[3],a=1/5=0
a==0,退出while循环,*p='\0',所以s[3]=='\0'(字符串结束符),输出字符数组s,因此运行结果是C51