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

下面的程序运行结果为( )
#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; //将数组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
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-07-17
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 了

请高手帮我解决一下这道C语言题目,谢谢!
s=fun(3)=3-fun(3-1)=3-fun(2)=3-2=1 所以选A.

请高手帮我解决一下这道C语言题目,谢谢!
a的地址传给n,while 把a的值变为 -1,因为while跳出循环的条件是0,而测试的是减一之前的a,所以a的值变为-1了,输出之前,a的值又被加为0,所以结果是 0

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

请高手帮我解决一下这道C语言题目,谢谢!
1、1234567 s1指针指向1,s2指针指向7 t=*s1++ s1指针指向2(t得到1的值 1)s1=*s2-- s2指针指向6(值发生改变1734567)s2=t; (值发生改变1734517)2、s1指针指向2,s2指针指向6 t=*s1++ s1指针指向3(t得到2的值 7)s1=*s2-- s2指针指向5(值发生改变1714517)s2=t; ...

谁能帮我解释一下这道c语言题目啊 不懂
1.转换说明符 a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99)c 字符 d 有符号十进制整数 f 浮点数(包括float和doulbe)e(%E) 浮点数指数输出[e-(E-)记数法]g(%G) 浮点数不显无意义的零"0"i 有符号十进制整数(与%d相同)u 无符号十进制整数 o 八进制...

C语言高手帮忙做这三道题,要详解 谢谢拉!!
1、A while()是判断括号里的是真还是假,若表达式为0,就是假,若表达式非0,就是真。"!"是非逻辑运算符,简单说就是把非0变成0,把0变成1。。。"while(!x)”就是"(!x)"取真是进行循环,就是"!x"的值为非0时,就是"x"的值为0时。所以就是x==0.2、C 这题和上题一样,就是(m...

c语言有一道题不会做,求高手解,最好分析一下。
答案是:C 因为scanf("%c%c",&a,&b);接收的是1和2,在输入后按了“回车”这个回车符会传递到下一句,也就是:c=getchar(); ,这样 c 赋值为回车符了;d=getchar(); 接着就是这句,你输入34的时候,d 只接收单个字符,也就是 3 ;所以最后的输出是:12 3 ...

请各位C语言高手帮忙解决下面的问题。
printf("请输入15个数:\\n");for(i=0; i<15; i++){ scanf("%d", a+i);} printf("\\n请输入要查找的数:\\n");scanf("%d", &target);ret = binary_find(a, target, 0, 14);if(-1 != ret){ printf("\\n%d找到了, 它是a[%d]\\n", target, ret);} else { printf("\\...

c语言编程题,请高手帮忙做一下,拜谢,急急急急……
1.include <stdio.h> double funcPi(int);int main(void){ int arg;printf("Input the argument: ");\/\/ \/\/ 无异常输入 \/\/ while (!scanf("%d", &arg)){ printf("Check your input and retry: ");while (getchar()!='\\n'){ continue;} } while (getchar()!='\\n'){ continue...

一道C语言编程问题,高手们来看看帮忙解答下
在1到B之间。{ \/\/判断公式左右两侧是不是相等,相等侧符合题目要求 if (c*c*(a*a+b*b) == a*a*b*b){ sum = a+b+c; \/\/判定成立,求和 printf("SUM = %d\\nA = %d\\nB = %d\\nC = %d\\n",sum,a,b,c);return 0;} } } } return 0;}输出结果为:...

相似回答