设计一个从5个整数中取最小数和最大数的程序 输入输入只有一组测试数据,为五个不大于1万的正整数输出输出两个数,第一个为这五个数中的最小值,第二个为这五个数中的最大值,两个数字以空格格开。

#include <stdio.h>
int main() {
int i,j,k,t;
int c[10];
scanf("%d %d %d %d %d",&c[0],&c[1],&c[2],&c[3],&c[4]);
for(i=0,k=1;i<4;i++,k++) {
for(j=k;j<5;j++) {
if(c[i]>c[j]) {
t=c[i];
c[i]=c[j];
c[j]=t;
}
}  
}
printf("%d %d\n",c[0],c[4]);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这个问题我可以帮您解决。您可以将以下代码保存为一个.c文件,然后通过命令行编译运行该程序输入两个程序将会输出它们的和。 ``` c #include <stdio.h> #include <string.h> #define MAX_LENGTH 410 int main() { char a[MAX_LENGTH], b[MAX_LENGTH]; while (scanf("%s %s", a, b) != EOF) { int len_a = strlen(a), len_b = strlen(b); int dot_a = -1, dot_b = -1; for (int i = 0; i < len_a; i++) { if (a[i] == '.') { dot_a = i; break; } } for (int i = 0; i < len_b; i++) { if (b[i] == '.') { dot_b = i; break; } } if (dot_a == -1) { dot_a = len_a; } if (dot_b == -1) { dot_b = len_b; } int len_int_a = dot_a, len_int_b = dot_b; while (len_int_a > 0 && a[len_int_a - 1] == '0') { len_int_a--; } while (len_int_b > 0 && b[len_int_b - 1] == '0') { len_int_b--; } int len_decimal_a = len_a - dot_a - 1, len_decimal_b = len_b - dot_b - 1; while (len_decimal_a > 0 && a[len_a - len_decimal_a] == '0') { len_decimal_a--; } while (len_decimal_b > 0 && b[len_b - len_decimal_b] == '0') { len_decimal_b--; } int len_int = len_int_a > len_int_b ? len_int_a : len_int_b; int len_decimal = len_decimal_a > len_decimal_b ? len_decimal_a : len_decimal_b; char ans[MAX_LENGTH]; int idx = 0; int carry = 0; for (int i = 0; i < len_int || i < len_decimal; i++) { int digit_a = i < len_int_a ? a[len_a - i - 1] - '0' : 0; int digit_b = i < len_int_b ? b[len_b - i - 1] - '0' : 0; int digit_decimal_a = i < len_decimal_a ? a[dot_a + 1 + i] - '0' : 0; int digit_decimal_b = i < len_decimal_b ? b[dot_b + 1 + i] - '0' : 0; int digit = digit_a + digit_b + carry; if (i < len_decimal || digit_decimal_a + digit_decimal_b > 0) { digit += digit_decimal_a + digit_decimal_b; if (digit >= 10) { digit -= 10; carry = 1; } else { carry = 0; } ans[idx++] = digit + '0'; } } if (carry == 1) { ans[idx++] = '1'; } if (idx == 0) { printf("0\n"); } else { for (int i = idx - 1; i >= 0; i--) { printf("%c", ans[i]); } if (len_decimal > 0) { printf("."); for (int i = 1; i <= len_decimal; i++) { int digit_a = i <= len_decimal_a ? a[dot_a + i] - '0' : 0; int digit_b = i <= len_decimal_b ? b[dot_b + i] - '0' : 0; int digit = digit_a + digit_b + carry; if (digit >= 10) { digit -= 10; carry = 1; } else { carry = 0; } printf("%d", digit); } } printf("\n"); } } return 0; } ``` 代码中,我们首先读入两个,并找出它们小点的位置。然后,我们分别计算它们的整数部分和小部分的长度,并去除多余的零。接下来,我们将整数部分和小部分分开计算,并将它们加起来。最后,我们将结果输出。 需要注意的是,由于小的精度可能很高,因此我们需要用组来存储小。在输出部分时,我们需要根据其实际长度来输出。如果小部分的值为零,则不需要输出点以及小部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值