C语言 3个数比大小
代码没有问题,
不过你的输入没按照你自己scanf所设定的格式来
scanf("%d,%d,%d",&a,&b,&c);这么写的话,你应该这么输入:1,7,8(回车)或者2,5,3(回车)别忘了逗号,也别忘了将3个数都输完再回车如果这么写,scanf("%d%d%d",&a,&b,&c);就可以这么输入:2(回车)3(回车)1(回车)
扩展资料
C语言编写3个数比较大小其他代码样例:
# include //头文件int max(int x,int y,int z); //声明子函数void main()//主函数{int a,b,c,d;//定义变量名printf("shuru a,b,c"); //打印出shuru a,b,cscanf("%d,%d,%d",&a,&b,&c); //录入数据d=max(a,b,c);//调用子函数printf("max = %d
",d);} int max(int x,int y,int z)//子函数体,比较大小返回最大值{int m,int n;if(x>y) m = x;else m = y;if(m>z) n = m;else n = z;return(n); }
比较方法:
1、比较从第一个数开始,先比较第一个数和第二个数的大小,如果第一个数大于第二个数,则将第一个数和第二个数互换;不大于(即等于或小于)则不作处理。
2、然后,再将第二个数和第三个数比较,同样,若大于则将它们互换。
以1 2 3为例 先考虑我们所有的可能输入类型(这里不一一列举):1 2 3;3 2 1 ;2 1 3;1 1 1;1 2 2;1 2 1;整体的思路为输入三个数后,我们从中取两个数,在这两个数中选出最大的后将最大的数与第三个数做差比较这里请参考代码理解;
代码:
#include
int comp(int x,int y)
{
return x>y?x:y;
}
int main()
{
int i,j,k;
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
j=comp(a,b);//j为两个数里最大的值
k=c;//a+b-j求的是a,b里比较小的那个数;
if(j-k<0){printf("%d %d %d",k,j,a+b-j);return 0;} //说明K最大按顺序输出就可以了1 2 3;2 2 3
if(j-k>=a+b-j){printf("%d %d %d",j,a+b-j,k);return 0;}//3 2 1
if(j-k<a+b-j){printf("%d %d %d",j,k,a+b-j);return 0;}// 3 2 3
}
总结:
其实这个代码本质也和用if语句比较大小排序差不多,只不过这里不需要每次都调用三个if语句,直接一条if语句便可输出答案效率更高一点。
#include<stdio.h>
main()
{
int i,a;
int max;
printf("please input 50 numbers:");
scanf("%d",&a);
max = a;
for(i=2;i<=50;i++){
scanf("%d",&a);
if(a>max)
max=a;
}
printf("max=%d",max);
}
利用宏定义,求三个数中的最大值
#include <stdio.h>
#define MAX(x,y) ((x)>(y)?(x):(y))
void main()
{
int a, b, c;
printf("input 3 numbers:");
scanf("%d%d%d",&a,&b,&c);
printf("MAX is %d.\n", MAX(a,MAX(b,c)));
}
输入三个数,求其中的最大值。
#include<stdio.h>
main()
{
int a,b,c,max;
printf("please input 3 numbers:\n");
scanf("%d %d %d ",&a,&b,&c);
max=a;
if(b>c)
{if(b>max) max=b;}
else if(c>a)
max=c;
printf("max=%d",max);
}
输入三个整数,用空格分开,求其中的最大值 (if-else)
#include<stdio.h>
main()
{
int a,b,c,max;
printf("请输入三个整数,用空格分开。");
scanf("%d %d %d",&a,&b,&c);
if(a>b)
max=a;
else
max=b;
if(c>max)
max=c;
printf("你输入的三个数中最大的是%d\n",max);
}
输入三个数,求其中的最大值((a>b)?a:b)>c?((a>b)?a:b):c)
#include<stdio.h>
int main()
{
int a,b,c;
int max;
printf("input 3 numbers");
scanf("%d %d %d",&a,&b,&c);
printf("max=%d",((a>b)?a:b)>c?((a>b)?a:b):c);
return 0;
}
输入三个数,求其中的最大值 (用三元运算符)
#include<stdio.h>
int main(void)
{
int a,b,c,max;
printf("input 3 numbers:");
scanf("%d %d %d",&a,&b,&c);
max=a>b?a:b;
max=c>max?c:max;
printf("max=%d",max);
return 0;
}
用交换法求输入的三个数中的最大值
#include<stdio.h>
main()
{
int x,y,z,t;
printf("请输入三个数,并用空格分开:");
scanf("%d%d%d",&x,&y,&z);
if (x>y)
{t=x;x=y;y=t;} /*交换x,y的值*/
if(x>z)
{t=z;z=x;x=t;}/*交换x,z的值*/
if(y>z)
{t=y;y=z;z=t;}/*交换z,y的值*/
printf("最大值是%d\n",z);
}
你可以编一个子程序比较两个数的大小,然后调用两次就OK了,
C里面有直接比较两个数大小的语句
#include<stdio.h>
void main()
{
int a,b,d,c;
scanf("%d,%d,%d",&a,&b,&c);
if(a<=b) d=b;
else d=a;
if(d<c) d=c;
}
程序没什么错,怀疑你输入时是不是用空格分隔字符的,用逗号试试,
scanf("%d,%d,%d",&a,&b,&c)中你是用逗号隔开的啊,输入时也要用逗号的
这里出现个问题,假如X=Y同时Z最小。这时候输出的还是Z ,不就出现错误了吗??
ok,没问题。
唱顾陈香: 输出最大值:#include <stdio.h> void main() { int a,b,c,Max; scanf("%d %d %d",&a,&b,&c); if (a <= b) Max = b; else Max = a; if (Max <= c) printf("%d",c); else printf("%d",Max); }输入三个数(空格隔开),先比较前两个数大小,将较大的...
东港区18770997629: 用C语言写比较三个数大小的程序. - ?
唱顾陈香: #include "Stdio.h" #include "Conio.h"main() { int *i,j,k,n,m,s; int a[3];i=a; printf("input a number:\n");for(i=a;i<=a+2;i++) scanf("%d",i);i=a; for(j=0;j<=2;j++){for(k=0;k<=2;k++){if(*(i+j)<*(i+k))n=*(i+j);if(*(i+j)>*(i+k))m=*(i+j);} }i=a;...
东港区18770997629: 谁教我有C语言编写比较3个数的大小. - ?
唱顾陈香: #include<stdio.h>void main() {int A,B,C; scanf("%d%d%d",&A,&B,&C);if(A<B)A=B;if(A<C)A=C; printf("%d\n",A);}
东港区18770997629: C语言 比较三个数大小 - ?
唱顾陈香: 您好!很高兴为您解答.程序的最后一行错了.以下是改正后的代码: #include <stdio.h> void main() {float a,b,c,x,y;printf("please input a,b,c\n");scanf("%f%f%f",&a,&b,&c);{if(a>b)x=a;else x=b;if(x>c)y=x;else y=c;}printf("max=%f\n",y); }望采纳~
东港区18770997629: c语言比较3数大小 - ?
唱顾陈香: 这是我写的! main() { int a,b,c,d,f; printf("san:\n"); scanf("%d %d %d",&a,&b,&c); d=(a>b?a:b); f=(d>c?d:c); printf("%d",f); }你的错误之处有!if(a>c) printf("%d",&a); else printf("%d",&c); else if(b>c) printf("%d",&b); else if(c>b) ...
东港区18770997629: C语言:编写一个程序实现3个数之间大小的比较.将最大的数输出 - ?
唱顾陈香: #include<stdio.h> main() { int a,b,c,d; printf("输入3个数:");//输入3个数 scanf("%d%d%d",&a &b &c);if(a>b)//比较大小并输出较大在数 d=a ; else d=b; if(d>c) printf("%d",d); else printf("%d",c); }
东港区18770997629: 初学c语言三个数比大小输出最大的数 - ?
唱顾陈香: 比大小的思路是设一个变量用来获得最大值,你这里是d,if如果a大于b那么把a的值赋给d,否则就是else 就把b的值赋给d.然后再用当前的d跟第三个数c做比较,如果比c小,那么说明c最大就把c值赋给d,得到的d值就是最大数.举个具体数字...
东港区18770997629: c语言 输入三个数字比较大小. - ?
唱顾陈香: 没有错误,VS2008能编译通过和执行,你输入的时候三个数用空格隔开.
东港区18770997629: 关于编写一个能比较三个数大小的C语言程序 - ?
唱顾陈香: 三目运算符可以转换为if语句的.给你拿if写一下你就明白了 if(a>b) { if(a>c) max=a; else max=c; } else { if(b>c) max=b; else max=c; } 数字再多了拿三目运算符即不好做,写出来也会让人迷糊.其实这样的语句最好写成if形式.用三目运算符写成这样不好看的.
东港区18770997629: 求一个用数组比较三个数大小的c语言程序 - ?
唱顾陈香: #include <stdio.h> void BubbleSort(int *a, int length) {int i, j,temp;for(i = 0; i < length-1; i ++){ for(j = 0; j < length-1-i; j++)if(a[j] > a[j+1]){temp = a[j];a[j] = a[j+1];a[j+1] = temp; } }} int main(void) {int a[3];int i;printf("请输入三个数,空格...