1. 程式人生 > >三道跟string有關的題

三道跟string有關的題

參考string的函式

①來源 && 題目資訊

這道題我卡在不知道怎麼儲存多個字串,後面學習到了…

一般我使用string字串的輸入,都是這樣 :

#include <iostream>
#include <string>
using namespace std;

int main()
{
	string a;
	
	/*不讀人空格
	cin >> a;
	
	cout << a << endl;
	*/	
	
	/*讀入空格
	getline( cin , a );
	
	cout << a << endl;
	*/
return 0; }

因此,我認為string是不可以寫出 string a【i】的形式的。所以,不知道怎麼儲存多個字串。

但是那道題改變了我的想法 , string也是可以用 a【i】的 。

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    string a[7];

    for( int i = 0 ; i < 7 ; i ++)
    {
        cin >> a[i];
    }

    for( int i =
0 ; i < 7 ; i ++) { cout << a[i] << endl; } return 0; }

哎。。。。。。。。。。

②來源 && 題目資訊

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
     
    cin >> n;
     
    string a[150];
     
    int x,y,z,j,k ;
     
    int i = 0 ,
s = 0; char ar[1000]; char ae[1000]; for( x = 0; x < n ; x ++) cin >> a[x]; for( x = 0 ; x < n ; x ++) for( y = x + 1; y < n; y ++) if( a[x] == a[y]) s ++; for( x = 0 ; x < n ; x ++) { int len = a[x].length(); ar[x] = a[x][len-1];//第 i 個 字串的 第 len - 1 個字元。 ae[x] = a[x][0]; } for( x=0 ; x < n - 1 ; x ++) { if( ae[x+1] != ar[x]) i++; } if( i == 0 && s == 0) cout<<"Yes"; else cout<<"No"; return 0; }

哎。。。。。。。。。。。

③來源 && 題目資訊

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int t , i;

    string a;

    while(cin >> a)
    {
        t = a.find(".");//找到 小數點 在字串中的位子。

        if( t == -1)//返回-1,說明沒找到
        {
            a = a + ".00";
        }

       else
       {
           if( a[t + 1] == '\0')//小數點後第一位是不是空 , 如果是則為 X.00
           {
               a = a + "00";
           }

           if( a[t + 2] == '\0' )//小數點後第二位是不是空 , 如果是則為 X.X0
           {
               a = a + '0';
           }

            if( a[t + 3] != '\0' )//小數點後第三位是不是空 ,不是則判斷四捨五入。
           {
               if( a[t+3] >= '5' && a[t+3] <= '9')
               {
                   a[t+2]++;

                   a[t+3] = '\0';

                    if( a[t+2] == ':')
                    {
                         a[t+2] = '0';

                         a[t+1]++;

                        if( a[t+1] == ':' )
                        {
                            a[t+1] = '0';

                            a[t-1]++;

                            for( i = t - 1 ; i > 0 ; i --)
                            {
                                if( a[i] == ':' )
                                {
                                    a[i] = '0';

                                    if( i == 1 && a[i-1] == '-')
                                    {
                                        a[0] = '1';

                                        a = "-" + a;
                                    }

                                    else a[i - 1] ++;
                                }
                            }

                            if( a[0] == ':' )
                            {
                                a[0] = '0';

                                a = "1" + a;
                            }

                        }
                    }
               }

                else a[t + 3] = '\0';
           }
       }

        t = a.find(".");

        int s = 0;

        for( i = 0 ; i < t ; i ++)
        {
            if( a[i] == '0')
            {
                s ++;
            }
        }

        if( a[0] != '-' && s == t)
        {
            a.replace( 0 , t , "0");
        }

        else if( a[0] == '-' && s == t - 1)
        {
            a.replace( 1 , s , "0");
        }

        else if( a[0] == '-')
        {
            while( a[1] == '0')
            {
                a.erase(1,1);//第二個字元是0,則刪除第三個字元。
            }
        }

        else if( a[0] != '-')
        {
            while( a[0] == '0')
            {
                a.erase(0,1);//第二個字元是0,則刪除第二個字元。
            }
        }

       	t = a.find(".");

       	if( a[0] != '-')
        {
            for( i = t - 1 ; i > 2 ;  )
            {
                a.insert( i - 2 ,",");

                t = a.find(",");

                i = t - 1;
            }
        }

        else
        {
            for( i = t - 1 ; i > 3 ; )
            {
                a.insert( i - 2 , "," );

                t = a.find(",");

                i = t - 1;
            }
        }

        if(a[0]=='-')
        {
            a.erase(0,1);

            cout << "(" << a.c_str() << ")" << endl;
        }

        else

		cout << a.c_str() << endl;
    }

    return 0;
}

/*

c_str 是c++ 中 string類 (class) 的 函式,
它能把 string類 的物件裡的字串
轉換成 C 中 char 型變數 的 字串。

*/

NICE ! ! !