2024题杭电acm哪里错了?求高手解答
#include<stdio.h>#include<string.h>intmain(){intn,i,t,a;chars[52];while(scanf("%d",n)...
#include<stdio.h>
#include<string.h>
int main()
{
int n,i,t,a;
char s[52];
while(scanf("%d",n)!=EOF)
{
for(i=0;i<n;i++)
{
gets(s);
if((s[0]>='a'&&s[0]<='z')||(s[0]>='A'&&s[0]<='Z')||(s[0]=='_'))
a=1;
else
a=0;
if(a==1)
{
t=strlen(s);
for(i=0;i<t;i++)
{
if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')||(s[i]=='_')||(s[i]<'9'&&s[i]>'0'))
continue;
else
a=0;
}
}
if(a==1)
printf("yes\n");
else
printf("no\n");
}
输入一个字符串,判断其是否是C的合法标识符。
Input
输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。
Output
对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。
Sample Input
3
12ajf
fi8x_a
ff ai_2
Sample Output
no
yes
no
Author
lcy 展开
#include<string.h>
int main()
{
int n,i,t,a;
char s[52];
while(scanf("%d",n)!=EOF)
{
for(i=0;i<n;i++)
{
gets(s);
if((s[0]>='a'&&s[0]<='z')||(s[0]>='A'&&s[0]<='Z')||(s[0]=='_'))
a=1;
else
a=0;
if(a==1)
{
t=strlen(s);
for(i=0;i<t;i++)
{
if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')||(s[i]=='_')||(s[i]<'9'&&s[i]>'0'))
continue;
else
a=0;
}
}
if(a==1)
printf("yes\n");
else
printf("no\n");
}
输入一个字符串,判断其是否是C的合法标识符。
Input
输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。
Output
对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。
Sample Input
3
12ajf
fi8x_a
ff ai_2
Sample Output
no
yes
no
Author
lcy 展开
1个回答
展开全部
加上一个getchar();
#include<stdio.h>
#include<string.h>
int main()
{
int n,i,t,a;
char s[52];
while(scanf("%d",n)!=EOF)
{ getchar();
for(i=0;i<n;i++)
{
gets(s);
if((s[0]>='a'&&s[0]<='z')||(s[0]>='A'&&s[0]<='Z')||(s[0]=='_'))
a=1;
else
a=0;
if(a==1)
{
t=strlen(s);
for(i=0;i<t;i++)
{
if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')||(s[i]=='_')||(s[i]<'9'&&s[i]>'0'))
continue;
else
{ a=0;break;}
}
}
if(a==1)
printf("yes\n");
else
printf("no\n");
}
#include<stdio.h>
#include<string.h>
int main()
{
int n,i,t,a;
char s[52];
while(scanf("%d",n)!=EOF)
{ getchar();
for(i=0;i<n;i++)
{
gets(s);
if((s[0]>='a'&&s[0]<='z')||(s[0]>='A'&&s[0]<='Z')||(s[0]=='_'))
a=1;
else
a=0;
if(a==1)
{
t=strlen(s);
for(i=0;i<t;i++)
{
if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')||(s[i]=='_')||(s[i]<'9'&&s[i]>'0'))
continue;
else
{ a=0;break;}
}
}
if(a==1)
printf("yes\n");
else
printf("no\n");
}
更多追问追答
追问
#include
int main()
{
int i,k;
char s[100],max;
while(gets(s))
{
max='a';
for(i=0;s[i]!='\0';i++)
{
if(s[i]>max)
{
max=s[i];
}
}
for(i=0;s[i]!='\0';i++)
{
printf("%c",s[i]);
if(s[i]==max)
printf("(max)");
}
printf("\n");
}
return 0;
}这个也不要加getcgar啊(加上还是通不过)
追答
if((s[i]>='a'&&s[i]='A'&&s[i]'0'))
改成
if((s[i]>='a'&&s[i]='A'&&s[i]='0'))
估计就能够ac了,没看到你这里这么明显的错误
-----------------------
别人没有getchar,你也不看看你的代码和别人的不一样
你先改改上面的再试吧
scanf不会读空格,gets会把空格都读完,这就是区别
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询