永发信息网

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

答案:5  悬赏:30  手机版
解决时间 2021-07-26 04:22
  • 提问者网友:辞取
  • 2021-07-25 13:49

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

}
这个程序哪里有问题?

最佳答案
  • 五星知识达人网友:孤独的牧羊人
  • 2021-07-25 15:07

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 ;
}
截图:


全部回答
  • 1楼网友:刀戟声无边
  • 2021-07-25 19:29
#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(); }
  • 2楼网友:蕴藏春秋
  • 2021-07-25 18:17

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

  • 3楼网友:轻雾山林
  • 2021-07-25 17:47
输入的字符串能自己变成数组么?
  • 4楼网友:底特律间谍
  • 2021-07-25 16:16

唉~~ 你完全没有搞懂函数的调用 你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++; } }

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

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