请问为什么我的运行结果是“no”,那个地方错了

#include<stdio.h>
#include<stdlib.h>
int main()
{
    char ch[20],i,n;
    scanf("%d",&n);
    gets(ch);
    if(0<=ch[0]&&ch[0]<=9) printf("no");
    else 
    {
        for(i=1;i<n;i++)
        {
            if(ch[i]>='a'&&ch[i]<='z'||ch[i]>='A'&&ch[i]<='Z'||ch[i]>=0&&ch[i]<=9||ch[i]=='_')
              continue;
            else
                break;
        }
    }
    if(i==n-1) printf("yes");
    else printf("no");
    return 0;
}

 

 

等我看看先

0和9用单引号引起来。

n你申请的是char类型,从键盘输入用的是%d,另外,判断的时候0和9需要加引号。

根据你代码的逻辑,输入的第一个字符应该是'0'-'9'之间的,否则就输出no,如果第一个字符是'0'-'9'之间,那就就判断后面的n个字符是不是满足if条件,如果满足就i++,不满足就break。修改后的代码如下:

如有帮助,请采纳一下,谢谢。

#include<stdio.h>
#include<stdlib.h>
int main()
{
	char ch[20],c;
	int i,n;
	
	gets(ch);

	n = ch[0] - 48;

	if('0'<=ch[0]&&ch[0]<='9') 
	{
		printf("no");
		return 0;
	}
	else 
	{
		for(i=1;i<n;i++)
		{
			if(ch[i]>='a'&&ch[i]<='z'||ch[i]>='A'&&ch[i]<='Z'||ch[i]>='0'&&ch[i]<='9'||ch[i]=='_')
				continue;
			else
				break;
		}
	}
	if(i==n) printf("yes");
	else printf("no");
	return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632