零基礎學c語言之比較數
我們通常會遇到比較幾個數的大小的問題。具體來說是比較大小後將兩個數交換,但是有人通過if(a>b)[printf("%d",a)} else {printf("%d",b)}的方式避開來數字交換的步驟,但那不是適合於比較多個數,在c語言中我們通常用比較後交換數值來將數字按大小排序。交換就像將兩個杯子裏的不同液體交換,需要哪一個空杯子來裝第一杯液體,然後將第二杯液體倒在第一個空杯子中,再將取來的杯子中的液體倒在第二杯中。這樣這兩個杯子中的液體就相互交換了。一個簡單的代碼說明。
#include<stdio.h>
int main()
{
int a,b,t;
printf("輸入兩個數,它們將從小的大排列:");
scanf("%d,%d",&a,&b);
if(a>b){
t=a;
a=b;
b=t;
}
printf("%d,%d\n",a,b);
return 0;
}
也可以將關系符換一下求從大到小的數,主要是弄請引入的變量t的意義。再來一個列子比較三個數的大小,並輸出。
- #include<stdio.h>
- int main()
- {
- int a,b,c,t;
- printf("請輸入3個整數");
- printf("它們將會從小到大輸出:");
- scanf("%d,%d,%d",&a,&b,&c);
- if(a>b){
- t=a;
- a=b;
- b=t;
- }
- if(a>c)
- {
- t=a;
- a=c;
- c=t;
- }
- if(b>c)
- {
- t=b;
- b=c;
- c=t;
- }
- printf("a=%d,b=%d,c=%d",a,b,c);
- return 0;
- }
也可以通過if_else形式
#include<stdio.h>
int main()
{
int a,b,c;
printf("請輸入3個整數");
printf("將輸出最大數:");
scanf("%d,%d,%d",&a,&b,&c);
if(a<b){
if(b<c)
printf("max=%d\n",c);
else{
printf("max=%d\n",b);
}
}
else{
if(a<c){
printf("max=%d",c);
}
else{
printf("max=%d",a);
}
}
return 0;
}
或是三目運算符的方式
#include<stdio.h>
int main()
{
int a,b,c,temp,max;
printf("請輸入3個整數");
printf("將輸出最大數:");
scanf("%d,%d,%d",&a,&b,&c);
temp=(a>b)?a:b;
max=(temp>c)?temp:c;
printf("3個整數的最大數是%d\n",max);
return 0;
}
通過多種的比較發散的思維看待問題將更加的清晰明白。相同的求四個數的最大值也差不多。
#include<stdio.h>
int main()
{
int t,a,b,c,d;
printf("輸入4個整數,它們將從小的大輸出:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("a=%d,b=%d,c=%d,d=%d",a,b,c,d);
if(a>b){
t=a;
a=b;
b=t;
}
if(a>c){
t=a;
a=c;
c=t;
}
if(a>d){
t=a;
a=d;
d=t;
}
if(b>c){
t=b;
b=c;
b=t;
}
if(b>d){
t=b;
b=d;
d=t;
}
if(c>d){
t=c;
c=d;
d=t;
}
printf("排列順序如下:\n");
printf("%d %d %d %d\n",a,b,c,d);
return 0;
}
也可以用三目運算符來求最值,具體情況根據需求。
#include<stdio.h>
int main()
{
int a,b,c,d,temp,max,end;
printf("請輸入4個整數");
printf("它們將輸出最大值:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
temp=(a>b)?a:b;
max=(temp>c)?temp:c;
end=(max>d)?max:d;
printf("最大的數是%d\n",end);
return 0;
}
如果還想求更多的數,那用目前的方法肯定是不行的,這就需要算法來幫忙了。
零基礎學c語言之比較數