程式設計題:編寫一個程式碼,將“i am from shanghai”倒置為“shanghai from am i”
阿新 • • 發佈:2019-02-14
題目要求:編寫一個程式碼,將“i am from shanghai”倒置為“shanghai from am i”,即將句子中單詞的位置調換,
但不改變單詞內部的順序
#include <stdio.h> #include <iostream> #include <string.h> using namespace std; int main() { int nn = 0; //記錄str1陣列的下標 int j = 0; //記錄n陣列的下標 int n[1024] = {0}; //存放原字串中空格字元與結束字元的下標 char str[1024] = {0}; //存放輸入的字串 char str1[1024] = {0}; //存放調換位置後的字串 cout << "請輸入一串字元:"; gets(str); //cout << str << endl; int len = strlen(str); //cout << len << endl; for(int i = 0;i <= len;i++) //找出字串中空格與結束字元的位置並存放在陣列n中 { if(str[i] == ' ' || str[i] == '\0') { n[j++] = i; } } //cout << n[2] << endl; for(int i = j-1;i >= 1;i--) //兩個空格下標相減再減一可得空格間字串長度 { for(int m = 0,k = (n[i]-n[i-1]-1);m < (n[i]-n[i-1]-1);m++,nn++,k--) //迴圈將空格間字串放到str1中 { str1[nn] = str[n[i]-k]; } str1[nn++] = ' '; //一個字串存放結束,就加上“ ” } for(int m = 0,k = n[0];m < n[0];m++,nn++,k--) //第一個字串較特殊,長度等於第一個空格的下標 { str1[nn] = str[n[0]-k]; } //str1[nn++] = '\0'; strcpy(str,str1); cout <<"輸出結果為:" << str << endl; return 0; }