阳泉市网站建设_网站建设公司_跨域_seo优化
2025/12/17 23:38:58 网站建设 项目流程

题目:HDOJ 2026

代码

/* HDOJ 2026 https://acm.hdu.edu.cn/showproblem.php?pid=2026 首字母大写 */ #include<iostream> #include<cstring> using namespace std; char a[105]; int main() { while (fgets(a, sizeof(a), stdin)) { //getchar();这里不需要消除换行符吗:不需要,fgets会读取一行全部的内容包括换行符 int len = strlen(a);//strlen是一直在变的,所以要用变量暂存 for (int i = 0; i < len; i++) { if (i == 0||a[i-1]==' ') { if (a[i] >= 'a' && a[i] <= 'z') {//这里首先要判断是不是大小写 a[i] = a[i] - 32; /* 也可以这么实现 a[i]+='A'; a[i]-='a'; */ } } } printf("%s", a);//这样输出更加简单,这里不需要另外输出换行符,因为fgets会读取换行符,所以输出时换行符会跟着输出 } return 0; }

反思

1.考察的知识点:字符串的输入输出

2.踩的坑:首先是没有暂存strlen的值,导致遍历时和输出时出现缺少内容问题,

然后是没有搞清楚strlen和sizeof分别代表什么,搞混了,sizeof求的是整个数组的存储空间,与内容无关,而strlen求的是字符串的长度。

然后,是没有考虑单词首字母本来就是大写的情况,

然后,每次输入时,由于fgets的特殊性,会输入一行内包含换行符的所有内容,并在末尾加上换行符,比如: hello World!\n\0,然后上次输入导致后续残留的内容就会被截断,前面的就会被覆盖,所以不用清空也无影响,

然后输出时利用printf和%s,更加简单。

3.可以改进的地方:无。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询