二级c语言程序设计
‘A’的ASCLL码值为65
#included<stdio.h>
main()
{
char * s={"ABC"};
do{
printf("%d", * s%10);
}while(*s++);
}
为什么结果等于5670?请明白人帮我详细讲一下谢谢
你给出的程序两处有错,
#included<stdio.h> 应为 #include<stdio.h>
打印输出语句中含有全角字符,应为 printf("%d", *s%10);
程序的运行结果:
do{
printf("%d",*s%10);
} while(*s++);
这个循环是 先执行,后判断的,所以此循环要执行4次*s%10 :,依次输出余数为65%10(=5)、66%10(=6)、67%10(=7)、0%10(=0),即5670。
最后一次 *s++=0,循环条件不满足而停止。
指针s指向字符串"ABC"的起始地址,也就是'A'的内存地址,故第一次输出*s%10就是65%10=5,地址依次增加1,也就会连续输出567,注意c语言里以空格标志字符串结尾s结尾有一个空格('