問題是:輸入一個正整數 repeat (0<repeat<10),做 repeat 次下列運算:
輸入一個正整數 n (1<n<=10),然後輸入 n 個字符串,輸出其中最長的字符串,如果字符串的長度相同,則輸出先輸入的字符串。
#include <stdio.h>
#include <string.h>
int main(void)
{
char sx[80], longest[80];
int i, n;
int repeat, ri;
scanf("%d", &repeat);/*循環的次數*/
for(ri = 1; ri <= repeat; ri++)
{
scanf("%d", &n);/*輸入的字符串的個數*/
scanf("%s", sx);/*首個輸入的字符串*/
for(i=0;i<n;i++)
{
scanf("%d",longest);
if(strlen(longest)>strlen(sx))/*比較兩個字符串的大小*/
strcpy(sx,longest);/*把大的字符串賦值給sx*/
else
strcpy(longest,sx);/把大的字符串賦值給longest*/
}
printf("The longest is: %s\n",longest);
}
}
求高手解答啊~~為什麼我這裡一只沒有輸出的,而且repeat 似乎也沒有起到效果。。先拜謝了~~
補充:/*比較兩個字符串的大小*/是比較長度,打錯了。。主要問題是: 回車換行也會讀入一個 字符串:
// ww.cpp : 定義控制台應用程序的入口點。
//
#include <stdio.h>
#include <string.h>
int main(void)
{
char sx[80], longest[80];
int i, n;
int repeat, ri;
scanf("%d", &repeat);/*循環的次數*/
for(ri = 1; ri <= repeat; ri++)
{
scanf("%d", &n);/*輸入的字符串的個數*/
getchar();
scanf("%s", sx);/*首個輸入的字符串*/
for(i=1;i<n;i++)
{
scanf("%s",longest);
if(strlen(longest)>strlen(sx))/*比較兩個字符串的大小*/
strcpy(sx,longest);/*把大的字符串賦值給sx*/
else
strcpy(longest,sx);/*把大的字符串賦值給longest*/
}
printf("The longest is: %s\n",longest);
}
}
謝謝啊,你的意思是沒有getchar的話sx就變成了回車對嗎?
是的。在這裡 scanf("%d", &n);,按一下回車後,會讀入一個字符串 復制給 sx。
for(i=1;i<n;i++)//這兒從1開始,你剛才從0開始了,因為你前面已經輸入了一個,所以從1開始