1 #include <iostream> 2 3 using namespace std; 4 5 //要通过函数调用来改变主调函数中某个变量的值: 6 //(1) 在主调函数中,将该变量的地址或者指向该变量的指针作为实参 7 //(2) 在被调函数中,用指针类型形参接受该变量的地址 8 //(3) 在被调函数中,改变形参所指向变量的值 9 void swap2(int* x,int* y){ 10 int t; 11 t = *x; 12 *x = *y; 13 *y = t; 14 } 15 16 //找出一个数组内的最大数 17 //先声明一个指针变量,并让他指向数组首元素的地址 18 //使用for循环让指针指向的数与数组中的每一个数进行比较 19 //每比较一次就让指针指向比较后的最大数 20 //最后就指向数组中最大树的指针返回去 21 int* swap1(int* a,int len){ 22 int* t = a; 23 for(int i = 1;i < len;i ++){ 24 if(*t<*(a + i)){ 25 t = a + i; 26 } 27 } 28 return t; 29 } 30 31 //使用指针的加法运算将一个数组内的所有元素相加,并就结果返回 32 //声明一个指针变量,并使其指向数组a的首元素地址 33 //使用指针遍历数组内的所有元素,并加到变量sum中,最后int类型的值将其返回 34 int swap3(int* a,int len){ 35 int* p = a; 36 int sum = 0; 37 for(int i = 0;i<5;i++){ 38 //指针的加法运算,指针变量每加一次1,指针就会向后移动该指针类型所占的字节数 39 //也就是说,指针变量每加一次1,指针就会指向数组的下一个元素 40 sum += *p ++; 41 } 42 return sum; 43 } 44 45 //使用冒泡法将数组的元素排序 46 void swap4(int* array,int len){ 47 int temp = 0; 48 for(int i = 1;i < len;i ++){ 49 for(int j = 0;j<len - i;j ++){ 50 if(array[j]>array[j+1]){ 51 temp = array[j]; 52 array[j] = array[j+1]; 53 array[j+1] = temp; 54 } 55 } 56 } 57 } 58 59 void main(){ 60 //计算数组之和 61 int a[] = {1,2,3,4,5}; 62 int aSize = sizeof(a)/sizeof(int); 63 int sum = swap3(a,aSize); 64 cout << "数组a的所有元素之和是:" << sum << endl; 65 66 //计算数组中的最大数 67 int b[] = {2,5,67,25,4,7}; 68 int bSize = sizeof(b)/sizeof(int); 69 int* t = swap1(b,bSize); 70 cout << "数组a的所有元素的最大数是:" << *t << endl; 71 72 //交换两个变量的值 73 int x = 1, y = 2; 74 int *pa = &x, *pb = &y; 75 cout << "x="<<x<<";y="<<y<<endl; 76 swap2(pa,pb); 77 cout << "After calling swap2:" << "\n" << "x="<<x<<";y="<<y<<endl; 78 79 //数组排序 80 int array[5]; 81 cout << "请输入5个整数" << endl; 82 for(int i = 0;i<5;i++){ 83 cin >> array[i]; 84 } 85 cout << "排序前:"; 86 for(int i = 0; i < 5 ; i ++){ 87 cout << array[i] << "\t" ; 88 } 89 swap4(array,5); 90 cout << "\n排序后:"; 91 for(int i = 0; i < 5 ; i ++){ 92 cout << array[i] << "\t" ; 93 } 94 }
时间: 2024-12-23 13:56:17