學習筆記4-C語言-開關、循環、跳轉

一、開關語句

switch(n)       //n可以是數值、表達式,運算結果必須是整型
{case val:       //必須是常量,如果val等于n,則打開開關...;break;          //關閉執行開關,switch中不能與continue配合使用//如果所有的case后面都有break,就形成了多分支結構default:       //如果所有的case都沒有匹配成功,則打開default執行開關,而且放在任何位置都一定會執行...;break;       //a ... b 表示一段范圍,但是不推薦使用
}練習1:輸入一個月份,判斷季節
#include<stdio.h>int main(int argc,const char* argv[])
{int mon;printf("請輸入一個月份");scanf("%d",&mon);if(mon<1 || mon>12){printf("輸入錯誤");}else{switch(mon/3){case 1:printf("春天");break;case 2:printf("夏天");break;case 3:printf("秋天");break;default:printf("冬天");break;}}return 0;
}
練習2:輸入一個月份,忽略潤平年問題,判斷該月多少天
#include<stdio.h>int main(int argc,const char* argv[])
{char mon;printf("請輸入月份");scanf("%hhd",&mon);if(mon<1 || mon>12){printf("輸入錯誤");	}else{switch(mon){case 2:printf("該月28天");break;case 4:case 6:case 9:case 11:printf("該月30天");break;default:printf("該月31天");break;}}return 0;	
}

二、循環語句

循環是一種讓一段代碼反復執行,從而達到你想要的結果
for是喲中比較靈活而且危險(相比較其他循環)的一種循環
一般使用一個變量來引導這個循環的運行,這個變量叫做循環變量i(index 索引)
for([1];[2];[3])
{[4];
}
[1] 給循環變量賦值,C99可以再次定義循環變量
[2] 判斷循環變量是否達到邊界
[4] 被反復執行的代碼語句,也叫做循環體
[3] 改變循環變量,防止出現死循環,一般對循環體變量進行自加或自減
[2]...[4]...[3]...大括號問題:1、如果循環體只有一行代碼,大括號可以省略,但不利于擴展,一般商業代碼都要求大括號不能省略。2、建議上下對齊(方便查看是否缺少大括號)for循環的多種循環:for(;;)
{//死循環
}int i = 0;
for(;i<10;i++)
{}for(int i=0;i<10;)
{printf("---");i++;
}while語句:while(條件) //當條件為真執行循環體,為假時結束{//循環體}
while循環語句相當于for循環語句的精簡版本
for循環負責明確知道循環次數的問題
while循環負責只知道結束條件而不確定循環次數的問題do while語句
do{//循環體
}while(執行條件);  //分號不能少
先執行循環體語句,在判斷循環條件,該循環語句至少執行一次
適合先干活,后檢查的特殊情況,例如:輸入密碼,文件讀寫循環嵌套:循環語句中包含了循環語句外層循環執行一次,內層循環執行全部練習3:計算出所有3位水仙花數
#include<stdio.h>int main(int argc,const char* argv[])
{int num;int i;int a,b,c;for(i=100;i<1000;i++){	a=i/100;b=i/10%10;c=i%10;num=a*a*a+b*b*b+c*c*c;if(i == num){printf("%d ",num);	}}return 0;
}
練習4:輸入一個正整數,判斷是否是素數
#include<stdio.h>int main(int argc,const char* argv[])
{int i;int num;int k=2;printf("請輸入一個數");scanf("%d",&num);if(num<0){printf("輸入錯誤");return -1;}for(i=2;i<(num/2);i++){if(0== num % i){k++;	}}if(2==k){printf("是素數");	}else{printf("不是素數");	}return 0;
}
練習5:輸入一個整數,分解顯示
#include<stdio.h>int main(int argc,const char* argv[])
{int a[14];int num,num_0,k=0;int i;printf("請輸入一個整數");scanf("%d",&num);num_0=num;while(0 != num){a[k]=num%10;num /= 10;k++;}if(num_0<0){printf("- ");for(i=k-1;i>=0;i--){printf("%d ",0-a[i]);	}}else{for(i=k-1;i>=0;i--){printf("%d ",a[i]);	}}return 0;
}
練習6:輸入一個正整數,判斷是否是回文數
#include<stdio.h>int main(int argc,const char* argv[])
{int num,num_0=0,key;printf("請輸入一個正整數");scanf("%d",&num);key=num;while(0 != key){num_0=num_0*10+key%10;key /= 10;}if(num==num_0){printf("是回文數");	}else{printf("不是回文數");}return 0;
}

