华为机考HJ13句子逆序C语言弱智解法
生活随笔
收集整理的這篇文章主要介紹了
华为机考HJ13句子逆序C语言弱智解法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
華為機考HJ13句子逆序C語言弱智解法
句子逆序C語言低端解法,易于理解。
1.收數據老生常談。
2.將句子全部逆序。
3.將單詞正序。
(這里有一個bug,最后一個詞(原句子第一個詞)總是收不到,所以寫了個補丁。先記錄空格的數量,當第二次讀取的時候,讀到最后一個空格的時候,直接跳進最后一個詞,然后單獨把最后一個詞正序輸出,此時用這個小功能內部的變量繼承了主循環的變量,正序之后直接將輸出第一個詞。)
4.通過小功能內部的變量終值與字符串長度比較,以順利跳出程序。
#include<stdio.h>
#include<string.h>int len=0;
char stru[10000],in,asb[10000];
int i,j,k;
int pau,pau2;
char reg;
int flag,flag2;
int esnum;int main()
{//收入數據while (1){scanf("%c", &in);// in = getchar();if (in == '\n')break;stru[len++] = in;}//句子全部逆序pau = len-1;for(i=0;i<len/2;i++,pau--){reg = stru[i];stru[i] = stru[pau];stru[pau] = reg;//printf("%s",&stru[i]);}//統計空格數量for(i=0;i<len;i++){if(stru[i] == ' ')esnum++;}//單詞正序 i=0,j=0;for(i=0;i<len;i++){//最后一個空格之前的單詞正序if((stru[i] == ' ')){ for(k=0;k<j/2;k++,pau--){reg = asb[k];asb[k] = asb[pau];asb[pau] = reg;}for(k=0;k<j;k++){printf("%c",asb[k]);}j=0;printf(" ");flag++; // if(flag==esnum)// continue;}else{asb[j]=stru[i];j++;pau=j-1;}if(flag==esnum)//空格數量比較,開啟末尾單詞正序小功能{flag2=i;pau2=len-1;for(k=flag2;k<(flag2+(len-flag2)/2);k++,pau2--){reg = stru[k];stru[k] = stru[pau2];stru[pau2] = reg;}for(;flag2<len;flag2++){printf("%c",stru[flag2]);}printf("\n");break;}if(flag2==len-1)//小功能內部的變量終值與字符串長度比較break;}return 0;}
總結
以上是生活随笔為你收集整理的华为机考HJ13句子逆序C语言弱智解法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 看电影时为啥总自动关机
- 下一篇: HJ0427分隔输出