先读入n 表示后面读入n行字符串,
第一种代码
#include <stdio.h>
#include <string.h>
char s[10010]={'\0'};
int n,len;
int main()
{
int i;
while(scanf("%d\n",&n)==1)
{
for(i=0;i<n;i++)
{
gets(s);
if(!strcmp(s,"1")||!strcmp(s,"4")||!strcmp(s,"78"))
printf("+");
else
{
len=strlen(s);
if(s[len-2]=='3'&&s[len-1]=='5')
printf("-");
else if(s[0]=='9'&&s[len-1]=='4')
printf("*");
else if(s[0]=='1'&&s[1]=='9'&&s[2]=='0')
printf("?");
}
printf("\n");
}
}
return 0;
第二种
#include<stdio.h>
#include<string.h>
int main()
{
int n;
char str[1000];
scanf("%d",&n);
getchar();
while(n--)
{
fgets(str,1000,stdin);
str[strlen(str)-1]='\0';
if(strcmp(str,"1")==0||strcmp(str,"4")==0||strcmp(str,"78")==0)
printf("+\n");
else if(str[strlen(str)-1]=='5'&&str[strlen(str)-2]=='3')
printf("-\n");
else if(str[strlen(str)-1]=='4'&&str[0]=='9')
printf("*\n");
else if(str[0]=='1'&&str[1]=='9'&&str[2]=='0')
printf("?\n");
}
return 0;
}
为什么第一种不需要在读入n后再读一个回车呢?而第二种需要?
------解决方案--------------------------------------------------------
因为第一个scanf的格式里你写了'\n',scanf会自动跳过10后面的换行。