1. 程式人生 > >輸入一串字元,找出最長和最短單詞並輸出

輸入一串字元,找出最長和最短單詞並輸出

在上篇的基礎上,稍新增幾個變數則可輸出最長和最短;

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    char arr[1024] = {0};
    char brr[50] = {0};
    char crr[50] = {0};

    puts("請輸入");
    scanf("%[^\n]",arr);// %[^\n]掃描集用法,表示讀取除"\n"以外的字元

    int i,j;
    int n,m = 0;// n 標記單詞尾,m標記單詞頭,必須初始 m = 0;
    int len = strlen(arr);
    int b_len = 0;// 設定最長比較值
    int c_len = 50;// 設定最短比較值
    for(i = 0;i < len;i++)
    {
        if(arr[i] == ' ' || i == len - 1)
        {
            n = i;
            if(n - m > b_len)
            {
                b_len = n - m;
                int k = 0;
                memset(brr,0,50);//在找到最長單詞前每次清零,防止記憶體洩漏
                for(j = m;j < n;j++)
                {
                    brr[k++] = arr[j];
                }
                if(i == len - 1)
                {
                    brr[k++] = arr[len - 1];
                }
            }
            if(n - m < c_len)
            {
                c_len = n - m;
                int k = 0;
                memset(crr,0,50);//在找到最短單詞前每次清零,防止記憶體洩漏
                for(j = m;j < n;j++)
                {
                    crr[k++] = arr[j];
                }
                if(i == len - 1)
                {
                    crr[k++] = arr[len - 1];
                }
            }
            m = i + 1;//i == ' '時,i + 1 表示下一個單詞頭
        }
    }
    puts("最長單詞:");
    printf("%s\n",brr);
    puts("最短單詞:");
    printf("%s\n",crr);
    return 0;
}


相關推薦

輸入字元單詞輸出

在上篇的基礎上,稍新增幾個變數則可輸出最長和最短; #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char arr[1024] =

輸入字元把其中的大寫字母變成小寫字母輸出

#include <stdio.h> #define MAX 1000//最大化容量 #include <string.h> int main()`在這裡插入程式碼片` { char a[MAX]; printf("輸入字串

輸入字元只包含“0-10”“,”其中小的數字大的數字(可能不止一個)輸出最後剩餘數字個數

輸入一串字元,只包含“0-10”和“,”找出其中最小的數字和最大的數字(可能不止一個),輸出最後剩餘數字個數。如:輸入  “3,3,4,5,6,7,7”        輸出   3 支援0-10 #include "stdafx.h" int _tmain(int a

輸入組數字其排列的小值

#include <iostream> using namespace std; void bubblesort(int a[], int x) {     int y, z;     for (y = 0; y <= x - 1; y++) {   

輸入組數其中滿足某種條件的數(二)

new pan cout include str view 哈希 出現 ash 書接上文。 輸入一組數,找出其中滿足某種條件的數。 短短的一句話,可以衍生出各種場景。今天遇到一道題,輸入一些學生的分數,哪個分數出現的次數最多?如果有多個並列,從大到小輸出。分數均為不超過10

輸入字元判斷其中英文字元數字字元的個數——C語言實現(C語言練習)

先看程式執行的結果,(文末有該程式的完整程式碼)   1、先寫好框架 #include<stdio.h> void main() { } 2、再定義所需要的變數 char str;//定義一個字元型變數 str int i=0,counte

給定個數組陣列缺少的小的正整數

題目使這樣的:請設計一個高效演算法,查詢陣列中未出現的最小正整數。 給定一個整數陣列A,請返回陣列中未出現的最小正整數。 測試樣例: [-1,2,3,4] 返回1 一看到這個題目我想到的是用另外的一個數組B,長度為A的長度+1,來儲存遍歷陣列A的數的值。 if(A[i]

輸入字元分別輸出字母 數字 符號的個數以$結束

# include <iostream> using namespace std; int main() { char ch; int xiao = 0; int da = 0;

10月7日 c語言 輸入字元單詞之間用空格隔開統計其中有多少個單詞

#include<stdio.h> int main() {char string[100];int i,num=0,word=0;char c;printf("please input a sentense\n");gets (string);for(i=0;

筆試題輸入字元倒敘單詞輸出結尾符號不變

      案例,輸入“Hello I am there!”        輸出“there am I Hello!”     程式簡單直接上   import java.util.Scanner; public class A{ public static v

go語言面試題:輸入段英文字串重複出現次數多的字母

package main import ( "bufio" "os" "fmt" "strings" ) func main() { reader := bufio.NewReader(os.Stdin) str, err := reader.

作業題:輸入4個整數其中大的數。用一個函數來實現. 分別使用結構化方法函數嵌套的方法。

system 是否 進行 如果 div 使用 clu 函數 整型 之前在main()函數中的思路是: #include <iostream> using namespace std; int main(){ //求四個數中最大的數? /

在一個無序整數數組中連續增長片段段, 增長步長是1。Example: [3,2,4,5,6,1,9], 的是[4,5,6]

lse [] 是我 == push color 感覺 bsp emp 在一個無序整數數組中,找出連續增長片段最長的一段, 增長步長是1。Example: [3,2,4,5,6,1,9], 最長的是[4,5,6] 下面是我自己的編寫的代碼,感覺還能再優化。 希望有大神可以分享

一個輸入的陣列中長度為101陣列範圍[1,100]存在個數重複重複的數

  /********************************************* *函式功能: 一個輸入的陣列中長度為101,陣列範圍[1,100],存在一個數重複,找出重複的數 *引數說明 * 輸入: [1,2,4,5,6,...,39,39,40,41,

輸入字元,將其中的大寫變成小寫若不為大寫則原樣輸出

方法一 import java.util.Scanner; public class Main {     public static void main(String[] args) {         

輸入n個整數其中小的K個數

vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { int len=input.si

輸入n個整數其中小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字小的4個數字是1,2,3,4,。

解題思路: 1、最簡單方法,先排序,再取前k個,時間複雜度O(NlogN) class Solution { public: vector<int> GetLeastNumbers

給定個數組這個大的連續子陣列的

將這個連續子陣列分為兩部分,一個是字首,一個是後一個元素,要使這個連續子陣列最大,那麼它的字首肯定不能為負,不然這個字首對即將加上的值就無意義,用一個max記錄最大值,每次當前綴加上後一個元素的時候判斷和是否大於max,大於則更新max,再判斷和是否小於0,小於0則將字首更

Linux-C基礎知識學習:C語言作業-輸入10個整數其中大值小值

Linux基礎知識學習 C語言作業:輸入10個整數,找出其中最大值和最小值 //讀10個整數存入陣列,找出其中最大值和最小值 #include <stdio.h> main(){ p

c語言從鍵盤中輸入字串字元中的大寫轉化成小寫字母將小寫字母轉換成大寫字母以*號鍵結束

#include <stdio.h> int main(int argc, const char * argv[]) {     char c;      c=getchar();     while (c!='*')     {         if(c