【FOJ】Problem 1059 老师的苦恼

Problem 1059 老师的苦恼.

题意

大写全部换成小写,每行50个字符以内

思路

判断:是大写吗,是,-'A'+'a'

笔记

  • Output Limit Exceed 一般为某处陷入死循环,或输入没有明确的终止
    gets(str);,while循环条件为strlen(str)!=0,结果出现上方报错
  • gets()的读取规则:
    1.只要gets遇到换行符,即便它是输入的第一个字符,gets也会停止读入并返回。如果输入的第一个字符就是换行符,则字符串将被置为空串。
    2.由于gets函数读入再丢弃换行符,换行符将不会存储在字符串中。
  • gets()的返回值:
    1.正常读入(未遇到文件结尾)(读入空串也是正常读入),返回字符串,即返回字符串首地址,char*类型
    2.遇到文件结尾,返回NULL
  • 但我还是没想明白用什么用字符串长度不行,或许\n在本题也算输入,而原代码如果仅输入\n就执行结束退出(我只能想到这个了)

代码

#include<cstdio>
#include<string.h>

int main(){
	char str[51];
	while(gets(str)!=NULL){
		for(int i=0; i<strlen(str); i++){
			if(str[i]>='A' && str[i]<='Z')
				str[i] = str[i] - 'A' + 'a';
			printf("%c", str[i]);
		}
		printf("\n");
	}
	return 0;
}
发布了28 篇原创文章 · 获赞 0 · 访问量 331

猜你喜欢

转载自blog.csdn.net/qq_44531167/article/details/105126405