1. 程式人生 > >簡單的演算法程式設計題-任意段落按照單詞逆序輸出

簡單的演算法程式設計題-任意段落按照單詞逆序輸出

                     

把這個問題拋給溫州皮鞋廠老闆,老闆直接就說這個題目的本意是讓你提出stack的解決方案

  what?stack?too low!

  因為這麼個問題還要實現一個stack有點場面大了,事實上誰不知道你把一個個單詞push進去,然後再pop出來不就好了嗎?所以說stack方案太通用,不足掛齒。…週末沒事幹時折騰點此類問題,沒有錯,錯在拉開蚊帳睡覺時吵醒瘋子和小小,事情偶爾會變嚴重。

  另外,使用C語言完成和使用Java完成完全不同,Java呼叫現成的class會非常簡單,複雜度完全隱藏在了內部。此外,C語言是否可以用strtok也必須有所約束。以下是我的方案,非常好玩,像我這種不會程式設計的人,請不要笑我。因為我沒有用strlen,沒有用strcpy,沒有用malloc…:

#include <stdio.h>#include <stdlib.h>int ok(char c){        if ( (c <= 90 && c >= 65) || (c <=122 && c >= 97) )                return 1;        return 0;}int main(int argc, char **argv){        char orig[] = {'i', ' ', 'a', 'm', ' ', 'a', ' ', 's', 't', 'u', 'd'
, 'e', 'n', 't', ',', 'a', 'n', 'd', ' ', 'y', 'o', 'u', 0};        char *buf = orig, *tbuf = orig;        int i = 0, j = 0;    // 獲取長度        while (*tbuf++ != 0) j++;    // 前後逆序交換        for (j--; j > i; i++, j--) {                char c = orig[i];                orig[i] = orig[j];                orig[j] = c;        }    // 遍歷
        while (*buf != 0) {                int k = 0, p = 0;                char *temp = buf;                while (ok(*(buf++))) {                        k++;                }        // 按照單詞逆序                for (k--; p < k; p++, k--) {                        char c = temp[p];                        temp[p] = temp[k];                        temp[k] = c;                }        }    // 列印結果        printf("%s\n", orig);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

看似個鴛鴦蝴蝶,不應該的年代。嗯?有啥不應該?

  不多說。