为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

C C# C++
做一个好码农 2017-06-21 13:39:34

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

查看完整描述

11 回答

已采纳
?
qq_一只珂_0

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

查看完整回答
12 反对 回复 2017-06-21
点击展开后面1
?
剑主

#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;

}


查看完整回答
4 反对 回复 2017-10-18
?
进击的学霸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'这样,是不能作为下标的

查看完整回答
4 反对 回复 2017-06-21
点击展开后面1
?
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;

}


查看完整回答
1 反对 回复 2017-08-11
?
慕后端7201363

buzhidao o 

查看完整回答
反对 回复 2019-07-09
?
慕斯7324388

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

查看完整回答
反对 回复 2018-04-01
?
qq_荒原冰竹_0

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

查看完整回答
反对 回复 2017-08-11
?
嗷呜呜呜呜呜呜呜

rrrr

查看完整回答
反对 回复 2017-07-15
?
嗷呜呜呜呜呜呜呜

hhh

查看完整回答
反对 回复 2017-07-15
?
逸薄云天

什么时候才能不用void main.

查看完整回答
反对 回复 2017-06-21
  • 慕粉1242266
    慕粉1242266
    唉,这些年轻人都是喜欢这样,很多大学都是这样教的,超级不负责
?
书旅

a[ch[i]]++这个很明显不对,c语言里边有下标是字符的情况吗

查看完整回答
反对 回复 2017-06-21
  • 做一个好码农
    做一个好码农
    ch[i]是一个字符,但他对应了一个ASCII值啊,下标不可以用它所对应的ASCII值表示吗?

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信