三、跳轉語句

goto 可以在函數內任意跳轉
它可能會破壞已經設計好的分支或者循環語句,因此絕大多數公司都是禁用的。
但是它他別適合驅動編程中的異常處理。標簽名:...goto 標簽名;練習7:不使用循環語句計算N的階乘break   1、在switch語句中用于關閉執行開關2、在循環語句中,用于跳出循環,只能跳出1層continue結束本次循環,進入下一次循環return1、返回一個數據給調用者2、結束函數的執行

練習8:不使用循環語句,計算出前N項的斐波那契數列
1 1 2 3 5 8 13

#include<stdio.h>int main(int argc,const char* argv[])
{int N;int key,num=1,ret=1;printf("請輸入N");scanf("%d",&N);if(N<=2){int i=N;
loop1:printf("1 ");i--;if(i>0){goto loop1;	}return 0;}else{printf("1 1 ");		N -= 2;}
loop2:key=num;num=num+ret;ret=key;N--;printf("%d ",num);if(N>0){goto loop2;	}
}

作業:

1、打印99乘法表
#include<stdio.h>int main(int argc,const char* argv[])
{int i,j;for(i=1;i<10;i++){for(j=1;j<=i;j++){printf("%d*%d=%2d  ",i,j,i*j);	}printf(" \n");}return 0;
}
2、百雞百錢問題  公雞5  母雞3   3小雞1
#include<stdio.h>int main(int argc,const char* argv[])
{int i,j,k;for(i=0;i<=20;i++){for(j=0;j<=(100-5*i);j++){k=100-5*i-3*j;if(100 == i+j+3*k){printf("公雞%d只,母雞%d只,小雞%d只\n",i,j,3*k);	}}}return 0;
}
3、計算100~1000所有素數
#include<stdio.h>int main(int argc,const char* argv[])
{int i,j,key=0;for(i=100;i<=1000;i++){key=0;for(j=2;j<=i/2;j++){if(0 == i%j){key++;	}}if(0 == key){printf("%d ",i);	}}return 0;
}
4、輸入一個日期(yyyy-mm-d)計算公元1年到日期為止過了多少天time(NULL) 獲取1970-1-1 0秒 到運行此函數為止過了多少秒srand(time(NULL));rand() 隨機數,偽隨機
#include<stdio.h>int main(int argc,const char* argv[])
{int year,month,day,i,daymax;int time=0;printf("請輸入日期(year-month-day)\n");scanf("%d%d%d",&year,&month,&day);if(month < 1 || month>12){printf("輸入有誤");return -1;}else{switch(month){case 2:daymax=28;break;case 4:case 6:case 9:case 11:daymax=30;break; default:daymax=31;}if(0 == year%4 && month == 2){daymax++;if(0 == year%100 && 0!= year%400){daymax--;}}if(day > daymax || day<1){printf("輸入有誤,日最大為%d",daymax);return -2;}}time += (year-1)*365;for(i=1;i<year;i++){if(0 == i%4 && 0 != i%100 || 0 == i%400){time++;}}for(i=1;i<month;i++){time += 31;switch(i){case 2:time -= 3;break;case 4:case 6:case 9:case 11:time -=1;break; }}if(0 == year%4 && 0 != year%100 || 0 == year%400){time += 1;}time += day-1;printf("過了%d天",time);return 0;
}
5、顯示平行四邊形,每個printf只能輸出一個符號
#include<stdio.h>int main(int argc,const char* argv[])
{int i,j,k,l=9;for(i=9;i>=0;i--){for(j=i;j>=0;j--){printf(" ");}for(k=0;k<10;k++){printf("*");}printf("\n");}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443465.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443465.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443465.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JQuery,ajax異步加載selectoption/option/select多選框:

摘要&#xff1a;最近項目中用到了jquery&#xff0c;ajax&#xff0c;由于很長時間沒用了&#xff0c;所以這次做花了很多時間&#xff0c;現在記錄一下&#xff0c;方便以后回憶&#xff1a; 一&#xff1a;js文件&#xff1a; <script type"text/javascript"&…

學習筆記5-C語言-數組

數組&#xff1a; 什么是數組&#xff1a; 相同類型變量的組合,是一種批量定義變量的方式 定義&#xff1a; 類型 數組名[數組變量數量]&#xff1b;int arr[5]; 使用&#xff1a;數組名[下標]&#xff1b;arr[0];數組下標從零開始&#xff0c;范圍&#xff1a;0~數量-1 遍歷…

學習筆記6-小項目-走迷宮、推箱子

獲取方向鍵的功能&#xff1a;使用getch.h頭文件中的getch函數 1、把windows中的getch.h頭文件放到共享文件夾中 2、終端輸入 cd /media/sf_GONGXIANG進入共享文件夾 3、sudo cp getch.h /usr/include 4、cd /usr/include/ 5、sudo chmod r getch.h頭文件中的getch函數 time.h…

學習筆記7-C語言-進制轉換、原返補、位運算、函數

進制轉換 為什么要使用二、八進制、十六進制&#xff1f;因為現在的CPU只能識別高低兩種電流&#xff0c;因此只能對二進制數據進行運算二進制數據雖然可以直接被cpu識別&#xff0c;但不方便人們書寫、記錄&#xff0c;所以把二進制數據轉換成八進制是為了方便記錄在文件中。…

學習筆記8-作業

作業1&#xff1a;實現一個函數&#xff0c;判斷一個整數是否是素數&#xff0c;調用該函數來顯示出100~10000之間的所有素數 #include<stdio.h> #include<stdbool.h> #include<math.h> bool is_sushu(int num) {for(int i2;i<sqrt(num);i){if(num%i0)re…

學習筆記9-C語言-傳參、類型限定符、遞歸

函數傳參&#xff1a; 1、形參變量屬于它所在的函數&#xff0c;出了該函數就不能使用 2、實參與形參之間都是以賦值的形式進行數據傳遞&#xff08;值傳遞&#xff09; 3、return 其實是把返回值數據放置到一個公共的區域&#xff08;函數和函數調用者&#xff09;&#xff0…

Oracle創建視圖實現獲取當前數據所在的頁數,這里以每頁2條數據分頁

摘要&#xff1a;Oracle創建視圖實現獲取當前數據所在的頁數&#xff0c;這里以每頁2條數據分頁&#xff0c;詳細請看&#xff1a; 一&#xff1a; DROP VIEW MIP.TB_CMS_FLGTINFO_D_VIEW;/* Formatted on 2014/12/4 8:35:36 (QP5 v5.115.810.9015) */ CREATE OR REPLACE FOR…

學習筆記10-C語言-小項目-五子棋

小項目&#xff1a; 需要的數據 1、定義棋盤的二維數組 2、定義變量用于記錄下棋的坐標 3、定義角色 黑棋 O 白棋 * 空位業務邏輯&#xff1a; 是否需要對數據初始化 for(;;) {1、清屏、顯示棋盤2、落子坐標是否合法、該位置是否有棋子3、判斷是否五子連珠4、交換角色5、顯示…

學習筆記11-C語言-指針

什么是指針&#xff1a; 指針是一種特護的數據類型&#xff0c;使用它可以定義指針變量&#xff0c;指針變量存儲的是整型數據&#xff0c;代表內存的編號&#xff0c;通過這個編號可以訪問到對應內存。為什么使用指針 1、函數與函數之間是相互獨立的&#xff0c;但是有些時候…

學習筆記12-C語言-堆內存、字符串

什么是堆內存&#xff1a; 是進程中的一個內存段&#xff08;text\data\bss\heap\stack&#xff09;&#xff0c;由程序猿手動控制。 特點是足夠大&#xff0c;缺點是使用麻煩為什么要使用堆內存&#xff1a; 1、隨著程序的復雜&#xff0c;數據會越來越多。 2、其他的內存段…

學習筆記13-C語言-字符串函數、緩沖區

字符串的常用函數: #include<string.h> size_t strlen(const char* s); 功能&#xff1a;計算字符串長度&#xff0c;但是結果不包括\0 返回值&#xff1a;返回字符串中字符的個數size_t str_len(const char* str) {assert(NULL ! str);const char* tmp str;while(*tmp…

Oracle數據庫里面查詢字符串類型的字段不為空和為空的SQL語句:

摘要&#xff1a;近期項目中&#xff0c;在做高級查詢的時候有個條件是根據選擇的字段&#xff0c;然后再選擇字段的值為空和不為空做查詢&#xff0c;在寫SQL語句的時候費了很長時間&#xff0c;現在記錄一下&#xff0c;方便日后查看&#xff1a; 一&#xff1a;查詢字符串類…

學習筆記14-C語言-小項目-通訊錄

通訊錄&#xff1a; 要求&#xff1a; 姓名&#xff0c;性別、電話&#xff0c;最多儲存50個聯系人 功能&#xff1a;1、添加聯系人2、按名字刪除聯系人3、按姓名修改聯系人信息4、查找聯系人&#xff0c;可通過電話&#xff0c;名字查找&#xff0c;支持模糊查找5、顯示所有聯…

學習筆記15-C語言-預處理指令、條件編譯、頭文件

預處理指令&#xff1a; 程序猿編寫的代碼不是標準C代碼&#xff0c;并不能被真正的編譯器索編譯&#xff0c;需要一段程序把代碼翻譯一下。 翻譯的過程叫做預處理&#xff0c;被翻譯的代碼叫做預處理指令&#xff0c;以#開頭的都是預處理指令查看預處理的過程&#xff1a;gcc…

學習筆記16-C語言-小項目-使用Makefile完成2048

Makefile: Makefile是一系列編譯指令組成的可執行文本&#xff0c;也叫做編譯腳本。 在終端執行make命令會自動執行Makefile腳本中的編譯命令&#xff0c; 而且它還可以根據文件的最后修改時間來判斷哪些文件是否需要重新編譯、哪些文件不需要重新編譯&#xff0c;從而大大提高…

學習筆記17-C語言-結構、聯合、枚舉

結構&#xff1a; struct 結構是由程序猿自己設計的一種數據類型&#xff0c;用于描述一個事務的各項數據&#xff0c;由若干個不同的基礎數據類型組成。設計結構&#xff1a;struct 結構體名{類型 成員名&#xff1b;...}&#xff1b;定義結構體變量struct 結構體名 變量名&a…

Maven 3.0.5 安裝和配置:

摘要&#xff1a;現在的Web項目越來越多的都用maven管理了&#xff0c;所以我也抽時間學習學習&#xff0c;為了趕上時代&#xff01; 一&#xff1a;首先到maven官網&#xff1a;http://maven.apache.org/&#xff0c;然后選擇相應的版本下載&#xff0c;我這里下載的是maven…

學習筆記18-C語言-文件

文件的分類&#xff1a; 文本文件&#xff1a; 存儲的是ASCII碼值的二進制 二進制文件&#xff1a; 存儲的是數據的補碼文件IO&#xff1a; FILE *fopen(const char *path, const char *mode); 功能&#xff1a;打開或者創建文件 path&#xff1a;文件的路徑 mode&#x…

使用INNER JOIN ON 多表關聯查詢,獲取指定用戶下指定權限的資源SQL:

摘要&#xff1a;最近在看一個開源框架&#xff0c;其中用戶&#xff0c;角色&#xff0c;資源&#xff0c;這塊我感覺比較重要&#xff0c;所以就自己也模仿著寫了下&#xff0c;其中在獲取指定用戶下的權限資源的時候遇到問題了&#xff0c;開始時&#xff0c;我首先想到的方…

Maven學習記錄之maven基本操作命令,maven本地工廠的創建,maven骨架的生成,以及在eclipse中創建maven工程:...

摘要&#xff1a;今天又學習了一下maven&#xff0c;之前是下載并安裝和配置好了maven的環境&#xff0c;今天主要學習的內容包括&#xff1a;maven本地工廠的創建&#xff0c;maven骨架的生成命令&#xff0c;maven在dos下創建maven工程&#xff0c;以及在eclipse中創建mavne工…