題目
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;
}