国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【浙大翁愷C語言】從0入門筆記【國家精品課程】(上)

ziwenxie / 796人閱讀

C語言程序設(shè)計

所有代碼都展示main函數(shù)里面的代碼

計算機(jī)的思維

輾轉(zhuǎn)相除法

int u = 32;int v = 32;//如果v=0,計算結(jié)束,u就是最大公約數(shù)//v!=0計算u/v的余數(shù),讓u=v v=余數(shù)while(v!+0){	int temp = u%v;    u = v;    v = temp;}printf("%d",u);

從計算機(jī)到程序再到算法

計算機(jī)的思維和優(yōu)勢是把所有可能列出來挨個試(枚舉)

用二分法可以進(jìn)一步簡化運(yùn)算提高算法效率

程序的執(zhí)行

解釋:借助一個程序,那個程序能試圖理解你的程序,然后按照你的要求執(zhí)行

編譯:借助一個程序,那個程序能將你的程序翻譯成機(jī)器語言后執(zhí)行

編譯和解釋的區(qū)別與看法

  • 語言本無編譯和解釋之分
  • 一個語言使用編譯還是解釋更多是取決于常用的執(zhí)行方式是什么
  • 解釋型語言有特殊的計算能力
  • 編譯型語言有確定的運(yùn)算性能

案例:算找零

需求:

  • 有地方放輸入的數(shù)字
  • 有辦法輸入數(shù)字
  • 輸入的數(shù)字參加運(yùn)算
int price = 0;printf("請輸入金額(元)");scanf("%d",&price);int change = 100 - price;printf("找您%d元。/n",change);

優(yōu)化

  • 便于修改維護(hù)
  • 減少不明意義的數(shù)字
int price = 0;const int AMOUNT = 100;printf("請輸入金額(元)");scanf("%d",&price);int change = AMOUNT - price;printf("找您%d元。/n",change);

const

const是個修飾符,加在int前面,const修飾變量一經(jīng)初始化則無法修改,還可以進(jìn)行再次優(yōu)化,讓用戶輸入那個變量的值,而不是固定的100

變量

變量定義的一般形式:<類型名稱><變量名稱>;

在數(shù)學(xué)中a=b和b=a意義完全相同,但是在程序設(shè)計中意義完全相反

所有變量在第一次使用時之前應(yīng)被賦值(初始化)

<類型名稱><變量名稱>=<初始值>;

關(guān)于scanf

scanf("%d",&price);

要求scanf這個函數(shù)去讀入下一個整數(shù),讀到的結(jié)果賦值給price

雙引號里的時格式字符串,%d表示讀取整數(shù)

小心price前面的&,在scanf變量前要加&

案例:計算時間差

int hour1,minute1;int hour2,minute2;scanf("%d %d",&hour1,&minute1);scanf("%d %d",&hour2,&minute2);int t1 = hour1*60 + minute1;int t2 = hour2*60 + minute2;int t = t1 + t2;printf("時間差是%d小時%d分",t/60,t%60);//利用t/60抽象出小時,t%60抽象出分鐘

案例:求倆個整數(shù)的平均值

int a,b;scanf("%d %d",&a,&b);//人們利用浮點(diǎn)數(shù)表達(dá)所有的帶小數(shù)點(diǎn)的數(shù),當(dāng)浮點(diǎn)數(shù)和整數(shù)放到一起運(yùn)算的時候,c會將整數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù),然后進(jìn)行浮點(diǎn)運(yùn)算double c = (a+b)/2.0;printf("%d和%d的平均值為%lf",a,b,c);
數(shù)據(jù)類型中文名稱格式字符串
double雙精度浮點(diǎn)數(shù)“%lf”
float單精度浮點(diǎn)數(shù)“%f”
int整數(shù)“%d”

案例:交換倆個變量

int a = 5;int b = 6;int t = 0;t = a;a = b;b = t;printf("a=%d b=%d",a,b);

