解题思路:
输入10个数;
先找到最小数与第一个数交换;
再找到最大数与最后一个交换;
输出交换后的十个数,每个后面带空格;
注意事项:
不可以同时找到最大数和最小数然后一起交换
有同学问为什么不可以,先找到最小最大,在一次性交换,原因如下
如输入数据: 10 1 2 3有
min=1,对应下标为 1 ;max=10对应下标为0
先与第一个数交换后为:1 10 2 3 ,但是注意此时正确max下标变成了1
继续按照之前记录的max下标0进行交换,即变成1与3交换,与实际10与3交换不相符,所以出错
参考代码:
#include <stdio.h> void deal( int a[] ); int main() { int x[10]; for ( int i = 0; i < 10; i++ ) scanf( "%d", &x[i] ); deal( x ); return(0); } void deal( int a[] ) { int max = 0, x, team, l, min = a[0]; for ( int i = 0; i < 10; i++ ) //找最小数,交换 { if ( a[i] < min ) { min = a[i]; l = i; } } team = a[0]; a[0] = min; a[l] = team; for ( int k = 0; k < 10; k++ ) //找最大数,交换 { if ( a[k] > max ) { max = a[k]; x = k; } } team = a[9]; a[9] = max; a[x] = team; for ( int j = 0; j < 10; j++ ) //输出 printf( "%d ", a[j] ); }
别忘点赞哦-.-
0.0分
116 人评分
#include<stdio.h> void input(int a[]) { for(int i = 0; i < 10; i ++) { scanf("%d ", &a[i]); } } int sort(int a[], int b[], int c) { for(int i = 0; i < 10; i++) { c = 0; for(int j = 0; j < 10; j ++) { if(a[i] > a[j]) { c ++; } } b[c] = a[i]; } } void output(int b[]) { for(int j = 0; j < 10; j ++) { printf("%d ", b[j]); } } int main() { int a[101] = {0}; int b[101] = {0}, c = 0; input(a); sort(a, b, c); output(b); return 0; } 第二个测试点过不了,帮我看看为只有50分呀?
#include <stdio.h> int one(int a[10]) { int i; for (i = 0; i < 10; i++) { scanf("%d", &a[i]); } return a[i]; } int two(int a[10]) { int i, t; for (i = 0; i < 10; i++) { if (a[i] < a[0]) { t = a[i]; a[i] = a[0]; a[0] = t; } else if (a[i] > a[9]) { t = a[i]; a[i] = a[9]; a[9] = t; } } return a[i]; } int three(int a[10]) { for (int i = 0; i < 10; i++) { printf("%d ", a[i]); } return 0; } int main() { int a[10] = {0}; one(a); two(a); three(a); return 0; }
uq_68577944886 2023-01-07 15:16:33 |
按照题目写了三个函数
如果我是低阶你会爱我吗 2023-05-02 15:57:41 |
哥哥,one函数return a[i];就能返回这整个数组吗,不太理解
#include<stdio.h> int main() { int a[10]; int i; int max=a[0],min=a[0]; for(i=0;i<10;i++) { scanf("%d",&a[i]); } int k; int t; for(i=0;i<10;i++) { if(min>a[i]) { min=a[i];k=i; } } t=a[0]; a[0]=a[k]; a[k]=t; int j; for(i=0;i<10;i++) { if(max<a[i]) { max=a[i];j=i; } } t=a[9]; a[9]=a[j]; a[j]=t; for(i=0;i<10;i++) { printf("%d\t",a[i]); } }这是我的
我这个答案错误50%,可以帮忙看看是哪里出了问题吗? #include<stdio.h> int a[10]; int put(){ for(int i=0;i<10;i++){ scanf("%d",&a[i]); } } void deal(){ int m=0; int n=0; for(int i=1;i<10;i++){ if(a[i]<a[m]) m=i; if(a[i]>a[n]) n=i; } int tmp=a[0]; a[0]=a[m]; a[m]=tmp; tmp=a[9]; a[9]=a[n]; a[n]=tmp; } int output(){ for(int i=0;i<10;i++){ printf("%d ",a[i]); } } int main(){ put(); deal(); output(); }
不知道为啥答案错一半 #include<stdio.h> #include<stdlib.h> void Input(int*m); void Change(int*m); void Output(int*m); int main() { int n[10]; Input(n); Change(n); Output(n); system("pause"); return 0; } void Input (int*m) { for(int i=0;i<10;i++){ scanf("%d",&m[i]); } } void Change (int*m) { for(int i=9;i>0;i--){ int maxd=0; for(int j=0;j<i+1;j++){ if(m[j]>m[maxd])maxd=j; } int temp=m[i]; m[i]=m[maxd]; m[maxd]=temp; } } void Output(int*m) { for(int i=0;i<10;i++){ printf("%d") }}
kekeke 2022-08-11 14:57:06 |
最后少了点东西 没复制上
#include<stdio.h> #define N 10 void scan(int* a) { int i; for (i = 0; i < N; i++) scanf("%d", a + i); } void dispose(int* a) { int i, j, max, min, n, m; for (i = 0; i < N; i++) { min = *(a + i); max = *(a + N - 1 - i); n = -1; m = -1; for (j = i; j < N ; j++) { if (min > *(a + j)) { min = *(a + j); n = j; } } if (n != -1) { *(a + n) = *(a + i); *(a + i) = min; } for (j = 0; j < N-i ; j++) { if (max < *(a + j)) { max = *(a + j); m = j; } } if (m != -1) { *(a + m) = *(a + N - i
笑一个好不好 2022-05-20 23:10:27 |
#include<stdio.h> #define N 10 void scan(int* a) { int i; for (i = 0; i < N; i++) scanf_s("%d", a + i); } void dispose(int* a) { int i, j, max, min, n, m; for (i = 0; i < N; i++) { min = *(a + i); max = *(a + N - 1 - i); n = -1; m = -1; for (j = i; j < N ; j++) { if (min > *(a + j)) { min = *(a + j); n = j; } } if (n != -1) { *(a + n) = *(a + i); *(a + i) = min; } for (j = 0; j < N-i ; j++) { if (max < *(a + j)) { max = *(a + j); m = j; } } if (m != -1) { *(a + m) = *(a + N - i - 1); *(a + N - i - 1) = max; } } } void print(int* a) { int i = 0; for (i = 0; i < N; i++) printf("%d ", *(a + i)); } int main() { int a[N]; scan(a); dispose(a); print(a); return 0; }
笑一个好不好 2022-05-20 23:11:39 |
救救孩子,真的是不会做了,做出来总是不能全对
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> int main() { int p[10],i,x=10000,j,pp[10],k=0,kk=0,h; for(i=0;i<=9;i++) scanf("%d ",&p[i]); for(i=0;i<=9;i++) pp[i]=p[i]; for(i=0;i<=9;i++){ for(j=i+1;j<=9;j++){ if(p[i]>p[j]) { x=p[i]; p[i]=p[j]; p[j]=x; } } } for(i=0;i<=9;i++) { if(p[0]!=pp[i]) k++; else break; } x=pp[0]; pp[0]=pp[k]; pp[k]=x; for(i=0;i<=9;i++) { if(p[9]!=pp[i]) kk++; else break; } h=pp[9];
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:677 |
2004年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:681 |
printf基础练习2 (C语言代码)浏览:591 |
C语言程序设计教程(第三版)课后习题7.4 (Java代码)浏览:839 |
汽水瓶 (C语言代码)浏览:597 |
C语言训练-立方和不等式 (C语言代码)浏览:742 |
Hello, world! (C++代码)浏览:1744 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:468 |
The 3n + 1 problem (C语言代码)浏览:548 |
C语言训练-亲密数 (C语言代码)浏览:682 |
Jayden 2024-02-26 15:56:44 |
哪个小哥哥可以给我解释一下呀,谢谢