1.用函数和指针完成下述程序功能:有两个整数a和b,由用户输入1,2或3。如输入1,程序就给出a和b中大者,输入2,就给出a和b中小者,输入3,则求a与b之和。
代码:
#include <iostream>
using namespace std;
int func(int *a,int *b,int num){
int temp = 0;
if(num == 1){
if(*a > *b)
temp = *a;
else
temp = *b;
}else if(num == 2){
if(*a < *b)
temp = *b;
else
temp = *a;
}else if(num == 3){
temp = *a + *b;
}
return temp;
}
int main(){
int a,b,num;
int *p1,*p2;
p1 = &a,p2 = &b;
printf("请输入两个数:");
cin >> a >> b;
printf("请输入1 or 2 or 3:");
cin >> num;
int result = func(p1,p2,num);
printf("结果为:%d",result);
return 0;
}
运行结果:
2.编写一个程序,在主函数中建立数组并输入n个数,调用自定义函数对这n个数进行排序,然后显示排序的结果。(要求用指针作为函数参数进行传递)
代码:
#include <iostream>
#include <algorithm>
using namespace std;
void SelectSort(int* data,int n){
for(int i = 0;i < n-1;i++){
int index = i;
for(int j = i+1;j <= n-1;j++){
if(data[j] < data[index])
index = j;
}
swap(data[i],data[index]);
}
}
int main(){
int* data,n;
printf("输入数组长度:");
cin >> n;
data = new int[n];
printf("输入数组元素:");
for(int i = 0;i < n;i++)
cin >> data[i];
SelectSort(data,n);
printf("选择排序后:");
for(int i = 0;i < n;i++)
printf(" %d",data[i]);
delete[] data;
return 0;
}
运行结果:
3.
用指针数组实现下述程序功能:0~6分别代表星期日至星期六,当输入其中任意一个数字时,输出相应英文单词。
代码:
#include <iostream>
#include <string>
using namespace std;
int main(){
string data[7] = {"Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."};
string *p[7];
for(int i = 0;i < 7;i++)
p[i] = &data[i];
int num;
printf("输入一个数(0-6):");
cin >> num;
printf("输出相应的英文单词:");
cout << *p[num];
return 0;
}
运行结果: