c++題目之指標初探
阿新 • • 發佈:2021-02-10
技術標籤:c++學習
1.輸入3個整數,按由小到大的順序輸出。(要求使用指標)
#include <iostream>
using namespace std;
void swap(int *p1,int *p2);
int main()
{
int n1,n2,n3;
int *p1,*p2,*p3;
cout << "輸入三個數:" ;
cin >> n1 >> n2 >> n3;
p1=&n1;
p2=&n2;
p3=&n3;
if(n1>n2)
swap(p1,p2);
if(n1>n3)
swap(p1,p3);
if(n2>n3)
swap(p2,p3);
cout << "結果是:" << n1 << n2 << n3 << endl;
return 0;
}
void swap(int *p1,int *p2)
{int p;
p=*p1; *p1=*p2; *p2=p;
}
執行效果
2.輸入3個字串,按由小到大的順序輸出。(要求使用指標)
#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;
/*設計思路是,用字串處理函式strcmp比較輸入的字串,
根據返回值判斷是否需要交換*/
//交換函式的設計是用二級指標,用指標指向字元陣列,再用指標的指標實現交換
void swap(char** a,char** b)
{
char* temp; //指標的指標
temp= *a;
*a= *b;
*b=temp;
}
int main()
{
char a[50],b[50],c[50];
cin >> a >> b >> c;
char *p1=a,*p2=b,*p3=c;
if(strcmp(p1,p2)>0)
swap(&p1,&p2);
// 交換p1,取p1地址
if(strcmp(p1,p3)>0)
swap(&p1,&p3);
//這裡注意,字元陣列的地址就是它第一個字元的地址
if(strcmp(p2,p3)>0)
swap(&p2,&p3);
cout << a <<' '<< b <<' '<< c <<endl;
return 0;
}
執行效果
3.通過鍵盤輸入一個字元,判斷字元的種類(數字、大寫字母、小寫字母還是其他字元。(要求使用指標)
#include <iostream>
using namespace std;
int main ()
{
char a;
char *p = &a;
cin >> a;
if(65<=*p&&*p<=89)
{
cout << "是大寫字母" << endl;
}
else if(97<=*p&&*p<=121)
{
cout << "是小寫字母" << endl;
}
else if(48<=*p&&*p<=57)
{
cout << "是數字" << endl;
}
else
cout << "是其他字元" << endl;
return 0;
}
執行效果