指针与指针变量
编程练习7.1
输入三个整数,按从小到大的顺序输出,要求用指针实现。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include <stdio.h> int main(void) { int num1,num2,num3,*p1,*p2,*p3,tmp; printf("请输入三个数:\n"); scanf("%d%d%d",&num1,&num2,&num3); p1 = &num1; p2 = &num2; p3 = &num3; if(*p1 < *p2) { tmp = *p1; *p1 = *p2; *p2 = tmp; } if(*p2 < *p3) { tmp = *p2; *p2 = *p3; *p3 = tmp; } if(*p1 < *p2) { tmp = *p1; *p1 = *p2; *p2 = tmp; } printf("%d\t%d\t%d\n",num1,num2,num3); return 0; }
|
指针与一维数组
编程练习7.2
输入 10 个数,将其中最小的数与第一个数对换,最大的数与最后一个数对换。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| #include <stdio.h> int main(void) { printf("****************************** 编程练习7.2 ******************************\n"); int num[10]; int *p, i, max, min, tip1, tip2, temp; p = num; for(i = 0;i < 10;i ++) { scanf("%d", p + i); } p = num; max = p[0]; min = p[0]; for(i = 1;i < 10;i ++) { if(*(p + i) < min) { tip1 = i; min = *(p + i); } else if(*(p + i) > max) { tip2 = i; max = *(p + i); } } p = num; temp = p[tip1]; p[tip1] = p[0]; p[0] = min; temp = p[tip2]; p[tip2] = p[9]; p[9] = temp; for(i = 0;i < 10;i ++) { printf("%6d", *p++); } printf("\n"); return 0; }
|
编程练习7.3
编写四个程序,分别用四种方法引用数组元素,输入 10 个整数,按升序排列,输出排序结果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include <stdio.h> int main(void) { printf("******************************* 编程练习7.3 *******************************\n"); int a[10], *p, i, j, temp; printf("请输入10个整数:\n"); for(i = 0;i < 10;i ++) { scanf("%d", &a[i]); } for(i = 0;i < 10;i ++) { for(j = 0;j < 10 - i;j ++) { if(a[j] > a[j + 1]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } for(i = 0;i < 10;i ++) { printf("%6d", a[i]); } printf("\n"); return 0; }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include <stdio.h> int main(void) { printf("******************************* 编程练习7.3 *******************************\n"); int a[10], *p, i, j, temp; p = a; for(i = 0;i < 10;i ++) { scanf("%d", p ++); } p = a; for(i = 0;i < 10;i ++) { for(j = 0;j < 10 - i;j ++) { if(p[j] > p[j + 1]) { temp = p[j]; p[j] = p[j + 1]; p[j + 1] = temp; } } } for(i = 0;i < 10;i ++) { printf("%6d", p[i]); } printf("\n"); return 0; }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include <stdio.h> int main(void) { printf("******************************* 编程练习7.3 *******************************\n"); int a[10], *p, i, j, temp; for(i = 0;i < 10;i ++) { scanf("%d", a + i); } for(i = 0;i < 10;i ++) { for(j = 0;j < 10 - i;j ++) { if(*(a + j) > *(a + j + 1)) { temp = *(a + j); *(a + j) = *(a + j + 1); *(a + j + 1) = temp; } } } for(i = 0;i < 10;i ++) { printf("%6d", *(a+i)); } printf("\n"); return 0; }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include <stdio.h> int main(void) { printf("******************************* 编程练习7.3 *******************************\n"); int a[10], *p, i, j, temp; p = a; for(i = 0;i < 10;i ++) { scanf("%d", p++); } p = a; for(i = 0;i < 10;i ++) { for(j = 0;j < 10;j ++) { if(*(p + j) > *(p + j + 1)) { temp = *(p + j); *(p + j) = *(p + j + 1); *(p + j + 1) = temp; } } } for(i = 0;i < 10;i ++) { printf("%6d", *(p + i)); } printf("\n"); return 0; }
|
指针与二维数组
编程练习7.4
输入 3 行 4 列二位数组,求最小值及其下标。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| #include <stdio.h> int main(void) { printf("********************** 编程练习7.4 **********************\n"); int array[3][4]; int i, j, min, t, k, (*p)[4]; p = array; k = t = 0; printf("请输入12个数字:\n"); for(i = 0;i < 3;i ++) { for(j = 0;j < 4;j ++) { scanf("%d", *(p+i)+j); } } min = array[0][0]; for(i = 0;i < 3;i ++) { for(j = 0;j < 4;j ++) { printf("%6d", *(*(p + i) + j)); } printf("\n"); } for(i = 0;i < 3;i ++) { for(j = 0;j < 4;j ++) { if(min > *(*(p + i) + j)) { min = *(*(p + i) + j); k = i; t = j; } } } printf("最小值:%d , 行下标:%d , 列下标:%d\n", min, k, t); return 0; }
|