解题思路: 此题可用两种方法来做
方法一:
1.了解ASCII表,那些字符在哪里,用那些字符对应的数字,也可不用了解,直接用字符就行
2.要声明4个变量分别记录题目(字母、数字、空格、其他字符)要求的数量,和一个字符变量利用getchar()获得赋值
3.用getchar()利用while循环读取字符,while循环里用if else嵌套给对应的字符数加一
4.利用printf()输出出来
方法二:
如果对gets(),strlen(),数组不了解的话,此法可不看
1.先声明一个数组用于gets()来存储输入
声明4个变量来存储对应的字符数
2.strlen()获取输入的长度,用于后面的for循环
3.利用for循环计算各字符数
注意事项: 注意while循环里里面的条件
参考代码:
1.利用getchar()
#include <stdio.h> int main(void) { int letter = 0, number = 0, space = 0, other = 0; char ch; while( (ch = getchar()) != '\n'){ /*这里的‘\n’不能换成EOF,要不就把输入的换行符输入进来当成其他字符处理, 因此其他字符的数量将比题目所给的数量多一*/ if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) letter += 1; //letter表示字母数量 else if (ch == ' ') space += 1; //空格数量 else if (ch >= '0' && ch <= '9') number += 1; //数字数量 else other += 1; //其他字符数量 } printf("%d %d %d %d", letter, number, space, other); return 0; }
ii:for(),数组处理
#include <stdio.h> #include <string.h> int main(void) { char str[200];//声明一个数组用于存储输入的字符 int letter = 0, number = 0, space = 0, other, n; gets(str); //获取输入并存储到数组里,gets会把输入的换行符\n丢弃 n = strlen (str); //获取输入的字符长度 for(int i = 0; i < n; i++)//for循环可以声明变量同时初始化,多个声明用 , 逗号隔开 { if ((str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z')) letter += 1; if (str[i] == ' ') space += 1; if (str[i] >= '0' && str[i] <= '9') number += 1; } other = n - space - number - letter; //把整个字符长度减去字母数、空格、数字得出其他字符的数量 printf("%d %d %d %d", letter, number, space, other); return 0; }
0.0分
94 人评分
#include<iostream> #include<string> using namespace std; int main() { string code; getline(cin, code); int letter = 0, number = 0, space = 0, other = 0; int n = code.length(); for (int i = 0; i < n; i++) { if (code[i] >= '0' && code[i] <= '9') number += 1; else if ((code[i] >= 'a' && code[i] <= 'z')||(code[i]>='A'&&code[i]<='B')) letter += 1; else if (code[i] == ' ') space += 1; else other += 1; } cout << letter <<" "<< number <<" "<< space <<" " << other << endl; return 0; }
#include<stdio.h> #include<string.h> int i,al,num,k,q; int main(){ char a[250]; int len=0; /*scanf("%[^\n]%*c",a); len=strlen(a); printf("%d\n",len);*/ fgets(a,sizeof(a),stdin); len=strlen(a)-1; //printf("%d\n",len); for(i=0;i<len;i++){ if(a[i]>='a'&&a[i]<'z'||a[i]>='A'&&a[i]<='Z') al++; else if(a[i]>='0'&&a[i]<='9') num++; else if(a[i]==' ') k++; else q++; } printf("%d %d %d %d",al,num,k,q); return 0; }为什么第二个测试点一直过不去啊
#include<stdio.h> int main() { int letter=0,number=0,space=0,other=0; char ch; while ((ch=getchar())!='n'){ if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')){ letter+=1; } else if(ch>='0'&&ch<='9'){ number+=1; } else if(ch==' '){ space+=1; } else{ other+=1; } } printf("%d %d %d %d",letter,number,space,other); return 0; } 大佬们请问我这个哪里错了啊
dotcpp0748478 2024-04-03 19:24:01 |
啊啊啊啊 我照你的改了半天,不知道为什莫一直错,刚看到你的最后一句话
Lgun 2024-04-10 16:05:18 |
我重新打一遍对了又,你可以试试
Lgun 2024-04-10 16:05:42 |
@dotcpp0748478 我重新打一遍对了又,你可以试试
dotcpp0781171 2024-08-10 20:30:40 |
while 那行应该是转义符\n
#include<stdio.h> int main() { int n; long long x=1,Sn=0; scanf("%d",&n); if(n==0){ Sn=0; }else{ for(int i=1;i<=n;i++){ x=x*i; Sn=Sn+x; } } printf("%lld",Sn); return 0; }
#include <stdio.h> int main(void){ int letter = 0,number = 0,space = 0,other = 0; char ch; while( (ch = getchar()) !='\n'){ if((ch >='A'&& ch <='Z')||(ch >='a'&&ch <='z')) letter += 1; else if(ch ==' ') space += 1; else if(ch>='0'&& ch<='9') number += 1; else other += 1; printf("%d %d %d %d", letter, number, space, other); } return 0; } //这是哪里出问题了,显示答案错误
亮哥丬 2024-02-22 10:32:26 |
输出要放在循环外
#include<stdio.h> #include<string.h> int main() { char str[100]; int letter=0,number=0,kongge=0,other=0; int n; gets(str); n=strlen(str); for(int i=0;i<=n;i++) { if(str[i]>='A'&&str[i]<='Z'||str[i]>='a'&&str[i]<='z') letter+=1; if(str[i]==' ') kongge+=1; if(str[i]>='0'&&str[i]<='9') number+=1; } other=n-letter-kongge-number; printf("%d %d %d %d",letter,kongge,number,other); return 0; }为什么提交时一直显示答案错误呢? 但是在线测试里面是算得出正确结果的啊? 哪位大神可以解释一下哇!
徐尽欢 2024-01-20 22:05:56 |
你的输出和答案样例的输出顺序不一样,答案是“23 16 2 4”,你的是“23 2 16 4”
#include<stdio.h> int main() { char c; int c1=0,c2=0,c3=0,c4=0; printf("输入一行字符\n"); while((c=getchar())!='\n') { if(c>='A'&&c<='Z'||c>='a'&&c<='z') c1++; else if(c>='0'&&c<='9') c2++; else if(c==' ') c3++; else c4++; } printf("%d%d%d%d",c1,c2,c3,c4); return 0; } 各位大神,我这哪里错了
23计科2班047周雯浩 2023-12-08 22:33:42 |
注意格式,C语言网输出的数字之间有间隔
朱扬宇 2023-12-15 09:35:22 |
c>='A'&&c<='Z'||c>='a'&&c<='z'为什么不单独括起来
Mrqian 2023-12-25 14:32:07 |
回车结束。可能你的输入最后不小心打了一个空格。
Mrqian 2023-12-25 14:53:24 |
while((h=getchar())!='\n') 少了括号
Mrqian 2023-12-25 14:53:59 |
回复错了不好意思
徐尽欢 2024-01-20 22:04:47 |
你的输出和答案样例的输出顺序不一样,答案是“23 16 2 4”,你的是“23 2 16 4”
徐尽欢 2024-01-20 22:06:23 |
回复错了人了,不好意思
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:548 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:484 |
【偶数求和】 (C语言代码)浏览:674 |
C语言程序设计教程(第三版)课后习题6.8 (C++代码)浏览:614 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:638 |
1908题解浏览:680 |
出圈】指针malloc版浏览:377 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:755 |
简单的a+b (C语言代码)浏览:444 |
1197求助浏览:667 |
fancy 2024-11-12 00:57:38 |
都挺好