本篇內(nèi)容介紹了“C++分支和循環(huán)語(yǔ)句怎么使用”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供西崗網(wǎng)站建設(shè)、西崗做網(wǎng)站、西崗網(wǎng)站設(shè)計(jì)、西崗網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、西崗企業(yè)網(wǎng)站模板建站服務(wù),10年西崗做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
生活中存在三種語(yǔ)言結(jié)構(gòu)
(1)順序結(jié)構(gòu)
(2)選擇結(jié)構(gòu)<——>分支語(yǔ)句:if switch
(3)循環(huán)結(jié)構(gòu)<——>循環(huán)語(yǔ)句:while for do while goto
C語(yǔ)言中0表示假,非0表示為真。(比如說(shuō)-1表示為真)
if 語(yǔ)句
語(yǔ)法結(jié)構(gòu):
if(表達(dá)式)
語(yǔ)句;
if(表達(dá)式)
語(yǔ)句1;
else
語(yǔ)句2;
if (表達(dá)式1)
語(yǔ)句1;
else if(表達(dá)式2)
語(yǔ)句2;
else // 最后一個(gè)else語(yǔ)句借以省略,根據(jù)需要寫(xiě)
語(yǔ)句3;
如果if 或者else想要控制多條語(yǔ)句,必須要用大括號(hào)括起來(lái),整體形成一個(gè)代碼塊。
以上程序的輸出結(jié)果不是“hahahah”也不是“hehhehe”,結(jié)果是什么也不輸出。else是和最近的 if匹配,所以都是屬于第一個(gè)if的代碼塊內(nèi)容。
else是和它離得最近的那個(gè)沒(méi)有匹配的if 是一對(duì)。
如果常量和變量做比較的時(shí)候,我們可以把常量寫(xiě)在前面,這樣能夠避免出現(xiàn)錯(cuò)誤如:5==num;
練習(xí)
1.判斷一個(gè)數(shù)是否為奇數(shù)?
#include
int main()
{
int num=0;
printf("請(qǐng)輸入一個(gè)數(shù):\n");
scanf("num=%d\n",&num);
if (num%2==1)
{
printf("該數(shù)字為奇數(shù)");
}
else
{
printf("該數(shù)字為偶數(shù)");
}
return 0;
}
2.且輸出1-100之間的奇數(shù)。
#include
int main()
{
int a=1;
while (a<=100)
{
if(a%2==1)
{
printf("%d\n",a);
a++;
}
else
a++;
}
return 0;
}
Switch語(yǔ)句
Switch語(yǔ)句的一般形式:
Switch(語(yǔ)句1)
{
case(語(yǔ)句2):
內(nèi)容;
break;
case (語(yǔ)句3):
內(nèi)容;
break;
case(語(yǔ)句4):
內(nèi)容;
break;
……
default;// 可有可無(wú)
內(nèi)容;
break;
}
Switch語(yǔ)句是從case進(jìn)入,從break出來(lái),只有當(dāng)case后面的語(yǔ)句與Switch后面的語(yǔ)句匹配上的時(shí)候才會(huì)執(zhí)行。
注意:Switch語(yǔ)句里面必須是整型表達(dá)式,case后面必須是整型常量表達(dá)式。
while循環(huán)
while 語(yǔ)法結(jié)構(gòu):
while (表達(dá)式)
循環(huán)語(yǔ)句;
只有在表達(dá)式為真的時(shí)候,才會(huì)執(zhí)行循環(huán)語(yǔ)句,知道發(fā)現(xiàn)表達(dá)式為假的時(shí)候,表達(dá)式便不再執(zhí)行,結(jié)束循環(huán)。
continue的作用是終止本次循環(huán)中,也就是說(shuō)continue后面的代碼不再執(zhí)行,直接跳轉(zhuǎn)到while的判斷部分,判斷是否需要進(jìn)入下一次循環(huán)。
只要循環(huán)中遇到break,就停止后期的所有的循環(huán),直接終止循環(huán),所以:while中的break是用于永久終止循環(huán)的。
getchar 是輸入字符,putchar() 是輸出字符。putchar(變量名)的含義類似于printf(“%c”,變量名);
EOF——表示的end of file 是文件的結(jié)束標(biāo)志。
int main()
{
int ch=0;
while((ch=getchar()!=EOF)
{
putchar(ch);
}
return 0;
}
當(dāng)你輸入EOF的時(shí)候,循環(huán)并不會(huì)終止,只有當(dāng)你輸入Ctrl+z時(shí),才會(huì)終止。
getchar與scanf的區(qū)別:
scanf是把你所輸入的內(nèi)容放到一個(gè)緩沖區(qū)中,最后的回車鍵作為結(jié)束標(biāo)志,在最終顯示的時(shí)候不會(huì)顯示出\n。但是getchar首先是去輸入緩沖區(qū)中看是否有內(nèi)容,不管里面的內(nèi)容是否是自己所需要的,都會(huì)被讀走。所以,一般我們?cè)谑褂胓etchar()輸入的時(shí)候,前面一般加上一句getchar();不用給他賦予返回值,因?yàn)槲覀兇藭r(shí)的目的就是清空數(shù)據(jù)緩沖區(qū)中的內(nèi)容,讓getchar獲取我們想要的內(nèi)容。
getchar函數(shù)是一位一位的讀取字符的。
#include
int main()
{
while ((ch=getchar())!=EOF)
{
if(ch<'0'||ch>'9')
continue;
putchar(ch);
}
return 0;
}
以上代碼的意思是只有在輸入字符0-9之間的字符,包含0和9,才會(huì)有輸出,否則就不輸出。
for循環(huán)
語(yǔ)法:for (表達(dá)式1;表達(dá)式2;表達(dá)式3)
{
循環(huán)語(yǔ)句;
}
表達(dá)式 1為初始化部分,用于初始化循環(huán)變量的。表達(dá)式2 為條件判斷部分,用于判斷循環(huán)時(shí)候終止。表達(dá)式3位調(diào)整部分,用于循環(huán)條件的調(diào)整。
break和continue的用法和在while語(yǔ)句中的用法一致。
有一個(gè)小區(qū)別:
#include
int main()
{
int i=0;
for(i=1;i<=10;i++)
{
if (i==5)
continue;
printf("%d",i);
}
return 0;
}
此結(jié)果的輸出是1 2 3 4 6 7 8 9 10 因?yàn)樵趇=5的時(shí)候遇到了continue之后直接跳轉(zhuǎn)到了變量調(diào)整部分i++那里,所以,這個(gè)時(shí)候變量的值變?yōu)榱?,繼續(xù)輸出。
#include
int main()
{
int i=1;
while (i<=10)
{
if(i==5)
continue;
printf("%d",i);
i++;
}
}
此代碼的結(jié)果是1 2 3 4 最后是一個(gè)死循環(huán),因?yàn)楫?dāng)i=5的時(shí)候,遇到了continue,后面的部分不再執(zhí)行,直接跳過(guò)了變量調(diào)整部分,一直在判斷i=5。
for語(yǔ)句循環(huán)控制變量的一些建議:
不可在for循環(huán)體內(nèi)修改循環(huán)變量,防止for循環(huán)失去控制。
建議for語(yǔ)句的循環(huán)控制變量的取值采用“前閉后開(kāi)區(qū)間”寫(xiě)法。
當(dāng)for循環(huán)的表達(dá)式2,即判斷語(yǔ)句不寫(xiě)的時(shí)候,就意味著這個(gè)判斷條件恒為真,那么就進(jìn)入了死循環(huán)。
請(qǐng)問(wèn)一下代碼循環(huán)了多少次?
#include
int main()
{
int i=0;
int k=0;
for (i=0,k=0;k=0;i++,k++)
k++;
return 0;
}
答案是循環(huán)了0次,就是根本就沒(méi)有進(jìn)入循環(huán),因?yàn)榕袛嗾Z(yǔ)句處是一個(gè)賦值語(yǔ)句,賦值表達(dá)式的結(jié)果是0,為假,那么就不進(jìn)入循環(huán)。
do while 循環(huán)
語(yǔ)法:do
{
循環(huán);
}
while()
練習(xí)題
1. 從鍵盤(pán)輸入一個(gè)數(shù)n,并且求n!
#include
int main()
{
int n=0;
int i=1;
int sum=1;
printf("請(qǐng)輸入n:\n");
scanf("%d",&n);
while (i<=n)
{
sum=sum*i;
i++;
}
printf("sum=%d\n",sum);
return 0;
}
2.求1!+2!+3!+4!+……n!
[x]
#include
int main()
{
int n=0;
int i=1;
int sum=1;
int get=0;
printf("請(qǐng)輸入n:\n");
scanf("%d",&n);
for (n=1;n<=10;n++)
{
sum=1;
while (i<=n)
{
sum=sum*i;
i++;
}
get=get+sum;
}
printf("get=%d\n",get);
return 0;
}
[x]
#include
int main()
{
int n=0;
int i=1;
int sum=1;
int get=0;
printf("請(qǐng)輸入n:\n");
scanf("%d",&n);
for (n=1;n<=10;n++)
{
sum=sum*n;
get=get+sum;
}
printf("get=%d\n",get);
return 0;
}
3.在一個(gè)有序數(shù)組中查找具體的某個(gè)數(shù)字n,編寫(xiě)int binsearch(intx, int v[],int n);功能:在v[0]<=v[1]<=v[2]<=……v[n-1]的數(shù)組中查找x。
[x]
#include
int main()
{
int i=1;
int k=7;
int arr[]={1,2,3,4,5,6,7,8,9,10};
int lgth=sizeof(arr)/sizeof(arr[0]) ;
for(i=0;i { if(k==arr[i]) { printf("找到了,下標(biāo)為%d\n",i); break; } } if (i==lgth) printf("沒(méi)有找到"); return 0; } [x]二分查找法 #include int main() { int k=7; int arr[]={1,2,3,4,5,6,7,8,9,10}; int i=0; int legth=sizeof(arr)/sizeof(arr[0]); int right=legth-1; int left=0; while(left<=right) { int mide=(right+left)/2; if(k>arr[mide]) { left=mide+1; } else if(k { right=mide-1; } else { printf("找到了,下標(biāo)為%d\n",mide); break; } } if(left>right) { printf("找不到"); } return 0; } 4.編寫(xiě)代碼,演示多個(gè)字符從兩端移動(dòng),向中間匯聚。 #include #include #include #include int main() { char arr1[]="Welcome to DongHua!!!!"; char arr2[]="######################"; int left =0; int right=strlen(arr1)-1; while (left { arr2[left]=arr1[left]; arr2[right]=arr1[right]; printf("%s\n",arr2); Sleep(1000);//表示在輸出的時(shí)候停留1000毫秒 system("cls");//表示在輸出一次結(jié)果后清屏 left++; right--; } return 0; } 5.編寫(xiě)代碼實(shí)現(xiàn),模擬用戶登錄情景,并且只能登錄三次。(只允許輸入三次密碼,如果密碼正確就提示登錄成功,如果三次均輸入錯(cuò)誤,則退出程序) strcmp(A,B)是比較字符串A和字符串B,如果字符串A>B,那么會(huì)返回一個(gè)大于0的數(shù)字,如果A #include #include int main() { int i=0; char password[20]={0};//不能寫(xiě)成password[]={0},這樣定義的話,就不知道數(shù)組的長(zhǎng)度是多少結(jié)果就會(huì)出錯(cuò) for (i=0;i<3;i++) { printf("請(qǐng)輸入密碼:\n"); scanf("%s",password); if(strcmp(password,"123456")==0)//在比較兩個(gè)字符串是否相等的時(shí)候,不能直接用==來(lái)判斷,要用strcmp函數(shù),它在string.h函數(shù)庫(kù)中 { printf("密碼正確,登陸成功\n"); break; } else { printf("密碼錯(cuò)誤\n"); } } if (i==3) { printf("三次密碼錯(cuò)誤,退出程序\n"); } return 0; } goto 語(yǔ)句 在一般編寫(xiě)程序的時(shí)候很少使用goto語(yǔ)句,因?yàn)樗鼤?huì)破壞程序的邏輯性,它所使用的場(chǎng)景是跳出多層循環(huán)嵌套。 分支和循環(huán)的作業(yè)和練習(xí) 1.輸入三個(gè)數(shù),按照從大到小的順序輸出。 #include int main() { int a=0; int b=0; int c=0; printf("請(qǐng)輸入三個(gè)數(shù):\n"); scanf("%d%d%d",&a,&b,&c); if (a { int temp=a;//在此注意,不能直接將b賦值給a,因?yàn)檫@樣a的值容易丟失 a=b; b=temp; } if(a { int temp=a; a=c; c=temp; } if(b { int temp=b; b=c; c=temp; } printf("由大到小的順序?yàn)椋?d %d %d\n",a,b,c); return 0; } 2.寫(xiě)一個(gè)代碼打印1-100之間的所有的3的倍數(shù)的數(shù)字 #include int main() { int i=0; for (i=0;i<100;i++) { if (i%3==0) { printf("%d",i); } } return 0; } 3.給定兩個(gè)數(shù),求這兩個(gè)數(shù)的最大公倍數(shù). 輾轉(zhuǎn)相除法比如說(shuō)24和18,首先看24%18余數(shù)是否為0,如果不為0的話,再用除數(shù)與余數(shù)相除,直到余數(shù)為0為止,此時(shí)最后的除數(shù)就是公倍數(shù)。 #include int main() { int a = 0; int b = 0; int temp = 0; printf("請(qǐng)輸入兩個(gè)數(shù)字:\n"); scanf_s("%d %d", &a, &b); while(temp = a % b)//只要結(jié)果為非0,就進(jìn)入循環(huán)。 { a = b; b = temp; } printf("公倍數(shù)為:%d", b); return 0; } 4.打印1000年到2000年之間的閏年 #include int main() { int year = 0; for (year = 0; year <= 2000; year++) { //判斷year是否為閏年 //1.能被4整除并且不能被100整除 //2.能被400整除是閏年 if (year % 4 == 0 && year % 100 != 0) { printf("閏年為:%d\n", year); } else if(year%400==0) { printf("閏年為:%d\n", year); } } return 0; } 5.打印100-200之間的素?cái)?shù) #include int main() { int count = 0; int i = 0; for (i = 100; i <= 200; i++) { int j = 0; for (j = 2; j < i ; j++) { if (i%j == 0) { break; } } if (j == i) { count++; printf("%d\n", i); } } printf("count=%d\n", count); return 0; } 優(yōu)化程序:首先偶數(shù)肯定不是素?cái)?shù),所以先產(chǎn)生100-200之間的奇數(shù)。根據(jù)c=a*b,那么a或者b中必有一個(gè)小于c開(kāi)平方 #include # include int main() { int count = 0; int i = 0; for (i = 101; i <= 200; i+2) { int j = 0; for (j = 2; j <= sqrt(i) ; j++) { if (i%j == 0) { break; } } if (j >sqrt(i)) { count++; printf("%d\n", i); } } printf("count=%d\n", count); return 0; } 6.編寫(xiě)程序數(shù)一下1-100之間所有的整數(shù)中出現(xiàn)了多少個(gè)數(shù)字9 #include int main() { int count = 0; int i = 0; for (i = 1; i <= 100; i++) { if (i % 10 == 9) { count++; } if (i / 10 == 9) { count++; } } printf("%d\n", count); return 0; } 7.計(jì)算1/1-1/2+1/3+1/4+1/5+……+1/99+1/100的值,打印出結(jié)果 #include int main() { int i = 0; double sum = 0.0; int flag = 1; for (i = 1; i <= 100; i++) { sum += flag*(1.0 / i);//此處必須是1.0,否則結(jié)果都是不對(duì)的 flag = (-flag); } printf("%lf\n", sum); return 0; } 8.求10個(gè)整數(shù)中的最大值 #include int main() { int i = 0; int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; int sz = sizeof(arr) / sizeof(arr[0]); int max = arr[0]; for (i = 0; i <= 10; i++) { if(max max = arr[i]; } printf("%d\n", max); return 0; } 輸入10個(gè)數(shù)字,并且找出其中的最大值 #define _CRT_SECURE_NO_WARNINGS #include int main() { int i = 0; int arr[10] = { 0 }; printf("請(qǐng)輸入數(shù)字:"); for (i = 0; i < ; i++) { scanf("%d", &arr[i]);//切勿忘記加上取地址運(yùn)算符 } int max = arr[0]; for (i = 1; i < 10; i++) { if (arr[i]>max) { max = arr[i]; } } printf("max=%d\n", max); return 0; } 9.輸出乘法口訣表 #define _CRT_SECURE_NO_WARNINGS #include int main() { int i = 0; int j = 0; for (i = 1; i < 10; i++) { for (j = 1; j < i+1; j++) { printf("%d*%d=%2d ", i, j, i*j);//輸出為%2d表示的是輸出為兩個(gè)字符,不夠兩個(gè)字符的,自動(dòng)補(bǔ)一個(gè)空格。%-2d是輸出左對(duì)齊 } printf("\n"); } return 0; } 10.設(shè)計(jì)一個(gè)猜數(shù)字游戲 #define _CRT_SECURE_NO_WARNINGS//scanf所在的頭文件 #include #include #include void menu() { printf("********************************************\n"); printf("*** 1.play 0.exit ***\n"); printf("********************************************\n"); } void game() { //時(shí)間戳:當(dāng)前時(shí)間-1970年1.1 0:0:0 時(shí)間差換算成秒后的數(shù)字。 int ret = 0; int guess = 0; printf("猜數(shù)字\n"); ret = rand()%100+1;//生成隨機(jī)數(shù),生成隨機(jī)數(shù)的范圍是0-0x7fff,即轉(zhuǎn)換為十進(jìn)制是32767,對(duì)100取余,使其輸出1-100以內(nèi)的隨機(jī)數(shù) while (1) { scanf("%d", &guess); if (guess < ret) { printf("猜小了\n"); } else if (guess > ret) { printf("猜大了\n"); } else if (guess == ret) { printf("恭喜你,猜對(duì)了\n"); break; } } } int main() { //猜數(shù)字游戲 //1.電腦會(huì)生成一個(gè)隨機(jī)數(shù) //2.猜數(shù)字 int input = 0; srand((unsigned int)time(NULL));//設(shè)置時(shí)間起點(diǎn) do { menu(); printf("請(qǐng)選擇:"); scanf("%d", &input); switch (input) { case 1: printf("開(kāi)始游戲\n"); game(); break; case 0: printf("退出游戲\n"); break; default: printf("您輸錯(cuò)了,請(qǐng)重新輸入\n"); break; } } while (input); return 0; } 11.一個(gè)關(guān)機(jī)程序 #define _CRT_SECURE_NO_WARNINGS #include #include #include int main() { char input[20] = { 0 }; system("shutdown -s -t 60");//此處一定要注意,命令的格式,空格鍵不能敲錯(cuò) again: printf("提示?。?您的電腦將在1分鐘后關(guān)機(jī),如果您輸入“我是豬”可以取消關(guān)機(jī)\n"); scanf("%s", input); if (strcmp(input, "我是豬") == 0) { system("shutdown -a"); } else { goto again; } return 0; } “C++分支和循環(huán)語(yǔ)句怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
文章標(biāo)題:C++分支和循環(huán)語(yǔ)句怎么使用
文章出自:http://weahome.cn/article/gjdjep.html