猿问
下载APP

C语言编程时候的运行问题!求大佬指教!

编程统计输入的字符串中数字字符出现的次数,不知道为啥结果不对!

做一个好码农
浏览 6756回答 11
11回答

qq_一只珂_0

ch[i]的话是字符型,然后放在a[ch[i]]就不对了,改成a[ch[i]-'0']

剑主

#include<stdio.h>#include<string.h>int main(){        char  ch[80];        int i,a[10];        for(i=0;i<10;i++)        a[i]=0;        scanf("%s",ch);        i=0;        while(ch[i]!='\0')        {                if(ch[i]>='0'&&ch[i]<='9')                a[ch[i]-'0']+=1;    //ch[i]是字符型数组,要转化为整型数组要用ch[i]-'0'再把它赋给a数组。                i++;        }        for(i=0;i<10;i++)       printf("%d出现了%d次\n",i,a[i]);       return 0;}

进击的学霸No1

#include<stdio.h> #include<string.h> void main() { char ch[80]; int i,a[10],j,t; for(i=0;i<10;i++) a[i]=0; //gets(ch); scanf("%s",ch); t=strlen(ch); printf("%s\n",ch); printf("字符串的长度是%d\n",t); for(i=0;i<=t;i++) { if(ch[i]== '0') a[0]++; if(ch[i]== '1') a[1]++; if(ch[i]== '2') a[2]++; if(ch[i]== '3') a[3]++; if(ch[i]== '4') a[4]++; if(ch[i]== '5') a[5]++; if(ch[i]== '6') a[6]++; if(ch[i]== '7') a[7]++; if(ch[i]== '8') a[8]++; if(ch[i]== '9') a[9]++; } for(i=0;i<10;i++) printf("数字%d出现%d次\n",i,a[i]); }这是我的想法,繁琐了点,应该可以用switch语句吧关于你的代码if(ch[i]>='0'&&ch[i]<='9')  a[ch[i]]++;这句代码就像楼上说的那样,它的值是个字符,就像'0'这样,是不能作为下标的

qq_荒原冰竹_0

#include <stdlib.h>#include <stdio.h>int main(int arg,char * args){ char ch[80]; int count = 0; //用来统计字符出现次数 printf("请输入你的字符.\n"); int i = 0; for(i = 0;i < strlen(ch);i ++) { gets(ch); } while(ch[i] != '\0') { if(ch[i] == 'c')  //此处判断为假设你要查找的字符是c { count++; } } printf("字符c出现的次数为%d次!\n",count); /*以上代码中可能出现的函数使用方法不是很正确,毕竟是用记事本写的代码。如便难以出错请查询函数用法自行改正。。。。。。。 */ return 0; }

慕后端7201363

buzhidao o 

慕斯7324388

ch[i]是字符型,就算转换成整型,也是通过ASCLL码,a[ch[i]-0x30]

qq_荒原冰竹_0

第一个for循环,应该改为i++,保证循环次数10次。另外while循环下的if条件判断不对,你要打印的是字符出现的次数,a[10]这个数组其实没必要。定义一个变量统计就可以,打印的语句也有问题。

嗷呜呜呜呜呜呜呜

rrrr

嗷呜呜呜呜呜呜呜

hhh

逸薄云天

什么时候才能不用void main.

书旅

a[ch[i]]++这个很明显不对,c语言里边有下标是字符的情况吗
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答