求问为什么输入值不显示?(显示结果为0)
求这个代码还有简单的方法写吗?
2401_83259626 下午好🌅🌅🌅
本答案参考ChatGPT-3.5
这段代码存在几个问题:
在第3行,变量的类型应该是整型int,而不是float。应该修改为:int a, b, c, t;
在第4行,输出语句末尾的分号应该去掉。应该修改为:printf("请输入3个数:");
在第5行,使用scanf函数读取输入时,输入的格式应该与变量的类型相匹配。由于变量类型是整型int,应该使用"%d"作为格式化字符串。应该修改为:scanf("%d, %d, %d", &a, &b, &c);
在第17行,输出语句中的格式化字符串应该使用"%d"代替"%f",因为变量的类型是整型int,而不是浮点型float。应该修改为:printf("%d %d %d\n", a, b, c);
另外,这段代码用了一个冒泡排序的方法来对3个数进行从大到小的排序。虽然这种方法是一种常见的排序算法,但对于只有3个数的情况来说,可以使用更简单直接的方法。
解决方案:
在输入3个数后,可以直接通过比较大小将它们排列。即判断a、b、c之间的大小关系,将最大的数放在a的位置,最小的数放在c的位置,中间的数放在b的位置。
另一种简单的方法是使用数组存储这3个数,然后使用sort函数对数组进行排序。
下面是修改后的代码示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
int a, b, c, temp;
printf("请输入3个数:");
scanf("%d, %d, %d", &a, &b, &c);
// 方法1:比较大小交换位置
if (b > a) {
temp = a;
a = b;
b = temp;
}
if (c > a) {
temp = a;
a = c;
c = temp;
}
if (c > b) {
temp = b;
b = c;
c = temp;
}
printf("3个数由大到小的排序为:%d %d %d\n", a, b, c);
// 方法2:使用数组和sort函数排序
int arr[3] = {a, b, c};
qsort(arr, 3, sizeof(int), compare);
printf("3个数由大到小的排序为:%d %d %d\n", arr[2], arr[1], arr[0]);
return 0;
}
注意:在使用第二种方法时,需要添加一个compare函数用于比较两个数的大小。可以将其放在代码的末尾,如下所示:
int compare(const void* a, const void* b) {
return (*(int*)b - *(int*)a);
}
这样就可以通过对数组进行排序实现从大到小的排列输出。