c++的题目如下:题目描述: 大家都知道Word是一个强大的文字处理软件,具有丰富的字数统计功能。 小明听说你学习了程序设计,想请你帮他制作一个简易统计字数的软件,现在给定小明书写的一段文字,请你统计出文字中,英文字母数量,数字字符数量。 输入格式: 第一行包含一个字符串包含英文字母和数字,以及一些常见标点符号,不包含中文。 输出格式: 两个整数,中间用空格分隔,分别表示英文字母数量和数字字符数量。 输入样例: 2018YuyaoProgrammingContest. 输出样例: 23 4 说明/提示 样例解释: 共23个大小写英文字母“YuyaoProgrammingContest”,4个数字“2018”。 样例2输入: You are the best! 样例2输出: 13 0 这段话中只有13个英文字符,并没有数字。 对于60%的数据,这段文字中的长度不超过200。 对于100%的数据,文字长度不超过1000。 另有50%的数据,不包含空格字符。用以下代码只得了70分:#include<iostream> using namespace std; int main(){ char c[1000]; gets(c); int i=0,smallletters = 0, largeletters=0,digit = 0; while (c[i]!='\0'){ if (c[i] >= 'a' && c[i] <= 'z'){ smallletters++; }else if (c[i] >= 'A' && c[i] <= 'Z'){ largeletters++; }else if (c[i] >= '0' && c[i] <= '9'){ digit++; } i++; } cout<<smallletters+largeletters<<" "<<digit; return 0; }
时间: 2023-06-18 12:06:31 浏览: 77
可以通过以下代码实现该功能:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char c[1001];
cin.getline(c, 1001); // 使用cin.getline()函数读取字符串,可以避免gets()函数的安全问题
int smallletters = 0, largeletters = 0, digit = 0;
for (int i = 0; i < strlen(c); i++) {
if (c[i] >= 'a' && c[i] <= 'z') {
smallletters++;
} else if (c[i] >= 'A' && c[i] <= 'Z') {
largeletters++;
} else if (c[i] >= '0' && c[i] <= '9') {
digit++;
}
}
cout << smallletters + largeletters << " " << digit << endl;
return 0;
}
```
主要修改点如下:
1. 使用`cin.getline()`函数代替`gets()`函数,可以避免`gets()`函数的安全问题;
2. 使用`strlen()`函数获取字符串长度,避免不必要的循环;
3. 在最后输出时加上一个换行符,使输出符合题目要求。