1. 程式人生 > >pat乙級1009說反話 以及加強版

pat乙級1009說反話 以及加強版

在這裡插入圖片描述

  #include<iostream>
    #include<string.h>
    using namespace std;
    int main()
    {
    	char st[81];
    	char a[81][81];
    	cin.get(st,81);
    	int column,line;
    	column=line=0;
    	for(int i=0;i<strlen(st);i++){
    		if(st[i] != ' '){
    			a[column][line++]=st[i];
    		}
    		else{
    			a[column][line]='\0'; //每個字串後面加上結束符 不加會越界
    			column++;
    			line=0;
    		}
    	}
    	a[column][line]='\0';
    	for(int j=column;j>=1;j--){
    		cout<<a[j]<<" ";
    	}
    	cout<<a[0];
    	return 0;
    }

下面是可以實現兩個字元之間存在多個空格的情況,思路和上面一樣,只是在遇到空格時加個迴圈就ok了

#include<iostream>
#include<string.h>
#include<cstdio>
using namespace std;
int main()
{
	char st[81];
	char a[81][81];
	cin.get(st,81);
	int column,line;
	column=line=0;
	for(int i=0;i<strlen(st);i++){
		if(st[i] != ' '){
			a[column][line++]=st[i];
		}
		else{
			a[column][line]='\0';// 
			while(st[i] == ' '){
				i++;
			}
			i--;   //注意此時跳出迴圈條件是不為空格  如果不進行i-- for迴圈裡還要再進行i++ 肯定會漏掉字串 下圖1所示 
			column++;
			line=0;
		}
	}
	a[column][line]='\0';
	for(int j=column;j>=1;j--){
		cout<<a[j]<<" ";
	}
	cout<<a[0];
	return 0;
}`

圖1
正確情況
在這裡插入圖片描述