程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> C語言裡找最長的字符串

C語言裡找最長的字符串

編輯:C語言問答

C語言裡找最長的字符串

10

問題是:輸入一個正整數 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開始

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved