永发信息网

C语言没有输入直接输出问号

答案:2  悬赏:60  手机版
解决时间 2021-03-05 18:58
  • 提问者网友:太高姿态
  • 2021-03-04 23:39
#include <stdio.h>
#include<string.h>
int main()
{
int n,i,j;
char a[7],b[7],c[7];

char ge[14][5]={"tret","jan","feb","mar","apr","may","jun","jly","aug","sep","oct","nov","dec"};
char shi[12][4]={"tam","hel","maa","huh","tou", "kes","hei","elo","syy","lok","mer","jou"};

scanf("%d",&n);
for(i=0;i<=n;i++){
gets(a);
b[2]=a[2];
printf("%c\n",b[2]);

int w=a[0]-'0';
int len=strlen(a);
if(w>=0&&w<=9){int g,s;
if(len==1){printf("%s\n",ge[w]);continue;}
if(len==2){
int q=w*10+(a[1]-'0');g=q%13;s=q/13;
if(g==0){printf("%s\n",shi[s-1]);}
else{printf("%s %s\n",shi[s-1],ge[g]);}continue;}
if(len==3){
int q=100+(a[1]-'0')*10+(a[2]-'0');g=q%13;s=q/13;
if(g==0){printf("%s\n",shi[s-1]);}
else{printf("%s %s\n",shi[s-1],ge[g]);}continue;}
}
if(w>10){
if(len<=5)
{for(j=0;j<14;j++)
{if(strcmp(a,ge[j])==0)
{printf("%d\n",j);break;}
if(strcmp(a,shi[j])==0)
{printf("%d\n",(j+1)*13);break;}
}
}
if(len>5){int o,p;
for(j=0;j<14;j++)
{if(strcmp(b,shi[j])==0){o=13*(j+1);break;}}
for(j=0;j<14;j++)
{if(strcmp(c,ge[j])==0){p=j;break;}}
printf("%d\n",p+o);}
}

}
return 0;
}
然后运行的时候先输入n=5,然后还没等输入a的字符串 他直接给我输出一个问号。这个怎么搞?
最佳答案
  • 五星知识达人网友:鸽屿
  • 2021-03-05 00:55
因为输入的回车和换行的问题,导致随后的那个for循环结束了,这行 printf("%c\n",b[2]); 就输出了未确定的值

~
~
~
全部回答
  • 1楼网友:过活
  • 2021-03-05 01:46
i=0 scanf(&quot;%d&quot;, &amp;a) min = a
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