復(fù)合賦值

+= -= *= /= %= ++ –

這些符號是因為c語言繼承了曾經(jīng)的機(jī)器語言

count ++;count += 1;count = count + 1;

上述三種是一個意思都能完成加一

a++表示加一以前的值

++a表示加一以后的值

但這倆種運(yùn)算過后,下一行再用a都是加一過后的值

判斷運(yùn)算

/*if(條件成立){	...;}*/// ==相等 !=不等 >大于 >=大于或者等于 <小于 <=小于或等于//當(dāng)兩個值的關(guān)系符合關(guān)系運(yùn)算符的預(yù)期時,關(guān)系運(yùn)算的結(jié)果為1,否則為0printf("%d/n",5==3);printf("%d/n",5>3);printf("%d/n",5<3);//所有的關(guān)系運(yùn)算符的優(yōu)先級比算術(shù)運(yùn)算的低,但是比賦值運(yùn)算的高7 >= 3+4;int r = a>0;//判斷是否相等的優(yōu)先級比其他的低//連續(xù)的關(guān)系運(yùn)算是從左到右進(jìn)行的

案例:找零計算器

//初始化int price = 0;int bill = 0;//讀入數(shù)據(jù)printf("請輸入金額");scanf("%d",&price);printf("請輸入票面");scanf("%d",&bill);printf("應(yīng)該找您:%d/n",bill-price);

但是我們上面那個程序無法判斷給夠錢了嘛,即判斷票面夠不夠

我們進(jìn)行一個邏輯判斷對程序進(jìn)行優(yōu)化

//初始化int price = 0;int bill = 0;//讀入數(shù)據(jù)printf("請輸入金額");scanf("%d",&price);printf("請輸入票面");scanf("%d",&bill);if(bill>=price){	printf("應(yīng)該找您:%d/n",bill-price);}else{	printf("錢不夠還差:%d/n",price-bill);}

案例:比較數(shù)的大小

案例1:兩個數(shù)的比大小

int a,b;printf("請輸入兩個正整數(shù):");scanf("%d %d",&a,&b);int max = 0;if(a>b){	max = a;}else{    max = b;}printf("%d和%d的最大值是%d",a,b,max);

案例2:三個數(shù)的比大小(if嵌套方法)

int  a,b,c;scanf("%d %d %d",&a,&b,&c);int max = 0;if(a>b){	if(a>c)    {		max = a;    }    else    {		max = c;    }}else{	if(b>c)    {		max = b;    }    else    {		max = c;    }}printf("最大值是%d",max);

案例二也可以用別的方法解決,如冒泡排序等

編程習(xí)慣tips

  • else總是和離它最近的if匹配,所以日常建議寫一個if就寫一個else
  • 縮進(jìn)不能暗示else的匹配!!! 縮進(jìn)不能暗示else的匹配!!! 縮進(jìn)不能暗示else的匹配!!!
  • if后面只有單行語句的時候可以不用花括號,但是為了整體風(fēng)格協(xié)調(diào)好閱讀建議都加花括號

案例:分段函數(shù)的表達(dá)(if-else if-else)

有如下分段函數(shù),要求設(shè)計一個程序,輸入x輸出y

f(x) = -1 x<0

f(x) = 0 x=0

f(x) = 2x x>0

//只展示if部分if(x<0){    f = -1;}else if(x=0){    f = 0;}else{    f = 2*x;}

編程習(xí)慣tips

  • 縮進(jìn)時注意else對齊(級聯(lián)結(jié)構(gòu))
  • 代碼編寫盡量單一出口,多封裝減少出口(如上文f)

if語句常見錯誤

  • 忘加大括號
  • if后加入了分號
  • 錯用==
  • else不規(guī)范

switch結(jié)構(gòu)

若級聯(lián)過多,執(zhí)行效率會非常低,可用switch結(jié)構(gòu)

