解题思路以及注意事项:
主要得注意传参的问题,不要在自定义函数里面定义数组然后return到主函数,这是行不通的,因为自定义函数调用结束后,其中的数据会发生意想不到的结果。
交换值得用到第三者。
代码比较长,但还是挺简单的,一定要静下心来写代码。
实例代码:
#include"stdio.h" void putin(int a[],int n); void list(int a[],int n); void putout(int a[],int n); int main() { int a[10]; putin(a,10); list(a,10); putout(a,10); return 0; } void putin(int a[],int n) { int i; for(i=0;i<n;i++) { scanf("%d",&a[i]); } } void list(int a[],int n) { int i,max,min,maxi=0,maxj=0,trans1,trans2; max=a[0]; min=a[0]; for(i=1;i<n;i++) { if(a[i]<min) { min=a[i]; maxi=i; } if(a[i]>max) { max=a[i]; maxj=i; } } trans2=a[0]; a[0]=min; a[maxi]=trans2; for(i=1;i<n;i++) { if(a[i]>max) { max=a[i]; maxj=i; } } trans1=a[9]; a[9]=max; a[maxj]=trans1; } void putout(int a[],int n) { int i; for(i=0;i<n;i++) { printf("%d ",a[i]); } }
看看大家还有什么问题,请在下方评论区留言,小方会在看到的第一时间为您解疑
0.0分
40 人评分
void Input(int ch[]) { for (int i = 0; i < 10; i++) scanf("%d", &ch[i]); } void Handle(int ch[]) { for(int i=0;i<9;i++) for (int j =i+1;j<=9;j++) { if (ch[i] > ch[j]) { int temp; temp = ch[i]; ch[i] = ch[j]; ch[j] = temp; } } } void Output(int ch[]) { for (int i = 0; i < 10; i++) printf("%d ", ch[i]); } int main(void) { int ch[10]; Input(ch); Handle(ch); Output(ch); return 0; } 这个排序不是更简单嘛! 为什么是错的啊
#include <stdio.h> int a[10]; void shuru() { for(int i=0;i<10;i++) scanf("%d",&a[i]); } void chuli() { int max,min,temp,i,sx,sn; max = -1; min = 100000; for(i=0;i<10;i++) { if(a[i]<min) min = a[i]; } for(i=0;i<10;i++) { if(a[i]>max) max = a[i]; } for(i=0;i<10;i++) { if(min==a[i]) sn = i; } temp = a[sn]; a[sn] = a[0]; a[0] = temp; for(i=0;i<10;i++) { if(max==a[i]) sx = i; } temp = a[sx]; a[sx] = a[9]; a[9] = temp; }
哈哈哈 2020-01-29 16:54:59 |
void shuchu() { for(int i=0;i<10;i++) printf("%d ",a[i]); } int main() { shuru(); chuli(); shuchu(); }
#include<stdio.h> void input(int * x) { for (int i = 0; i < 10; i++) scanf("%d",&x[i]); } void fun(int * x) { int maxi=0, mini=0; int max = x[0]; int min = x[0]; for (int i = 1; i < 10; i++) { if (max < x[i]) { max = x[i]; maxi = i; } if (min > x[i]) { min = x[i]; mini = i; } } int t = x[0]; x[0] = x[mini]; x[mini] = t; t = x[9]; x[9] = x[maxi]; x[maxi] = t; } void getout(int * x) { for (int i = 0; i < 10; i++) printf("%d ", x[i]); } int main() { int x[10] = {0}; input(x); fun(x); getout(x); return 0; }
#include<stdio.h> #include<stdlib.h> int swap(int* arr); int main(void) { int arr[10]; for(int i = 0 ;i<10;i++) scanf("%d", &arr[i]); swap(arr); return 0; } int swap(int* arr) { int m = 0; int n = 0; int temp; int max=arr[0]; int min=arr[0]; for (int i = 1; i < 10; i++) { if (min > arr[i]) { min = arr[i]; m = i; } if (max < arr[i]) { max = arr[i]; n = i; } } temp = arr[0]; arr[0] = arr[m]; arr[m] = temp; temp = arr[9]; arr[9] = arr[n]; arr[n] = temp; for (int i = 0; i < 10; i++) { printf("%d ", arr[i]); } } 错误%50.。。。。大佬们能不能看看哪里错了
光 2020-01-10 19:02:33 |
是不是只有俩个函数呢???
我看你写的是 : putin(a,10); list(a,10); putout(a,10); 但是为什么不行? putin(a[10],10); list(a[10,]10); putout(a[10],10);
#include <stdio.h> void printf_a (int a[],int b); void dealt (int a[],int b); void scanf_a (int a[],int b); #define N 10 main () { int a[N]; scanf_a(a,N); dealt(a,N); printf_a(a,N); } void scanf_a(int a[],int b) { for (int i=0;i<b;i++) scanf("%d",&a[i]); } void dealt (int a[],int b) { int c=a[0]; int d=a[b-1]; int m,n; for (int i=0;i<b;i++) { if(a[0]>a[i]) { a[0]=a[i]; m=i; } if(a[b-1]<a[i]) { a[b-1]=a[i]; n=i; } } a[m]=c; a[n]=d; } void printf_a(int a[],int b) { for (int i=0;i<b;i++) printf ("%d ",a[i]); }不知道错哪儿了
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:1419 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:703 |
【出圈】 (C++代码)(典型的约瑟夫环——链表解决)浏览:1284 |
点我有惊喜!你懂得!浏览:1007 |
上车人数 (C语言代码)浏览:1257 |
C语言训练-自守数问题 (C语言代码) long long浏览:1105 |
C二级辅导-分段函数 (C语言代码)浏览:583 |
C语言训练-角谷猜想 (C++代码)(3N+1问题)浏览:1850 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:827 |
输出正反三角形 (C语言代码)格式错误!!!浏览:1177 |
懵懵 2020-02-07 10:29:36 |
handle函数错了