humanint 2017-03-08 14:46 采纳率: 100%
浏览 1197
已采纳

c语言中,请问为什么键盘输入数值需要按ctrl+a才会显示结果?

调试,键盘输入数值,需要按ctrl+a才会显示结果,请问这是什么原因呢?
图片说明
#include
#include
#include
#include
#define LEN 30
struct month
{
char name[10];
char abbrev[4];
int days;
int monumbs;
};
struct month months[12]=
{
{ "January","jan",31,1 },
{ "February","feb",28,2 },
{ "March","mar",31,3 },
{ "April","apr",30,4 },
{ "May","may",31,5 },
{ "June","jun",30,6 },
{ "July","jul",31,7 },
{ "August","aug",31,8 },
{ "September","sep",30,9 },
{ "October","otc",31,10 },
{ "November","nov",30,11 },
{ "December","dec",31,12 }
};
int days(int day, char *mon, int year);
int leapyear(int year);
void casing(char *pst);
int main(void)
{
int day, year;
char mon[LEN];
puts("enter the month:");
while (scanf("%s", mon))
{
puts("enter the day and year:");
while (scanf("%d %d", &day, &year) == 2)
if (day > 31 || day < 1)
{
puts("wrong input,again:");
continue;
}
printf("%d %s %d.there are %d days passed by.\n", year, mon, day,days(day, mon, year));
puts("enter the month:");
}
puts("bye!");//hope you won't see this!!
getchar();
return 0;
}

int days(int day, char *mon, int year)
{
int sum,i,pos;
sum = 0;
pos = -1;
casing(mon);
for ( i = 0; i < 12; i++)
{
if (strcmp(months[i].name, mon) == 0)
pos = months[i].monumbs;
}
if (pos >= 0)
{
for (i = 0; i < pos - 1; i++)
sum += months[i].days;
sum = sum + day;
}
else
exit(EXIT_FAILURE);
if (leapyear(year))
return sum++;
else
return sum;
}

int leapyear(int year)
{
if (year % 400 == 0)
return 1;
else if (year % 100 != 0 && year % 4 == 0)
return 1;
else
return 0;
}

void casing(char * pst)
{
if (*pst)
*pst = tolower(*pst);
pst[0] = toupper(pst[0]);///////toupper(pst[0])???
}

  • 写回答

2条回答 默认 最新

  • Black_Will 2017-03-08 15:44
    关注

    试一试把while (scanf("%s", mon))和while (scanf("%d %d", &day, &year) == 2)改成while (~scanf("%s", mon))和while (~scanf("%d %d", &day, &year) == 2),就是前面多加一个~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退