C语言练习作业(五)

来源:互联网 发布:lpl韩国外援知乎 编辑:程序博客网 时间:2024/06/10 15:23

关于指针:

指针真的好复杂啊,第二遍学还是很迷糊,总是分不清什么时候画带“*”,什么时候不带。看来还是应该多练习,先贴上这道题吧,感觉做完这题之后有些头绪了。


题目:输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:

(1)输入10个数

(2)进行处理

(3)输出10个数


#include<stdio.h>#include<string.h>void input(int *);//输入函数void exchange(int *a);//交换数字void output(int *a);int main(){int a[10] = { 0 };input(a);exchange(a);output(a);return 0;}void input(int *a){printf_s("请输入10个整数:\n");for (int i = 0; i < 10; i++){scanf_s("%d", &a[i]);}/*for (int j = 0; j < 10; j++){printf_s("%d  ", a[j]);}*/}void exchange(int *a){/*int t = 0, t2 = 0;int n = 0;int max = 0, min = 0;for (int i = 0; i < 10; i++){if (a[i] > t){t = a[i];n = i;}}max = t;t2 = a[9];a[9] = max;a[n] = t2;for (int j = 0; j < 10; j++){if (a[j] < t){t = a[j];n = j;}}min = t;t2 = a[0];a[0] = min;a[n] = t2;*/int *max, *min, *p, temp;max = min = p = a;for (p = a + 1; p < 10; p++){if (*p > *max){max = p;}}temp = *max;*max = a[9];a[9] = temp;for (p = a + 1; p < 10; p++){if (*p < *min){min = p;}}temp = *min;*min = a[0];a[0] = temp;}void output(int *a){for (int i = 0; i < 10; i++){printf_s("%d  ", a[i]);}}


用于处理的函数里面有两段代码,上面注释掉的是一开始自己想的,看了答案后才明白这里可以用指针写,就合上书本自己试着写了下面的那段代码,再看答案,发现仍然有疏忽的地方,有些特例没有考虑到,不过不想再改了,以后再说吧。


0 0
原创粉丝点击