C和指针 课后题 1.3
#include <stdio.h> int main() { char ch; char cheaksum = -1; while((ch = getchar()) != EOF && ch != '\n'){ putchar(ch); cheaksum =(cheaksum+ch); } cheaksum =(cheaksum+ch); printf("\n%d\n",cheaksum); }
编写一个程序,从标准输入读取一些字符,并把它们写到标准输出上。它同时应该计算checksum值,并写在字符的后面。checksum(检验和)用一个signed char变量进行计算,它初始为-1。当每个字符从标准输入读取时,它的值就被加到checksum中。如果checksum变量产出溢出,那么这些溢出就会被忽略。当所有的字符均被写入后,程序以十进制整数的形式打印出checksum的值,它有可能是负值。注意在checksum后面要添加一个换行符。在使用ASCII码的计算机中,在包含“Hello world!"这几个词并以换行符结尾的文件上运行这个程序应该产生下列输出: Hello world! 102
代码如上所示,写着很简单,调试了很久。仍然有疑惑
1.溢出是怎么处理的?
2.cheaksum =(cheaksum+ch);这一句代码在最后加一遍是为了加空格?(经验证确实是换行符);
浙公网安备 33010602011771号