《C++程式與設計》(第 3 版)課堂作業 Work 12

FeiTiandeYun發表於2020-12-26

《C++程式與設計》WORK TWELVE

作者宣告:文章程式碼有借鑑各位前輩之處,如需宣告,還請聯絡作者(忘記借鑑哪位前輩的程式碼了。。)
T 1

//使用指標作為函式引數編寫程式,對輸入的兩個整數按從大到小的順序輸出,
//子函式的作用是利用指標實現兩數交換

#include <iostream>
using namespace std;
int main ()
{
    int *p1 , *p2;
    int a , b;
    cout << "請輸入兩個整數:\n";
    cin >> a >> b;
    p1 = &a , p2 = &b;
    int temp;
    if (*p1 < *p2)
    {
        temp = *p1;
        *p1 = *p2;
        *p2 = temp;   
    };
    //cout << *p1 <<" "<< *p2 << endl;
    cout << a << " " << b << endl;
    system ("pause");
}

T 2

//使用指標作為函式編寫程式,對輸入的三個整數按從大到小順序輸出,
//子函式的作用是利用指標實現兩數交換

#include <iostream>
using namespace std;
int main ()
{
    void exchange (int *p1 , int *p2);
    int a , b , c;
    cout << "請分別輸入三個整數: \n";
    cin >> a >> b >> c;
    if (a < b) exchange (&a , &b);
    if (b < c) exchange (&b , &c);
    if (a < b) exchange (&a , &b);
    cout << a << ' ' << b << ' ' << c << endl;
    system ("pause");
}
void exchange (int *p1 , int *p2)
{
    int temp;
    temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}

T 3

//寫一個函式,求一個字串的長度。
//在 main 函式中輸入字串,並輸出其長度。

#include <iostream>
#define N 100
using namespace std;
int main ()
{
    char array [N] = {   };
    char c;
    int i;
    int figure = 0;
    for (i = 0; (c = getchar()) != '\n'; i ++)
    {
        array [i] = c;
    }
    char *p = array;
    while (*p != '\0')
    {
        p ++;
        figure ++;
    }
    cout << figure <<endl;
    system ("pause");
}

T 4

//利用指標編寫函式,輸入一行字串,找出其中的大寫字母、小寫字母、空格、數字以及其他字元各有多少。

#include <iostream>
#define N 100
using namespace std;
int main ()
{
    char array [N] = {   };
    char c;
    int i;
    int space = 0;
    int captial = 0;
    int lower = 0;
    int figure = 0;
    int others = 0;
    char *p = array;
    for ( i = 0;(c = getchar ()) != '\n'; )
    {
        array [i ++] = c;
    }
    for (i = 0; *p != '\0' ; i ++)                //指標遍歷法
    {
        if (*p == ' ')
        {
            p ++;
            space ++;
        }
        else if (*p >= 'A' && *p <= 'Z')
        {
            p ++;
            captial ++;      
        }
        else if (*p >= 'a' && *p <= 'z')
        {
            p ++;
            lower ++;
        }
        else if (*p >= '0' && *p <= '9')
        {
            p ++;
            figure ++;
        }
        else 
        {
            p ++;
            others ++;
        }
    }
    cout << "空格的數量為 :\t" << space 
         << "\n大寫英文字母的數量為 :\t" << captial
         << "\n小寫英文字母的數量為 :\t" << lower
         << "\n數字的數量為 : \t" << figure
         << "\n其他字元的數量為 :\t" << others << endl;
    system ("pause");
}

T 5

//有一個字串,包含 n 個字元。
//寫一函式,將此字串從第 m 個字元開始的全部字元複製成為另一個字串。

#include <iostream>
#define N 100
using namespace std;
int main ()
{
    char array [N] = {   };
    char brray [N] = {   };
    char c;
    int i = 0;
    int location = 0;
    char *p1 = &array[0];           //將陣列 array 的首地址作為指標變數 p1 的初值
    //p1 = &array[0];                 亦可以寫成這樣的形式
    char *p2 = &brray[0];
    //p2 = &brray[0];
    while ( (*p1 = getchar ()) != '\n') p1 ++;      //當沒有空格輸入時, p1 ++
    while ( (*p2 = getchar ()) != '\n') p2 ++; 
    cout << "請您輸入您想將字串 brray 複製到字串 array 的位置: \n";
    cin >> location;
    p1 = &array[location - 1];
    p2 = &brray[0];
    for ( ; *p2 != '\0' ; p1 ++ , p2 ++)  
    {
        *p1 = *p2;
    }
    *p1 = '\0';
    //cout << array << "\n" << brray << endl;       //用於檢驗程式的正確性
    //cout << *p1 << *p2 << endl;
    cout << array << endl;
    keep_window_open ();

}

相關文章