我被赋予以下任务以在C中执行:-
一年分为四个季节:春季,夏季,秋季和冬季。尽管由于日历的构建方式,每年的确切日期会有所不同,但在本练习中,我们将使用以下日期:
季节第一天
夏季3月20日
春季6月21日
秋季9月22日
冬季12月21日
创建一个程序,从用户读取一个月和一天。用户将以字符串形式输入月份名称,然后以整数形式输入月份中的日期。
然后,程序应显示与输入日期关联的季节。
注意:输入月份的前三个字母,例如:Jan表示一月,Feb表示二月,以此类推...。月份的第一个字母应为大写。
我编写了一个迷你测试代码来检查第一个条件,即3月20日。
这是我的代码:-
#include <stdio.h>
#include <string.h>
int main(int argc, const char * argv[]) {
int date;
char month[3];
printf("Enter the month\n");
scanf("%s",month);
printf("Enter the date\n");
scanf("%d",&date);
int temp;
temp= strcmp(month,"Mar");
printf("output is %d\n",temp);
return 0;
}
我得到的问题是当输入为Mar和20时,我得到输出:- “ output is 20”。而我想在我的测试代码中将输出输出为0。
另一个观察结果是,如果我将日期更改为任何随机数,则将其作为输出,而我假设将得到存储在Temp中的值,即0。
如果我从代码中完全删除可变日期,我将获得正确的输出。那时我得到0。
使用printf函数是正确的,您使用正确的转换说明符'%d'来打印整数,如https://linux.die.net/man/3/printf所述
变量“ month”可能不是很好。这是一个3字节的char缓冲区,用于存储。您使用它来存储以null终止的字符串,因此它只能存储2个ASCII字符+ null终止符。
另一个问题是scanf函数如何用于获取月份字符串。如果不指定字段宽度,情况可能会变得很糟,请参阅https://linux.die.net/man/3/scanf了解更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句