本文主要是介绍【C++】每周一题——2024.3.3(手滑再写一篇),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
Cpp
【问题描述】
输入一个由若干个以空格分隔的单词组成的英文文章,求文章中最短的单词(文章以英文句点”.”结束,且字符数不超过200).
【输入格式】
一行,表示输入的英文文章。
【输出格式】
一行,表示最短单词
【输入样例】
We are Oiers.
【输出样例】
We
【数据范围】
英文文章字符数不超过200
思路
非常非常简单,既然单词都是用空格隔开,那么就可以直接循环输入了。
代码
-
框架
int main(){return 0; }
-
循环输入
#include<cstdio> //scanf() char a[256]; int main(){while(true){scanf("%s", &a);}return 0; }
-
判断长度并赋值。
因为要保证第一次可以赋新值,所以先将数组改变大小。#include<cstdio> //scanf() #include<cstring> //memset(), strlen(), strcpy() char a[256], b[256]; int main(){memset(b, 1, sizeof(b));while(true){scanf("%s", &a);if(strlen(b)>strlen(a)){strcpy(a, b);}}return 0; }
-
如果发现了句点就退出循环,并输出。
#include<cstdio> //scanf(), printf() #include<cstring> //memset(), strlen(), strcpy() char a[256], b[256]; int main(){memset(b, 1, sizeof(b));while(true){scanf("%s", &a);if(a[strlen(a)-1]=='.'){a[strlen(a)-1]='\0';if(strlen(b)>strlen(a)){strcpy(b, a);}break;}if(strlen(b)>strlen(a)){strcpy(a, b);}}printf("%s", a);return 0; }
答案
#include<cstdio>
#include<cstring>
char a[256], b[256];
int main(){memset(b, 1, sizeof(b));while(true){scanf("%s", &a);if(a[strlen(a)-1]=='.'){a[strlen(a)-1]='\0';if(strlen(b)>strlen(a)){strcpy(b, a);}break;}if(strlen(b)>strlen(a)){strcpy(a, b);}}printf("%s", a);return 0;
}
这篇关于【C++】每周一题——2024.3.3(手滑再写一篇)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!