如何判斷一個(gè)整數(shù)是否為正數(shù)
計(jì)算機(jī)同我們一樣解虱,也是可以判斷大小。在此之前漆撞,我們需要先說明在計(jì)算機(jī)中用來判斷兩個(gè)數(shù)關(guān)系的符號(hào)殴泰,即關(guān)系運(yùn)算符。
關(guān)系運(yùn)算符號(hào)
c語(yǔ)言中的關(guān)系運(yùn)算符與數(shù)學(xué)上學(xué)習(xí)的有什么不同浮驳?
關(guān)系表達(dá)式的值是真和假悍汛,在C程序用整數(shù)1和0表示。
注意:>=, <=, ==, !=這種符號(hào)之間不能存在空格至会。
一员凝、分支選擇結(jié)構(gòu)之簡(jiǎn)單的if條件語(yǔ)句
if(判斷條件)
{
? 語(yǔ)句1;
? 語(yǔ)句2;
? 語(yǔ)句······
}
其語(yǔ)義是:如果表達(dá)式的值為真,則執(zhí)行其后的語(yǔ)句奋献,否則不執(zhí)行該語(yǔ)句健霹。
假如你現(xiàn)在想讓計(jì)算機(jī)判斷一個(gè)整數(shù)是否為正數(shù),如果是則顯示YES瓶蚂,不是則顯示NO糖埋,應(yīng)該怎么辦呢?窃这。
//判斷一個(gè)整數(shù)是否為正數(shù)
# include <stdio.h>
# include <stdlib.h>
int main()
{
//定義一個(gè)變量a
int a;
scanf("%d",&a);
//如果a大于0瞳别,則輸出YES
if(a>0)
{
printf("YES");
}
//如果a小于等于0,則輸出NO
if(a<=0)
{
printf("NO");
}
return 0;
}
注意:if()后面沒有分號(hào)杭攻,直接寫{}
判斷一個(gè)數(shù)是否為偶數(shù)
什么是偶數(shù)呢祟敛?偶數(shù)就是能夠被2整除的數(shù),也就是說一個(gè)數(shù)除以2的余數(shù)為0兆解,那么這個(gè)數(shù)就是偶數(shù)馆铁。
那么我們現(xiàn)在只需要判斷這個(gè)數(shù)除以2的余數(shù)是不是0,即:
如果a除以2的余數(shù)與0相等锅睛,則輸出yes埠巨;
如果a除以2的余數(shù)與0 不相等,則輸出no现拒。
c語(yǔ)言中求余數(shù)的運(yùn)算符號(hào)是“%”辣垒,所以判斷一個(gè)數(shù)是否為偶數(shù)的c語(yǔ)言代碼就是:
# include <stdio.h>
# include <stdlib.h>
int main()
{
int a;
scanf("%d",&a);
if(a%2==0)
{
printf("yes");
}
if(a%2!=0)
{
printf("no");
}
return 0;
}
二、分支選擇結(jié)構(gòu)之簡(jiǎn)單的if-else結(jié)構(gòu)
簡(jiǎn)單的if-else語(yǔ)句的基本結(jié)構(gòu):
if(判斷條件)
{
?語(yǔ)句;
?語(yǔ)句;
?······
}
else
{
?語(yǔ)句;
?語(yǔ)句;
?······
}
語(yǔ)義是: 如果表達(dá)式的值為真印蔬,則執(zhí)行if其后的語(yǔ)句勋桶,否則執(zhí)行else 里的語(yǔ)句。
注意:
if()后面沒有分號(hào)侥猬,直接寫{},else后面也沒有分號(hào)例驹,直接寫{}。
從鍵盤讀入一個(gè)整數(shù)陵究,判斷它是否為偶數(shù)的另一種簡(jiǎn)便快捷的代碼寫法如下:
# include <stdio.h>
# include <stdlib.h>
int main()
{
int a;
scanf("%d",&a);
if(a%2==0)
{
printf("yes");
}
else
{
printf("no");
}
return 0;
}
練習(xí):
比較兩個(gè)整數(shù)誰更大眠饮,同時(shí)打印輸出較大的整數(shù)。
//比較兩個(gè)整數(shù)大小铜邮,并打印輸出較大的整數(shù)
# include <stdio.h>
# include <stdlib.h>
int main()
{
int a, b, c;
scanf("%d%d",&a,&b);
//如果a大于b仪召,將a賦值給c,并打印c
if(a>b)
{
c=a;
printf("%d",c);
}
//反之松蒜,則將b賦值給c扔茅,并打印c
else
{
c=b;
printf("%d",c);
}
return 0;
}
我們學(xué)習(xí)了如何從兩個(gè)數(shù)中找出較大的一個(gè)數(shù),那么3個(gè)數(shù)該怎么辦呢秸苗?
1.首先召娜,用3個(gè)變量a,b,c分別存放從鍵盤讀入的3個(gè)數(shù)。
2.然后惊楼,先比較變量a和b的值玖瘸,將較大的值賦給變量d秸讹。
3.再比較變量d和c的值,如果變量c的值大于變量d的值雅倒,則把變量c的值賦給變量d璃诀。
4.最后輸出變量d的值。
c語(yǔ)言代碼為:
//比較3個(gè)數(shù)的大小蔑匣,并將最大值打印輸出
#include<stdio.h>
#include<stdlib.h>
int main()
{
//定義a,b,c,d 4個(gè)整型變量
int a,b,c,d;
scanf("%d %d %d",&a,&b,&c);
//如果a與b比較劣欢,將較大值賦值給d
if(a>b)
{
d=a;
}
else
{
d=b;
}
//c與d比較,如果c大于d裁良,則將c賦值給d
if(c>d)
{
d=c;
}
printf("%d",d);
return 0;
}
當(dāng)然還有另外一種寫法凿将,就是比較變量a和b,以及變量a和c的關(guān)系价脾,思路如下:
如果 a>=b 并且 a>=c牧抵,則輸出a;
如果 b>a 并且 b>=c彼棍,則輸出b灭忠;
如果 c>a 并且 c>b,則輸出c座硕。
其中“并且”在c語(yǔ)言中用“&&”來表示弛作,這時(shí)我們需要來了解一下c語(yǔ)言中的邏輯運(yùn)算符。
c語(yǔ)言中邏輯運(yùn)算符:
邏輯運(yùn)算的值也是有兩種分別為真和假华匾,C語(yǔ)言中用整型的1和0來表示映琳。其求值規(guī)則如下:
與運(yùn)算&&
參與運(yùn)算的兩個(gè)變量都為真時(shí),結(jié)果才為真蜘拉,否則為假萨西。例如:5>=5 && 7>5 ,運(yùn)算結(jié)果為真旭旭;
或運(yùn)算||
參與運(yùn)算的兩個(gè)變量只要有一個(gè)為真谎脯,結(jié)果就為真。 兩個(gè)量都為假時(shí)持寄,結(jié)果為假源梭。例如:5>=5||5>8,運(yùn)算結(jié)果為真稍味;
非運(yùn)算废麻!
參與運(yùn)算的變量為真時(shí),結(jié)果為假模庐;參與運(yùn)算量為假時(shí)烛愧,結(jié)果為真。例如:!(5>8),運(yùn)算結(jié)果為真怜姿。
另一種寫法的c語(yǔ)言代碼:
//判斷3個(gè)數(shù)的大小
#include <stdio.h>
int main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
//如果 a>=b 并且 a>=c,則輸出a沧卢;
if(a>=b && a>=c)
{
printf("%d",a);
}
//如果 b>a 并且 b>=c粪薛,則輸出b;
if(b>a && b>=c)
{
printf("%d",b);
}
//如果 c>a 并且 c>b,則輸出c湃交。
if(c>a && c>b)
{
printf("%d",c);
}
return 0;
}
挑戰(zhàn)練習(xí)
比較3個(gè)數(shù)的大小息罗,并從大到小排序輸出。
第一種方法:
如果a>=b 并且 b>=c温圆,打印a b c挨摸;
如果a>=c 并且 c>b得运,打印a c b;
如果b>a 并且 a>=c锅移,打印b a c熔掺;
如果b>=c 并且 c>a,打印b c a非剃;
如果c>a 并且 a>=b置逻,打印c a b;
如果c>b 并且 b>a备绽,打印c b a券坞;
代碼如下:
//比較排序3個(gè)數(shù)字大小,從大到小輸出
#include <stdio.h>
int main()
{
int a,b,c,t;
scanf("%d %d %d",&a,&b,&c);
//如果a>=b 并且 b>=c疯坤,打印a b c报慕;
if(a>=b && b>=c)
{
printf("%d %d %d",a,b,c);
}
//如果a>=c 并且 c>b,打印a c b压怠;
if(a>=c && c>b)
{
printf("%d %d %d",a,c,b);
}
//如果b>a 并且 a>=c眠冈,打印b a c;
if(b>a && a>=c)
{
printf("%d %d %d",b,a,c);
}
//如果b>=c 并且 c>a,打印b c a蜗顽;
if(b>=c && c>a)
{
printf("%d %d %d",b,c,a);
}
//如果c>a 并且 a>=b布卡,打印c a b;
if(c>a && a>=b)
{
printf("%d %d %d",c,a,b);
}
//如果c>b 并且 b>a雇盖,打印c b a忿等;
if(c>b && b>a)
{
printf("%d %d %d",c,b,a);
}
return 0;
}
第二種方法(稱之為“換位法”):
1.先將a與b比較,如果a<b崔挖,則a與b交換贸街。需要借助另一變量t中轉(zhuǎn)。
2.將a與c比較狸相,如果a<c薛匪,則a與c交換。
3.將b與c比較脓鹃,如果b<c逸尖,則b與c交換。
c語(yǔ)言代碼為:
//“換位法”從大到小瘸右,排序三個(gè)數(shù)大小
#include<stdio.h>
int main()
{
int a,b,c,t;
scanf("%d %d %d",&a,&b,&c);
//1.先將a與b比較娇跟,如果a<b,則a與b交換太颤。需要借助另一變量t中轉(zhuǎn)苞俘。
if(a<b)
{
t=a;
a=b;
b=t;
}
//2.將a與c比較,如果a<c栋齿,則a與c交換苗胀。
if(a<c)
{
t=a;
a=c;
c=t;
}
//3.將b與c比較,如果b<c瓦堵,則b與c交換基协。
if(b<c)
{
t=b;
b=c;
c=t;
}
printf("%d %d %d",a,b,c);
return 0;
}
分支選擇結(jié)構(gòu)之嵌套if-else語(yǔ)句
C語(yǔ)言中嵌套if-else語(yǔ)句。嵌套if-else語(yǔ)句的意思菇用,就是在if-else語(yǔ)句中澜驮,再寫if-else語(yǔ)句。其一般形式為:
if(判斷條件)
{
? if(判斷條件)
?{
? 執(zhí)行代碼塊;
?}
?else
?{
? 執(zhí)行代碼塊;
?}
else
{
?執(zhí)行代碼塊;
}
}
先回顧一下之前寫的比較3個(gè)數(shù)大小的代碼惋鸥,然后思考如何用“嵌套”的方式來解決這個(gè)問題杂穷。
在之前我們使用“&&”這個(gè)邏輯關(guān)系運(yùn)算符號(hào)來解決兩個(gè)條件同時(shí)“滿足”的需求
if(a>=b && a>=c)
print("%d",a);
上述代碼,可以用“嵌套”的方式寫成:
//如果a大于等于b卦绣,再進(jìn)一步討論a與c的關(guān)系
if(a>=b)
{
//如果a大于等于c成立耐量,則輸出a,不成立則輸出c
if(a>=c)
{
printf("%d",a);
}
else
{
printf("%d",c);
}
}
那如果a大于等于b不成立呢滤港,我們的完整代碼該如何編寫呢廊蜒?
//if-else嵌套趴拧,判斷三個(gè)數(shù)大小
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
if(a>=b)
{
if(a>=c)
{
printf("%d",a);
}
else
{
printf("%d",c);
}
}
else
{
if(b>=c)
{
printf("%d",b);
}
else
{
printf("%d",c);
}
}
return 0;
}
如何把代碼修改的更簡(jiǎn)潔呢?
當(dāng)if或else語(yǔ)句后只需執(zhí)行一條代碼時(shí)山叮,可省略{ }著榴。
if-else if 結(jié)構(gòu)
95 “A”;86~100 “A”屁倔;70~85 “B”脑又;60~69“C”;小于60“D”
要求輸入A B C D 锐借,輸出成績(jī)范圍问麸。
定義char grade 用if else實(shí)現(xiàn)
# include <stdio.h>
int main()
{
char grade;
printf("請(qǐng)輸入等級(jí):");
scanf("%c",&grade);
if(grade=='A')
{
printf("分?jǐn)?shù)在86~100分");
}
else if(grade=='B')
{
printf("分?jǐn)?shù)在70~85分");
}
else if (grade=='C')
{
printf("分?jǐn)?shù)在60~69分");
}
else if(grade=='D')
{
printf("分?jǐn)?shù)在60分以下");
}
else if(grade != 'A' ||grade != 'B' || grade !='C' ||grade !='D')
{
printf("輸入錯(cuò)誤!");
}
return 0;
}
switch 分支選擇
#include <stdio.h>
int main()
{
char grade;
scanf("%c",&grade);
switch(grade)
{
case 'A':printf("分?jǐn)?shù)在86~100分"); break;
case 'B':printf("分?jǐn)?shù)在70~85分"); break;
case 'C':printf("分?jǐn)?shù)在60~69分"); break;
case 'D':printf("分?jǐn)?shù)在60以下"); break;
default:printf("輸入錯(cuò)誤!");
}
}
從鍵盤輸入一個(gè)月份,輸出對(duì)應(yīng)季節(jié)
12~2 冬季
3~5 春季
6~8 夏季
9~11 秋季
//從鍵盤輸入一個(gè)月份,輸出對(duì)應(yīng)季節(jié)
/*
12~2 冬季
3~5 春季
6~8 夏季
9~11 秋季
*/
#include <stdio.h>
int main()
{
int number ;
printf("請(qǐng)輸入一個(gè)1~12的月份,以回車結(jié)束\n");
scanf("%d",&number);
switch (number) {
case 12:
case 1:
case 2:
printf("冬季");
break;
case 3:
case 4:
case 5:
printf("春季");
break;
case 6:
case 7:
case 8:
printf("夏季");
break;
case 9:
case 10:
case 11:
printf("秋季");
break;
default:
printf("輸入錯(cuò)誤钞翔!\n");
break;
}
return 0;
}
輸入一個(gè)不多于5位的正整數(shù)
1)輸出位數(shù)
2)分別輸出每位數(shù)字口叙,中間為“,”分隔開
3)反向輸出5位數(shù)
#include <stdio.h>
int main()
{
int num, ten_th,thous,hund,ten,indiv;
printf("請(qǐng)輸入一個(gè)不多于5位的正整數(shù):");
scanf("%d",&num);
if(num>9999 && num <=99999)
{
printf("這個(gè)數(shù)是一個(gè)五位數(shù):");
ten_th=num/10000;
thous=(num-ten_th*10000)/1000;
hund=(num-ten_th*10000-thous*1000)/100;
ten=(num-ten_th*10000-thous*1000-hund*100)/10;
indiv=num%10;
printf("%d,%d,%d,%d,%d\n",ten_th,thous,hund,ten,indiv) ;
printf("反向輸出:%d%d%d%d%d",indiv,ten,hund,thous,ten_th) ;
}
else if(num<=9999&&num>999)
{
printf("這個(gè)數(shù)是一個(gè)四位數(shù):");
thous=num/1000;
hund=(num-thous*1000)/100;
ten=(num-thous*1000-hund*100)/10;
indiv=num%10;
printf("%d,%d,%d,%d\n",thous,hund,ten,indiv) ;
printf("反向輸出:%d%d%d%d",indiv,ten,hund,thous) ;
}
else if(num<=999&&num>99)
{
printf("這個(gè)數(shù)是一個(gè)三位數(shù):");
hund=num/100;
ten=(num-hund*100)/10;
indiv=num%10;
printf("%d,%d,%d\n",hund,ten,indiv) ;
printf("反向輸出:%d%d%d",indiv,ten,hund) ;
}
else if(num<=99&&num>9)
{
printf("這個(gè)數(shù)是一個(gè)兩位數(shù):");
ten=num/10;
indiv=num%10;
printf("%d,%d\n",ten,indiv) ;
printf("反向輸出:%d%d",indiv,ten) ;
}
else if(num>=0 && num<=9)
{
printf("這個(gè)數(shù)是一個(gè)一位數(shù):");
printf("%d",num);
printf("反向輸出:%d",num);
}
else if (num>99999 || num < 0)
{
printf("輸入錯(cuò)誤嗅战!");
}
return 0;
}