一个简单的C语言实例,谁能解释一下答案为什么是567

来源:百度知道 编辑:UC知道 时间:2024/09/23 11:06:44
这里的星号代表什么,while(*s)什么意思,能把每次输出的结果分析一下吗?谢谢

#include<stdio.h>
main()
{
char *s="ABC";
do
{
printf("%d",*s%10); s++;
}
while(*s);
}

s是一个指针变量,*代表指针的符号,s这个指针指向ABC这个字符串,while(*s)就是指如果*s='\0',则循环的条件就不成立。
第一次进入循环,,输出A%10的值即5,s++,则指针跳到下一个字符B,*s=B为真,循环继续,知道输出C%10,s++,*s='\0'后,循环条件不成立跳出循环

while(*s)是如果*s不为0即\0,就循环一次。
while后面直接接表达式是表示要判断表达式的真假确定是否循环,一般不为0为真。

因为ABC都不为0而字符串结尾\0为0,所以循环三次。
由于*s%10作为%d格式即整形输出,所以字符要按ASCII码转换成整形,于是ABC分别转换为65,66,67。

%10即除10取余,所以分别得到5,6,7

首先,printf("%d",*s%10) 语句中的 "%d"表示按照整数型格式输出后面的数据,
*s % 10 表示对 s 指向的数据取10的余数,
s 开始串 "ABC" 循环中 *s 的值每次等于一个字符的ASCII码,
其中 'A'的ASCII码等于65,'B'的ASCII码等于66,'C'的ASCII码等于67,
循环中3次去10的余数的结果就分别是 5、6、7了。
while(*s) 是每次循环以s指向的字符判断循环结束条件,如果非0继续下一次循环,是0就结束循环。每个字符串结尾自动有一个'\0'(也就是0),所以正好循环到字符串结束循环也结束。

#include<stdio.h>
main()
{
char *s="ABC";
do
{
printf("%d",*s%10);
//第一次s->'A', 'A'的ASCII 为65, 65%10 =5
//第二次s->'B&#