能不能帮我看一下我写的代码问题在哪?


#include<stdio.h>
int main(void)
{
    /*********Begin*********/
    int n,number,i,k,j,p;
     number=0,p=0;
    char z[1000];     /* 定义一个字符数为1000的数组,防止输入字符串过长溢出*/

    scanf("%d",&n);   /*输入代表测试实例个数的n*/
    
    for(j=0;j<n;j++)  /*这几行代码的作用是输入测试的字符,当输完一串之后,输出换行符换行,继续输入下一串,直到n行字符串全部输入完成*/
    scanf("%s",&z);
    printf("\n");
   

    for(k=0;k<n;k++)   /*这个for语句的作用是把n行字符串全部执行完*/
    {    
        i=p;            /*这个语句的作用是当执行完某一行字符串时,可以在数组中接着上一行的数组地址往下执行,而不是重新从数组z[0]开始执行*/
    for(i=p;i<1000;i++)    
    {   p=i;            /*for语句的第一个语句只执行一次,之后i会自增,作用和上面那一条一样*/
    if(z[i]!='\0')     /*如果为换行符,则跳出此循环*/
    {
        if((z[i]>=0 && z[i]<=9))
        {
            number=number+1;
        }
    }
    else 
     p=p+1continue;
    }
    printf("%d\n",number);
    }

    /*********End**********/
    return 0;
}

img

img

img

1,找数字个数只用遍历一次字符串
2,判断数字字符要加单引号''

#include<stdio.h>
int main()
{
    /*********Begin*********/
    char t[1000];
    int j,count,n;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%s",t);
        count=0;
        for(j=0; t[j]!='\0'; j++) //遍历字符串
        {
            if(t[j]<='9'&&t[j]>='0') //判断数字字符要加''
            {
                count++;
            }
        }
        printf("%d\n",count);
    }
    /*********End**********/
    return 1;
}

供参考:

#include <stdio.h>
int main()
{
    /**********Begin*********/
    int n, number, k, j;
    number = 0;
    char z[1024];
    scanf("%d", &n);
    for (j = 0; j < n; j++) {
        scanf("%s", z);
        for (k = 0, number = 0; z[k] != '\0'; k++)
        {
            if (z[k] >= '0' && z[k] <= '9')
                number++;
        }
        printf("%d\n", number);
    }
    /**********End**********/
    return 0;
}

for(j=0;j<n;j++)
scanf("%s",&z);
你定义的z只是一个字符串,不是字符串数组啊。
按照你的注释,应该是个字符串数组才可以。考虑n的最大可能性,可以定义如char z[100][1000]
然后
for(j=0;j<n;j++)
scanf("%s",z[j]);

if((z[i]>=0 && z[i]<=9))这边比较错误,字符的比较要看ascii表格
ascii码中数字的十进制不是09,而是4857,你可以去搜一下ascii码表格

其余问题别人已经说了,我就不重复了,i=p p=i 是干嘛来着?你这个下个字符串肯定运行不了。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632