【发布时间】:2015-05-11 15:35:54
【问题描述】:
我正在为一个需要为课堂编写的程序而苦苦挣扎。我需要编写一个程序,从用户那里读取城市名称,然后要求用户输入月份,后跟逗号,然后是该月的平均降雨量。这是手头的任务:
编写一个程序,从用户那里读取有关季度的数据 某个城市的降雨量并显示在屏幕上。你的程序 必须提示用户以下信息:
城市名称。您可以假设它最多为 50 个字符。
每个月的降雨月份和降雨量。您可以假设,对于每个月,用户都会输入月份和 降雨在一行中接收到的值,用逗号分隔 月份长度为三个字符。
以字段宽度和精度表示的输出格式。
然后,您的程序必须计算平均降雨量并生成 输出符合以下规范:
显示城市名称,后跟一个空行。
对于每个月降雨量值,在用户指定的字段宽度中显示左对齐的月份名称,后跟降雨量 该月显示右对齐,使用定点格式化 表示法,具有用户指定的精度,在 15 个空格的字段中 宽。
最后用一个空行跟随上个月的降雨量,然后在另一行显示句子“平均降雨量:”左对齐 在用户指定的字段宽度中,然后是平均降雨量 以用户指定的定点符号右对齐 精度和 15 个空格宽。
到目前为止,这是我的代码,我正在努力让代码正确让用户输入自己的逗号,代码编译并运行,但在输入后按回车后不会打印下个月的行第一个月的详细信息,它只留下一个空行:
int main ()
{
char cityName[50];
char monthName[3];
char comma;
float aveRain = 0;
int monthCount = 1;
float aveResult = 0;
int fieldWidth;
int outputPrecision;
puts("This program calculates the average quarterly rainfall for a given city.");
printf("Enter the name of the city: ");
scanf("%s" , &cityName[50]);
while( monthCount <= 3 )
{
printf( "Enter the month and average rainfall of month %d: " , monthCount);
scanf( "%s %s %f" , &monthName[3] , &comma , &aveRain);
monthCount = monthCount + 1;
}
}
【问题讨论】:
-
scanf("%s" , &cityName[50]);将尝试在字符串的末尾输入城市名称。试试scanf("%s" , cityName);和这个月的同上。 -
char monthName[3];对于 3 个字母的月份加上终止符来说不够长。 -
@WeatherVane 所以我必须将 3 改为 4?
-
不仅如此:您需要将月份和降雨量设为数组,例如 char
monthName[3][4](季度年为 3,字符串大小为 4,这是不安全的,但问题是假设输入了 3 个月份的字母,即字符串不会溢出)。还有一个降雨数组float aveRain[3]。 -
我建议你研究数组这个话题。
标签: c average formatted-input