cuncuntuozai @ 2024-10-27 23:02:46
scanf的读取方式导致数字拆分错误 在scanf函数中,格式字符串为"%d-%d%d%d-%d%d%d%d%d-%d"。当输入0 - 670 - 82162 - 0时,scanf会按照格式说明符来读取数据。 首先,%d读取0并存储到a中,然后遇到-。接着,%d%d%d会分别读取6、7、0并存储到b、c、d中。这里670被错误地拆分成了三个数字进行存储。 再遇到-后,%d%d%d%d%d会读取8、2、1、6、2并存储到e、f、g、h、i中,82162也被错误地拆分存储。最后,-%d读取0并存储到j中。 printf按照存储的值输出导致结果异常 printf函数按照"%d-%d%d%d-%d%d%d%d%d-%d"的格式输出变量的值。 对于b、c、d,由于存储的是6、7、0,按照%d%d%d输出就得到670。 对于e、f、g、h、i,存储的是8、2、1、6、2,按照%d%d%d%d%d输出就组合成了821620。 对于j,存储的是0,正常输出。而输入中的最后一个0之后的部分(这里没有被scanf读取的部分)不会被printf处理,所以出现了这种输出和输入不一致的情况。