解题思路:自定义函数中分别统计题目的四种字符个数,在主函数中输出
注意事项:重点是结果要在主函数输出,所以我们有以下三种思路
法一:我们设置4个全局变量分别用来统计4种不同字符的个数,由于是全局变量,所以在自定义函数中变量发生改变,其改变变量值会保存,所以主函数直接输出即可,避免了自定义函数设置多参数去统计。
法二:主函数中定义4个变量分别用来统计4种不同字符的个数,需要在自定义函数中多加4个参数,并且需要传变量地址,涉及指针,较为麻烦(不建议写这个,如果想加深自己指针的能力,可以自己尝试编写)。
法三:主函数中定义一个整型含有4个元素的数组,初值为0,传数组名,在自定义函数中分别去统计,由于传的地址,形参的改变会直接影响实参,之后主函数中输出数组所有元素值即可。
这里我们主要介绍法一,对其它方法感兴趣的同学可以自行编写,提交。
参考代码:
#include<stdio.h> int e=0,b=0,c=0,d=0; void Statistics(char a[100]); int main() { char a[100]; gets(a); Statistics(a); printf("%d %d %d %d\n",e,b,c,d); return 0; } void Statistics(char a[100]) { int i; for(i=0;a[i]!='\0';i++) { if('a'<=a[i]&&a[i]<='z'||'A'<=a[i]&&a[i]<='Z') e++; else if('0'<=a[i]&&a[i]<='9') b++; else if(a[i]==' ') c++; else d++; } }
有其它想法的同学欢迎交流
0.0分
18 人评分
#include<stdio.h> #include<string.h> void calcul(char str[100],int res[4]){ int i; for(i=0;str[i]!='\0';i++){ if((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z')){ res[0]++; }else if(str[i]>='0'&&str[i]<='9'){ res[1]++; }else if(str[i]==' '){ res[2]++; }else{ res[3]++; } } } int main() { char str[100]; int res[4]={0},i; fgets(str, sizeof(str), stdin);//输入数 calcul(str,res); for(i=0;i<4;i++){ printf("%d ",res[i]); } printf("\n"); return 0; } 帮忙看看第一个正确的
#include<stdio.h> #include<string.h> void fun(char ch[],int m,int n,int h,int k); int main(void) { int m=0,n=0,h=0,k=0; char ch[100]; gets(ch); fun(ch,m,n,h,k); printf("%d %d %d %d ",m,n,h,k); return 0; } void fun(char ch[],int m,int n,int h,int k) { int l=strlen(ch); for(int i=0;i<l;i++) { if((ch[i]>='A'&&ch[i]<='Z')||(ch[i]>='a'&&ch[i]<='z')) m++; else if(ch[i]>='0'&&ch[i]<='9') n++; else if(ch[i]==' ') h++; else k++; } } 指点一下呗
#include<stdio.h> int e=0,b=0,c=0,d=0; void fun(char a[100]); int main() { char a[100]; gets(a); fun(a); printf("%d %d %d %d\n",e,b,c,d); return 0; } void fun(char a[100]) { int i; for(i=0;a[i]!='\0';i++) { if('a'<=a[i]&&a[i]<='z'||'A'<=a[i]&&a[i]='Z') e++; else if('0'<=a[i]&&a[i]<='9') b++; else if(a[i]==' ') c++; else d++; } } 麻烦指点一下,谢谢
//法三的代码 #include<stdio.h> #include<string.h> void func(char a[],int str[]){ int l=strlen(a); int i; for(i=0;i<l;i++){ if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z'){ str[0]++; }else if(a[i]>='1'&&a[i]<='9'){ str[1]++; }else if(a[i]==' '){ str[2]++; }else{ str[3]++; } } } int main(){ int str[4]={0}; char a[100]; gets(a); func(a,str); int i; for(i=0;i<4;i++){ printf("%d",str[i]); printf(" "); } return 0; }
//在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。 #include<stdio.h> #include<string.h> int r=0,d=0,g=0,w=0; int f(char a[100]); int main(){ char a[100]; gets(a); f(a); printf("%d %d %d %d",r,d,g,w); return 0; } int f(char a[]){ int i, l,r,d,g,w; r=d=g=w=0; l = strlen(a); for ( i = 0; i < l; i++) { if (a[i]<='z'&&a[i]>='A') { r++; }else if (a[i]>='0'&&a[i]<='9') { d++; }else if (a[i]==' ') { g++; } w = l - r - d - g; } } 我这个应该怎么改,请大佬指点一下
#include<stdio.h> #include<string.h> int main() { char ch[100]; int x,i,a=0,b=0,c=0,d=0; gets(ch); x=strlen(ch); for(i=0;i<x;i++) { if((ch[i]>='a'&&ch[i]<'z')||(ch[i]>'A'&&ch[i]<'Z')) a++; else if(ch[i]>='0'&&ch[i]<'9') b++; else if(ch[i]==' ') c++; else d++; } printf("%d %d %d %d\n",a,b,c,d); return 0; } 为什么我提交答案错误,但是 debug跑出来是对的