解题思路:
1、可以使用gets()/scanf()获取待统计的字符。
2、scanf()获取字符的时候应该使用scanf("%[^\n]"),除了回车键全部读入。
注意事项:
参考代码:
#include<stdio.h> #include<string.h> void statistics(char *str, int *num_char, int *num_num, int *space_num, int *other_num) { int len=0, i=0; len = strlen(str); *num_char = 0; *num_num = 0; *space_num = 0; *other_num = 0; for(i = 0; i < len; i++) { if(str[i]>='0' && str[i]<='9') *num_num+=1; else if( (str[i]>='a' && str[i]<= 'z') || (str[i]>='A' && str[i]<='Z')) *num_char+=1; else if(str[i]==' ') *space_num+=1; else *other_num+=1; } } int main() { char Mystring[1024]; int num_char, num_num, space_num, other_num; scanf("%[^\n]", Mystring); statistics(Mystring, &num_char, &num_num, &space_num, &other_num); printf("%d %d %d %d\n", num_char, num_num, space_num, other_num); return 0; }
0.0分
39 人评分
#include<stdio.h> #include<string.h> int * statistics(char *arr) { int len=strlen(arr); int letters=0; int numbers=0; int spaces=0; int others=0; for(int i=0;i<len;i++) if((arr[i]>='a' && arr[i]<='z')||(arr[i]>='A' && arr[i]<='Z')) letters++; else if(arr[i]>='0'&&arr[i]<='9') numbers++; else if(arr[i]==' ')//==是判断否等于,=是赋值; spaces++; else others++; int ar[4]={letters,numbers,spaces,others}; return ar; } int main(void) { char arr[100]; gets(arr); int *p=statistics(arr); printf("%d %d %d %d\n",*p,*(p+1),*(p+2),*(p+3)); return 0; } 为啥错误啊?
scanf()获取字符的时候不使用scanf("%[^\n]"),好像也不会错吧 求大佬求解
各位看一下,我这个答案错误是为啥,谢了 #include <stdio.h> #include <string.h> void tj(char *a) //定义函数 { int n=strlen(a); //求实际有效长度 int i; int m=0,s=0,k=0,q=0; for(i=0;i<n;i++){ if(a[i]==' ') k++; else if(a[i]>96&&a[i]<122) m++; else if(a[i]>64&&a[i]<91) m++; else if(a[i]>47&&a[i]<58) s++; else q++; a[i]=0; //比较过后,将当前字符改为0; } a[0]=m+'0'; a[1]=s+'0'; a[2]=k+'0'; //将统计值改为字符类型 a[3]=q+'0'; //并赋值给数组a的前4个元素, } int main() { int i; char a[100]={0}; gets(a); tj(a); for(i=0;i<5;i++){ printf("%c ",a[i]); //输出数组a的前4个元素 } return 0; }
碳碳双键 2020-05-26 17:53:56 |
后面i输出的时候,应该是i<4吧?然后前面讲统计值转换成字符类型应该是加48吧?(感觉是)
IP判断 (C++代码)浏览:728 |
C语言训练-字符串正反连接 (C语言代码)浏览:726 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1151 |
程序员的表白 (C语言代码)浏览:1574 |
C语言训练-自由落体问题 (C语言代码)浏览:1775 |
【绝对值排序】 (C语言代码)浏览:832 |
简单的a+b (C语言代码)浏览:385 |
WU-输出九九乘法表 (C++代码)浏览:1852 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:648 |
1048题解(读入回车问题)浏览:628 |
贾晓聪 2019-04-01 15:58:09 |
因为要遍历整个数组,不用也行
胖胖 2019-04-01 17:08:10 |
喜欢用高数来做初中数学题呗
颜伦基 2019-12-28 20:35:36 |
因为使程序结构化