gets()的一个疑问 训练题目:统计字母个数
程序员文章站
2022-07-15 09:06:29
...
这个是我在做题的时候碰到的。
先看看一下原题:
【问题描述】对任意输入一个字符串A,数一数里面包含了多少个字母,输出个数。
如:输入 5df*8e7d4+fe45d
输出 zimu:7
下面是我一开始的程序:
#include<bits/stdc++.h>//这个是一个万能库
using namespace std;
int main(){
char c[1000];
int zimu=0;
gets(c);//输入一串字符
int len=strlen(c);
for(int i=1;i<=len;i++){//判断是不是字母
if(c[i]>='a'&&c[i]<='z')zimu++;
if(c[i]>='A'&&c[i]<='Z')zimu++;
}
printf("zimu: %d",zimu);//输出字母个数
}
结果如下:
然而,一个评测平台却显示答案错误。
很显然结果少了1。
之后我就在输出变量后面+1,答案就对了。
#include<bits/stdc++.h>
using namespace std;
int main(){
char c[1000];
int zimu=0;
gets(c);
int len=strlen(c);
for(int i=1;i<=len;i++){
if(c[i]>='a'&&c[i]<='z')zimu++;
if(c[i]>='A'&&c[i]<='Z')zimu++;
}
printf("zimu: %d",zimu+1);//输出+1
}
结果:
居然通过了,然而我没有找到原因,希望看到的朋友伸出援助之手。
下一篇: B树第末节学习(高度及性能分析)