switch(控制表達(dá)式){case 常量:語句;break;case 常量:語句;break;default:語句break;}

控制表達(dá)式只能是整數(shù)類型的結(jié)果

常量表達(dá)式可以是常數(shù),也可以是表達(dá)式

switch語句可以看作一種基于計算的跳轉(zhuǎn),多個值對應(yīng)一個語句

案例:成績轉(zhuǎn)換

成績大于等于90為A

成績大于等于80為B

成績大于等于70為C

成績大于等于60為D

成績小于60為E

int grade;scanf("%d",&grade);grade /= 10;//我們只抽象出十位數(shù)進(jìn)行運(yùn)算,這樣就可以使用switch結(jié)構(gòu)switch(grade){    case 10:    case 9:        printf("A/N");        break;    case 8:        printf("B/N");        break;    case 7:        printf("C/N");        break;    case 6:        printf("D/N");        break;    default:        printf("E/N");        break;}

級聯(lián)>的時候從高往下判斷

級聯(lián)<的時候從下往高判斷

案例:數(shù)數(shù)幾位數(shù)(while循環(huán))

int x;int n = 0;scanf("%d",&x);//這行代碼是保證輸入0的時候輸出位數(shù)是1n++;x /= 10;while(x>0){    n++;    x /= 10;}printf("%d/n",n);

tips

  • 循環(huán)體一定要有改變循環(huán)條件的機(jī)會
  • 打斷點(diǎn)自己測試程序的時候,測試數(shù)據(jù)常用的有邊界數(shù)據(jù),有效范圍,特殊的倍數(shù)
  • 在程序中適當(dāng)加入注釋以及printf進(jìn)行測試可以提升程序可行性和可讀性

優(yōu)化

我們現(xiàn)實中很多情況都需要先執(zhí)行一次再判斷循環(huán)

do-while會先執(zhí)行一次再判斷循環(huán)

int x;int n = 0;scanf("%d",&x);do{    n++;	x /= 10;}//這個while后面一定要打分號while(x>0);printf("%d/n",n);

拓展案例:計數(shù)循環(huán)

