解题思路以及注意事项:
主要得注意传参的问题,不要在自定义函数里面定义数组然后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 人评分
int a[10]; int i,j,min,max,temp,t,m,tem; for(i=0;i<10;i++){ scanf("%d",&a[i]); } min=0; for(i=1;i<10;i++){ if(a[i]<a[min]){ temp=a[i]; a[i]=a[min]; a[min]=temp; } t=a[0]; a[0]=a[min]; a[min]=t; } max=1; for(i=2;i<10;i++){ if(a[i]>a[max]){ tem=a[max]; a[max]=a[i]; a[i]=tem; } m=a[9]; a[9]=a[max]; a[max]=m; } for(i=0;i<10;i++){ printf("%d ",a[i]); } return 0;
uq_87534612122 2022-04-07 23:14:42 |
稍微的修改一下
#include<stdio.h> #include<string.h> void shur(int a[]) {int i; for(i=0;i<10;i++) scanf("%d",&a[i]); } void chul(int a[]) {int i,j,t; for(i=0;i<10;i++) { for(j=i+1;j<10;j++) {if(a[i]>=a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } } } } void put(int a[]) { int i; for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); } int main() { int a[10]; shur(a); chul(a); put(a); return 0; } 不知道为什么运行通过不了
#include<stdio.h> int main() {int a[10],i,j=0,k=0,min,max; for(i=0;i<10;i++){ scanf("%d",&a[i]); } min=a[0]; max=a[0]; for(i=0;i<10;i++){ if(min>=a[i]) { min=a[i]; j=i; } if(max<=a[i]){ max=a[i]; k=i; } } a[j]=a[0]; a[k]=a[9]; a[0]=min; a[9]=max; for(i=0;i<10;i++){ printf("%d ",a[i]); } return 0; }请问大家我这个代码哪里错了 显示是有一半不对,很迷惑。
卑微小宇 2022-01-22 23:28:51 |
我找到了问题的所在。#include<stdio.h> int main() {int a[10],i,j=0,k=0,min,max; for(i=0;i<10;i++){ scanf("%d",&a[i]); } min=a[0]; max=a[0]; for(i=0;i<10;i++){ if(min>=a[i]) { min=a[i]; j=i; } if(max<=a[i]){ max=a[i]; k=i; } } if(a[0]==max){ a[0]=a[9]; a[9]=max; a[j]=a[0]; a[0]=min; } else if(a[9]==min){ a[9]=a[0]; a[0]=min; a[k]=a[9]; a[9]=max; } else { a[j]=a[0]; a[k]=a[9]; a[0]=min; a[9]=max; } for(i=0;i<10;i++){ printf("%d ",a[i]); } return 0; }我之前少考虑得是当如果第一位置是最大或者最后一个位置是最小时,之前的代码会产生覆盖。
#include<stdio.h> void chuli(int *p1,int *p2,int a[10]) { int i,max=a[0],min=a[0],c,d; for(i=0;i<10;i++) { if(a[i]>max) {max=a[i]; c=i;} if(a[i]<min) {min=a[i]; d=i;} } *&a[c]=a[9]; *&a[d]=a[0]; *p1=min; *p2=max; } int main() { int a[10],i; for(i=0;i<10;i++) scanf("%d ",&a[i]); int *p1=a; int *p2=&a[9]; chuli(p1,p2,a); for(i=0;i<10;i++) printf("%d ",a[i]); return 0; } 这个代码哪里错了,求大神指点
希望大佬们看看我这个为什么错 #include<stdio.h> int putin(int a[]); int list(int a[]); int putout(int a[]); int main() { int a[10]; putin(a); list(a); putout(a); return 0; } int putin(int a[]) { int i; for(i=0;i<10;i++) { scanf("%d",&a[i]); } return 0; } int list(int a[]) { int i,j,t,min,max; min=a[0]; max=a[0]; for(i=1;i<10;i++) { if(min>a[i]) { min=a[i]; } if(max<a[i]) { max=a[i]; } } for(i=0;i<10;i++) { if(min==a[i]) break; } for(j=0;j<10;j++) { if(max==a[j]) break; } if(min!=a[0]) { t=a[i]; a[i]=a[0]; a[0
迟迟 2022-01-02 22:52:32 |
错误50
迟迟 2022-01-02 22:52:42 |
#include<stdio.h> int putin(int a[]); int list(int a[]); int putout(int a[]); int main() { int a[10]; putin(a); list(a); putout(a); return 0; } int putin(int a[]) { int i; for(i=0;i<10;i++) { scanf("%d",&a[i]); } return 0; } int list(int a[]) { int i,j,t,min,max; min=a[0]; max=a[0]; for(i=1;i<10;i++) { if(min>a[i]) { min=a[i]; } if(max<a[i]) { max=a[i]; } } for(i=0;i<10;i++) { if(min==a[i]) break; } for(j=0;j<10;j++) { if(max==a[j]) break; } if(min!=a[0]) { t=a[i]; a[i]=a[0]; a[0]=t; } if(max!=a[9]) { t=a[j]; a[j]=a[9]; a[9]=t; } return 0; } int putout(int a[]) { int i; for(i=0;i<10;i++) { printf("%d ",a[i]); } return 0; }
#include<stdio.h> void sum_1(int a[9]) { for(int b=0;b<10;b++){ scanf("%d",&a[b]); } } void sum_2(int a[9]) { int max=a[0],min=a[0]; int o,p; for(int b=0;b<10;b++){ if(a[b]>max) { max=a[b]; o=b; } if(a[b]<min) { min=a[b]; p=b; } } a[o]=a[9]; a[9]=max; a[p]=a[0]; a[0]=min; } void sum_3(int a[9]) { for(int b=0;b<10;b++){ printf("%d ",a[b]); } } int main() { int a[9]; sum_1(a); sum_2(a); sum_3(a); return 0; }
C语言程序设计教程(第三版)课后习题9.8 (Java代码)浏览:1674 |
A+B for Input-Output Practice (C++代码)浏览:632 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:827 |
2004年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:1368 |
用筛法求之N内的素数。 (C语言代码)浏览:685 |
C语言训练-亲密数 (C语言代码)浏览:697 |
1054题解浏览:516 |
图形输出 (C语言代码)浏览:1019 |
C语言训练-大、小写问题 (C语言代码)浏览:719 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:569 |