永发信息网

c语言输入一个字符串判断有多少大小写字母,数字和空格这个

答案:5  悬赏:30  手机版
解决时间 2021-07-26 04:22

#include<stdio.h>
#include<string.h>
void main()
{
void tt(char a[]);
char a[100];
int a1=0,a2=0,a3=0,a4=0;
printf("请输入字符串:");
scanf("%s",a);
tt(a);
printf("有大写字母 %d 个\n",a1);
printf("有小写字母 %d 个\n",a2);
printf("有数字 %d 个\n",a3);
printf("有空格 %d 个\n",a4);
}
void tt(char a[])
{int i,a1,a2,a3,a4;
for(i=0;i<strlen(a);i++)
if(a[i]>'A'&&a[i]<'Z')
a1++;
else if(a[i]>'a'&&a[i]<'z')
a2++;
else if(a[i]>'0'&&a[i]<'9')
a3++;
else (a[i]==' ');
a4++;

}
这个程序哪里有问题?

最佳答案

main()函数里的错:


①scanf("%s",a);错了,改为:gets(a);


tt()函数里的错:


①你在tt()函数里定义的int i,a1,a2,a3,a4;是局部变量,这个函数使用完了,变量都没有把值返回给主函数的变量,而且没有进行初始化。


②for()的循环体中没有用{}括起来;


现帮你改正如下(方法我是用指针,你自己对照看看):


#include<stdio.h>
#include<string.h>
void main()
{
void tt(char a[],int *a1,int *a2,int *a3,int *a4);
char a[100];
int a1,a2,a3,a4;
printf("请输入字符串:");
gets(a);
tt(a,&a1,&a2,&a3,&a4);
printf("有大写字母 %d 个\n",a1);
printf("有小写字母 %d 个\n",a2);
printf("有数字 %d 个\n",a3);
printf("有空格 %d 个\n",a4);
getch();
}
void tt(char a[],int *e,int *b,int *c,int *d)
{int i,a1=0,a2=0,a3=0,a4=0;
for(i=0;i<strlen(a);i++){
if(a[i]>'A'&&a[i]<'Z')
a1++;
else if(a[i]>'a'&&a[i]<'z')
a2++;
else if(a[i]>'0'&&a[i]<'9')
a3++;
else if(a[i]==' ') a4++;


}
*e=a1,*b=a2,*c=a3,*d=a4 ;
}
截图:


全部回答
#include <stdio.h> int main() { char c; int letters=0,space=0,digit=0,others=0; printf("Please input some characters\n"); while((c=getchar())!='\n') { if(c>='a'&&c<='z'||c>='A'&&c<='Z') letters++; else if(c==' ') space++; else if(c>='0'&&c<='9') digit++; else others++; } printf("char=%d space=%d digit=%d others=%d\n",letters,space,digit,others); getchar(); }

变量没有传递,边界处理不对

输入的字符串能自己变成数组么?

唉~~ 你完全没有搞懂函数的调用 你tt函数的a1,a2,a3,a4只能在tt中用不能调用到主函数中去,要在所有函数前面定义全局变量

#include<stdio.h> #include<string.h> int Num=0,Word=0,Other=0,P=0; void main() { void ss(char str[]); char str[10000]; gets(str); ss(str); printf("Word is %d\nNumber is %d\nP is %d\nOther is %d\n",Word,Num,P,Other); } void ss(char str[]) { int i; for(i=0;str[i]!='\0';i++) { if(str[i]>=48 && str[i]<=57) Num++; else if(str[i]==' ') P++; else if(str[i]>=65 && str[i]<=90 || str[i]>=97 && str[i]<=122) Word++; else Other++; } }

这是我以前编的一个输出句子字母,数字,空格,其他符号的 和你这差不多, 你借鉴借鉴吧 还有什么问题就再问我吧

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
一起来看流星雨郑爽和4个男主角那个比较相配
奥比岛谁卖吉他
各位友友本人最近想下载歌曲,谁有好听的歌介
用适当的反身代词填空,the children enjoyed
街头篮球做视频都用什么软件?
我每周打飞机三次,对身体有害吗?
N85现在价格
DNF广东7区好?
男人能练瑜珈吗?
流行伤感音乐有的介绍下?
09年黑龙江省公务员报名打印准考证没开始怎么
形容精灵的唯美句子,关于精灵的句子
丝路英雄有钱没资源怎么能升声望?
我为什总是白日做梦,异想天开!老想不切实际
QQ飞车扎开啊
推荐资讯
北京学而思上班怎么样,学而思培优怎么样,好
填充柄为什么只能复制单元格?
国厂手机大家怎么看?
DNF中召唤师穿什么好?
汽车电工、汽车机修、汽车电喷、汽车油漆、汽
电脑怎么重装不了系统
125领航踏板车 为什么一到低温天气打不着火
轿车标志为两个狮子背靠背图案,是什么车?
Looking for a playmate whose native langua
八月份适合去哪里旅游,失恋了适合去什么地方
有什么新上映的好电影?
心情不好的解决方法是什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?