【悬赏】c语言问题,谢谢

2025-04-06 06:14:26
推荐回答(5个)
回答1:

首先回答你第一个问题:
【错误原因】:最后一个else只与最后一个if配对,导致出错!!!当不是空格时,if(c==' ')不执行,必然执行else语句,导致多统计。
【解决办法】:将:
--------------------------------------------------------------
if(c>='a'&&c<='z')
a[0]++;
if(c>='A'&&c<='Z')
a[1]++;
if(c>='0'&&c<='9')
a[2]++;
if(c==' ')
a[3]++;
else
a[4]++;
--------------------------------------------------------------
改为:
--------------------------------------------------------------
if(c>='a'&&c<='z')
a[0]++;
else if(c>='A'&&c<='Z')
a[1]++;
else if(c>='0'&&c<='9')
a[2]++;
else if(c==' ')
a[3]++;
else
a[4]++;
--------------------------------------------------------------

第二个问题:
int a[5]={0};与int a[5]={0,0,0,0,0};是完全等价的!!!都是将数组初始化为0。
另外,int a[5] = {2,6};是将数组前两个初始化为2,6,后面省略的3个则被初始化为0。

回答2:

int a[5]={0}可以写成int a[5]={},但不能写成int a[5],一个是赋值,一个是定义;
系统可以自己看出来
int a[5]={0};与int a[5]={0,0,0,0,0};是等价的;后面默认为0.
代码改成这样:(因为if和else要成对出现)
if(c>='a'&&c<='z')
a[0]++;
else if(c>='A'&&c<='Z')
a[1]++;
else if(c>='0'&&c<='9')
a[2]++;
else if(c==' ')
a[3]++;
else

回答3:

你的程序与题目要求不符啊。你题目中说的是求指定的字符的个数。

回答4:

我给你写吧。等下给你程序 #include void main() { int a,n,t; long sum=0; printf("请输入a:\\n "); scanf("%d",&a);

回答5:

额,我先回答最后的问题吧。int a[5]={0};是初始化数组,和int a[5]={0,0,0,0,0};等价,至于问什么等价我想是编译器为了减轻程序员负担吧(毕竟初始化经常用得着,每次初始化写那么长还不给累死~~)而不进行初始化为什么不行呢?也就是int a[5];为什么不行呢?原因和sum要初始化为零一样,不然a里面元素的值就不知为啥了。
至于代码的问题,我不太懂楼主的意思。“编写程序求出字符串str中指定字符ch的个数,并返回字符个数。例如,若输入字符串str="abEF123112",则输出3。”指定字符ch?要预先输入吗?这还不是关键,关键是lz开了个int a [5];你是想统计不同类字符的个数吧,就是说输入字符窜中有多少个是大写字母,多少个是小写字母之类的~~但你又把他们加在一起了!
“for(i=0;i<5;i++)
if(a[i]!=0)
sum++;”
所以还是麻烦lz说清楚问题