当前位置:编程学习 > C/C++ >>

C语言函数问题

#include<stdio.h>
void fun(char)
main()
{char a[20];int i;

gets(a);
fun(a);

}
void fun(char a[])
{int i=0,j=0,k=0,m=0,s;
for(s=0;s<20;s++)
{
whlie(a[s]!='\\0')
{
if('a'<=a[s]<='z'||'A'<=a[s]<='Z') i++;
else if('0'<=a[s]<='9') j++;
else if(a[s]==' ') k++;
else m++;
}
}

printf("字母=%d,数字=%d,空格=%d,其他=%d",i,j,k,m);
}

求教此程序哪里错误
答案:首先,('a'&lt;=a[s]&lt;='z')等部分都应改为两个关系运算的&&运算,即(a[s]&gt;='a'&&a[s]&lt;='z'),这样的错误有三处,照样改掉就行了;

其次,fun函数中for语句后又有一个while语句,这样本来意思是想控制a[s]不等于'\\0',但其实是进入了另一循环,只要有输入,a[0]就不等于'\\0',因此就进入while的死循环中了,建议这样改:
void fun(char[])
{
int i=0,j=0,k=0,m=0,s=0;
while(a[s]!='\\0')/*只用一个while循环语句*/
{

if(a[s]&gt;='a'&&a[s]&lt;='z'||a[s]&gt;='A'&&a[s]&lt;='Z')/*字母*/

i++;

else if(a[s]&gt;='0'&&a[s]&lt;='9")/*数字*/

j++;

else if(a[s]==' ')/*空格*/

k++;

else m++;/*其他*/

s++;
}
printf("字母=%d,数字=%d,空格=%d,其他=%d",i,j,k,m);
}
去调试一下,我试过了,应该没问题的!void fun(char)
这一句在申明的时候,后面没有分号。。。

1.貌似搜搜的网页有问题。所你你的某些错误我没办法看。
就我发现的来说:
你声明了一个空型的函数func, 参数只有一个,是字符型。。。(后面要有分号的。但你没有、、、)
而你在定义时,参数却成了字符指针类型。。。所以这儿错了。。。

上一个:C语言命令问题
下一个:C语言问题

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,