int count = 100;while(count>=0){    //這兩行決定第一個輸出和最后一個輸出的數(shù)據(jù)是什么	count--;    printf("%d/n",count);}printf("發(fā)射/n");

案例:猜數(shù)循環(huán)

計算機(jī)想一個數(shù),然后讓用戶去猜

猜的時候提醒大了還是小了直到猜中為止

補(bǔ)充知識

  • 每次召喚rand()就能得到一個隨機(jī)的整數(shù)
  • x%n的結(jié)果是[0,n-1]的整數(shù)
  • x%100是表示x對100取余也就是只剩下十位個位

程序設(shè)計思路

  • 儲存用戶輸入的數(shù)并且設(shè)置不猜中就不能出去的循環(huán)
  • 判斷大了還是小了
  • 創(chuàng)建變量儲存到底輸入了多少次
  • 優(yōu)化
srand(time(0));int number = rand()%100+1;int count = 0;int a = 0;printf("我已經(jīng)想好了1-100的整數(shù)");do{    printf("請輸入這個1-100的整數(shù)");    scanf("%d",&a);    count++;    if(a>number)    {		printf("大了");    }    else    {		printf("小了")}}while(a!=number);prinf("用了%d次猜中了數(shù)字%d",count,number);

案例:算平均數(shù)

讓用戶輸入一系列正整數(shù),最后輸入-1結(jié)束,然后程序計算出這些數(shù)字的平均數(shù)和數(shù)字個數(shù)

程序設(shè)計思路

  • 用循環(huán)讓用戶持續(xù)輸入,并且等于-1時不進(jìn)行循環(huán)
  • 創(chuàng)建變量存儲數(shù)字的個數(shù)
  • 利用1.0的妙用強(qiáng)制轉(zhuǎn)換數(shù)據(jù)類型為浮點(diǎn)型
int number;int sum = 0;int count = 0;scanf("%d",&number);while(number!=-1){	sum +=number;    count++;    scanf("%d",&number);}printf("%f/n",1.0*sum/count);

案例:整數(shù)的分解

輸入一個正整數(shù)(int范圍內(nèi)的整數(shù)),輸出逆序的數(shù)

程序設(shè)計思路

  • 對一個整數(shù)%10得到個位,對一個整數(shù)/10%10得到十位以此類推得到每一位
  • 逆序處理
  • 對結(jié)尾是0的進(jìn)行處理
int x = 0;int sum = 0;int t = 0;scanf("%d",&x);int count = 0;//防止x改變利用一個變量代替x進(jìn)行操作t = x;//我們先得到x是幾位數(shù),為了防止輸入的是0,我們要先進(jìn)行一次運(yùn)算t /= 10;count++;while(t!=0){    t /= 10;    count++;}//逆序處理//有幾位數(shù)就進(jìn)行幾次運(yùn)算for(int i=0;i<count;i++){    //抽象出最后一位,并且把x從左往右少一位	int a = x % 10;    x /= 10;    //利用j=count-i-1抽象出每次的一位要變到前面去需要×10的幾次方,這種方法也能解決末尾是0的問題因為0*任何數(shù)都是0    for(int j=count-i-1;j>0;j--)    {		a *= 10;    }    //計算和即可    sum += a;}printf("%d",sum);

for循環(huán)總結(jié)

案例1:算階乘

int n;scanf("%d",&n);int fact = 1;int i = 1;for(i=1;i<=n;i++){	fact *= i;}printf("%d",fact);

案例2:是否是素數(shù)

int x;scanf("%d",x);int i;int isPrime = 1;for(i=2;i<x;i++){	if(x%i == 0)    {		isPrime = 0;        break;    }    else    {        continue;    }}if(isPrime = 0){    printf("%d不是素數(shù)",x);}else{    printf("%d是素數(shù)",x);}

關(guān)于for循環(huán)

  • for循環(huán)像一個計數(shù)循環(huán):初始化——循環(huán)條件——重復(fù)執(zhí)行并調(diào)整
  • for中的每一個表達(dá)式都是可以省略的
  • for(;條件;)=while(條件)

tips

  • 如果有固定次數(shù)用for
  • 必須執(zhí)行一次用do_while
  • 其余用while

案例:湊硬幣(如何從嵌套循環(huán)中脫出)

如何用1.2.5角湊10元以下的金額

方案1:接力break

int x;int one,two,five;int exit = 0;scanf("%d",&x);for(one=1;one<x+10;one++){	for(two=1;two<x*10/2;two++)    {        for(five=1;five<x*10/5;five++)        {			if(one+two*2+five*5==x*10)            {             	printf("%d1角%d2角%d5角",one,two,five);                //設(shè)置一個變量作為出口條件,創(chuàng)建接力break                exit = 1;                break;            }            if(exit == 1)            {                break;            }        }        if(exit == 1)        {                break;        }    }}

方案2:goto

int x;int one,two,five;int exit = 0;scanf("%d",&x);for(one=1;one<x+10;one++){	for(two=1;two<x*10/2;two++)    {        for(five=1;five<x*10/5;five++)        {			if(one+two*2+five*5==x*10)            {             	printf("%d1角%d2角%d5角",one,two,five);                goto FLAG;            }        }    }}FLAG:return 0;

案例:正序分解整數(shù)

輸入一個非負(fù)整數(shù),正序輸出每一位,每一位中間有空格,最后無空格

程序設(shè)計思路

  • 先判斷有幾位數(shù)字
  • 進(jìn)行抽象每位正序數(shù),并且間隔空格
  • 處理最后一位不空格
int x;scanf("%d",&x);int mask = 1;while(t>9){    t /= 10;    mask *= 10;}do{	int d = x / mask;    printf("%d",d);    if(mask>9)    {        printf(" ");    }    x %= mask;    mask /= 10;}while(mask>0);printf("/n");

案例:最大公約數(shù)(枚舉與輾轉(zhuǎn)相除)

方法一:設(shè)t為2,如果u,v都能被整除則記下t,t++后重復(fù)第二步直到等于u和v的最小值,那么曾經(jīng)記下的最大的t就是goc

int a,b;int min=0;scanf("%d %d",&a,&b);if(a>b){	max = a;}else{	max = b;}int ret = 0;for(int i=0;i
            
                     
             
               

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/122010.html

相關(guān)文章

  • 重磅 | 完備的 AI 學(xué)習(xí)路線,最詳細(xì)的資源整理!

    摘要:是你學(xué)習(xí)從入門到專家必備的學(xué)習(xí)路線和優(yōu)質(zhì)學(xué)習(xí)資源。的數(shù)學(xué)基礎(chǔ)最主要是高等數(shù)學(xué)線性代數(shù)概率論與數(shù)理統(tǒng)計三門課程,這三門課程是本科必修的。其作為機(jī)器學(xué)習(xí)的入門和進(jìn)階資料非常適合。書籍介紹深度學(xué)習(xí)通常又被稱為花書,深度學(xué)習(xí)領(lǐng)域最經(jīng)典的暢銷書。 showImg(https://segmentfault.com/img/remote/1460000019011569); 【導(dǎo)讀】本文由知名開源平...

    荊兆峰 評論0 收藏0
  • Java 學(xué)習(xí)筆記

    摘要:參考資料程序設(shè)計北大唐大仕零基礎(chǔ)學(xué)語言浙大翁愷面向?qū)ο蟪绦蛟O(shè)計語言浙大翁愷在里面搜索可以查看和修改快捷鍵自動補(bǔ)全代碼格式化簡介歷史與一起發(fā)展萬維網(wǎng)所有信息用鏈接連接起來靜態(tài)網(wǎng)頁動態(tài)網(wǎng)頁的出現(xiàn)年開發(fā)工具包語法增加廣泛動態(tài)編譯腳本 參考資料 Java程序設(shè)計 - 北大 - 唐大仕 零基礎(chǔ)學(xué)Java語言 - 浙大 - 翁愷 面向?qū)ο蟪绦蛟O(shè)計——Java語言 - 浙大 - 翁愷 Ecl...

    tianlai 評論0 收藏0
  • MirrorGAN出世!浙大等提出文本-圖像新框架,刷新COCO紀(jì)錄

    摘要:最近,來自浙江大學(xué)悉尼大學(xué)等高校的研究人員,提出一種新穎的全局局部注意和語義保持的文本圖像文本框架來解決這個問題,這種框架稱為。目前,論文已被接收。喬婷婷,浙江大學(xué)計算機(jī)學(xué)院博士研究生,目前在悉尼大學(xué)陶大程教授研究小組工作。 GAN又開辟了新疆界。去年英偉達(dá)的StyleGAN在生成高質(zhì)量和視覺逼真的圖像,騙過了無數(shù)雙眼睛,隨后一大批假臉、假貓、假房源隨之興起,可見GAN的威力。StyleGA...

    marser 評論0 收藏0
  • 畢業(yè)工作幾年,月入還不到2萬的建議速看

    摘要:中國的行業(yè)的蓬勃發(fā)展,蛋糕之大,讓所有行業(yè)從業(yè)者的收入總體處于行業(yè)前列,可比擬的只有金融行業(yè)一個不創(chuàng)造財富,只分配財富的行業(yè)。每天收到十幾份簡歷,卻招聘不到合適的人。很多小伙伴冷門專業(yè),普通學(xué)校,畢業(yè)了工作幾年了月薪還是幾千塊,這就是現(xiàn)狀。 ? ? ?? ? ? ?中國的IT行業(yè)因為有人口福...

    wmui 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<