解题思路:1.首先题目要求要用到三个自定义函数,那么首先想到的是输入(input)、处理(compel)、输出(output)。
2.然后是因为涉及到排序问题,然后我就想到了数组,但是怎样才能输出数组,后来我也是看了“我要看题解”得知可以用 void function_name(int* a)来表示(用return好像实现不了,我也不知道咋实现,欢迎大佬以这个思路来解决问题)。
3.输入输出自不必说太多,for循环,scanf,printf,主要是对于compel的思路:
4.关于变量var_data,在比较最大值时为了让它进入if语句,我给他赋值为0;在比较最小值时,先给它赋初值为65535,后面在往下运行就是数组内部的操作了,
注意事项:1.这个看别人的了,所以就当做是笔记了,感觉还挺好.
2.自己犯的错误,本来想定义max和min,后来互换的时候发现不对劲,数组内没有互换而且重复了,这个错误很不应该嗷.
3.发现越往后面用到指针的知识变多了。
参考代码:
#include void input(int* a); void output(int* a); void compel(int* a); int main(void) { int a[10]; input(a); compel(a); output(a); return 0; } void input(int* a) { int i; for(i=0;i<10;i++) { scanf("%d",&a[i]); } } void compel(int* a) { int i,t; int var_data=0,var_cout=0; //最大值与最后一位的互换 for(i=0;i<10;i++) { if(var_data<=a[i]) { var_data=a[i]; var_cout=i; } } t=a[9]; a[9]=a[var_cout]; a[var_cout]=t; //最小值与第一位互换 var_data=65535; var_cout=0; for(i=0;i=a[i]) { var_data=a[i]; var_cout=i; } } t=a[0]; a[0]=a[var_cout]; a[var_cout]=t; } void output(int* a) { int i; for(i=0;i<10;i++) { printf("%d ",a[i]); } }
0.0分
11 人评分
#include<stdio.h> int main(void) { int ch[10]; for(int i = 0; i < 10; i++) scanf("%d", &ch[i]); int max = ch[0]; int min = ch[0]; int flag1 = 0, flag2 = 0; for(int i = 1; i < 10; i++) { if(max < ch[i]) { max = ch[i]; flag1 = i; } if(min > ch[i]) { min = ch[i]; flag2 = i; } } int t1, t2; if(flag1==0&&flag2==9||flag1==9&&flag2==0) { t1 = ch[flag1]; ch[flag1] = ch[9]; ch[9] = t1; } else { t1 = ch[flag1];
C语言训练-计算:t=1-1/(2*2)-1/(3*3)-...-1/(m*m) (C语言代码)浏览:799 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:761 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:631 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:1432 |
【蟠桃记】 (C语言代码)浏览:697 |
WU-小九九 (C++代码)浏览:1713 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:525 |
简单的a+b (C语言代码)浏览:600 |
矩阵转置 (C语言代码)浏览:855 |
上车人数 (C语言代码)浏览:752 |