C語(yǔ)言學(xué)習(xí)教程-最簡(jiǎn)單的C程序設(shè)計(jì)_第1頁(yè)
C語(yǔ)言學(xué)習(xí)教程-最簡(jiǎn)單的C程序設(shè)計(jì)_第2頁(yè)
C語(yǔ)言學(xué)習(xí)教程-最簡(jiǎn)單的C程序設(shè)計(jì)_第3頁(yè)
C語(yǔ)言學(xué)習(xí)教程-最簡(jiǎn)單的C程序設(shè)計(jì)_第4頁(yè)
C語(yǔ)言學(xué)習(xí)教程-最簡(jiǎn)單的C程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第四章簡(jiǎn)單的C程序設(shè)計(jì)4.1C語(yǔ)言基本語(yǔ)句(1)表達(dá)式語(yǔ)句表達(dá)式語(yǔ)句由一個(gè)表達(dá)式加一個(gè)分號(hào)構(gòu)成,其一般形式為:表達(dá)式;C語(yǔ)言語(yǔ)句可以分為五大類(lèi):例如:a=3.5;i++;t=t+1;x+y;(2)函數(shù)調(diào)用語(yǔ)句函數(shù)調(diào)用語(yǔ)句由一次函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成,其一般形式為:函數(shù)名(實(shí)參表);例如:printf(“THISISAEXAMPLE”);

clrscr();y=exp(x);必須將數(shù)學(xué)函數(shù)的頭文件包含到源程序中。

#include“math.h”(3)控制語(yǔ)句

控制語(yǔ)句是用來(lái)完成一定的控制功能的。

C語(yǔ)言有九種控制語(yǔ)句,它們是:

(1)if()~~else~~(條件語(yǔ)句)(2)switch(多分支選擇語(yǔ)句)

(3)for()~~(循環(huán)語(yǔ)句)(4)while()~~(循環(huán)語(yǔ)句)(5)do~~while()(循環(huán)語(yǔ)句)(6)continue(結(jié)束本次循環(huán)語(yǔ)句)(7)break(終止執(zhí)行switch語(yǔ)句)(8)goto

(轉(zhuǎn)向語(yǔ)句)(9)return(從函數(shù)返回語(yǔ)句)(4)空語(yǔ)句只有一個(gè)分號(hào)的語(yǔ)句稱(chēng)為空語(yǔ)句,其一般形式為:

;例如:if(a>=0);elsea=-a;這是求的什么?a的絕對(duì)值(5)復(fù)合語(yǔ)句

復(fù)合語(yǔ)句就是將若干條C語(yǔ)句用花括號(hào)“{”和“}”括起來(lái)其一般形式為:{語(yǔ)句1;語(yǔ)句2;

語(yǔ)句n;

}

例:兩數(shù)交換{x=a;

a=b;

b=x;

}試比較:

Main(){int

a,b,x;a=2;b=5;if(a>b){x=a;

a=b;

b=x;}Main(){int

a,b,x;a=2;b=5;if(a>b)x=a;

a=b;

b=x;}a=2;b=5a=5;b=隨機(jī)4.3數(shù)據(jù)輸入輸出的概念及在c語(yǔ)言中的實(shí)現(xiàn)1、C語(yǔ)言輸入輸出操作由標(biāo)準(zhǔn)函數(shù)庫(kù)中的輸入輸出函數(shù)實(shí)現(xiàn)。2、C語(yǔ)言中的標(biāo)準(zhǔn)輸入輸出函數(shù)有:

putchar(輸出字符)

getchar(輸入字符)

printf(格式輸出)

scanf(格式輸入)

puts(輸出字符串)

gets(輸入字符串)3、標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)包含在頭文件stdio.h中,使用時(shí)需將它包含進(jìn)來(lái):

#include“stdio.h”printf和scanf函數(shù)可省略4.4字符數(shù)據(jù)輸入輸出一、字符輸出函數(shù)putchar()

把一個(gè)字符從標(biāo)準(zhǔn)輸出設(shè)備上輸出。一般形式為:putchar(c);

其中C可為字符型變量、整型變量、字符型常量、整型常量、表達(dá)式。注意1.

putchar()是標(biāo)準(zhǔn)函數(shù),在“stdio

h”函數(shù)庫(kù)中,因此,如果在程序中調(diào)用了該函數(shù),必須在程序開(kāi)始處加上如下語(yǔ)句:

#include“stdio

h”2.

putchar()一次只能輸出一個(gè)字符輸出字符:#include“stdio.h”main(){chara,b,c;

scanf(“%c%c%c”,&a,&b,&c);

putchar(a);

putchar(b);

putchar(c);}標(biāo)準(zhǔn)函數(shù)說(shuō)明二、字符輸入函數(shù)getchar()

getchar()函數(shù)的作用是把一個(gè)字符從標(biāo)準(zhǔn)的輸入設(shè)備上輸入。其一般調(diào)用形式為:getchar()

例如:#include“stdio.h”main(){charc;c=getchar();

putchar(c);putchar(‘\007’);}chara=‘1’,c;c=getchar(a);wrongchara=‘1’,c;c=getchar();getchar()還經(jīng)??捎迷诒磉_(dá)式中如:我們希望輸入并打印一串字符以‘?’結(jié)束:

while((c=getchar())!=‘?’)

printf(“%c“,c);一、格式輸出函數(shù)printf()printf()的作用就是按照指定格式向終端設(shè)備輸出數(shù)據(jù)其一般調(diào)用形式為:printf(格式控制,輸出表列);格式控制是以雙引號(hào)括起來(lái)的字符串,它規(guī)定了輸出項(xiàng)輸出的格式輸出表列由一個(gè)或多個(gè)輸出項(xiàng)組成,當(dāng)有多個(gè)輸出項(xiàng)時(shí),輸出項(xiàng)之間用“,”分隔。每一個(gè)輸出項(xiàng)可以是變量、常量或表達(dá)式。4.5、格式輸入與輸出格式控制包括:格式說(shuō)明和普通字符。格式說(shuō)明:格式說(shuō)明由%及格式字符組成,如%d、%f。普通字符:普通字符就是要原樣輸出的字符。printf(“num1=%d,num2=%d\n”,num1,num2);普通字符格式說(shuō)明輸出項(xiàng)表若num1=1,num2=2,則輸出結(jié)果為:num1=1,num2=2_格式說(shuō)明的個(gè)數(shù)、類(lèi)型要與輸出項(xiàng)表中的輸出項(xiàng)的個(gè)數(shù)、類(lèi)型相匹配。格式說(shuō)明按從左至右的順序與輸出項(xiàng)表中的輸出項(xiàng)配對(duì)。格式字符整型數(shù)據(jù)的輸出d——以十進(jìn)制形式輸出u——以十進(jìn)制形式輸出無(wú)符號(hào)整數(shù)o——以八進(jìn)制形式輸出x——以十六進(jìn)制形式輸出

例:

inti=65;

printf(“%c,%d,%u,%x,%o\n”,i,i,i,i,i);

輸出:A,65,65,41,101

例:

intk=-1;

printf(“%d,%u\n”,k,k);

000000000000000111111111111111101111111111111111輸出:-1,655535

實(shí)型數(shù)據(jù)的輸出f——以小數(shù)形式輸出。e——以指數(shù)形式輸出。g——根據(jù)數(shù)值的大小,自動(dòng)選擇以f或e格式輸出,其原則是選擇輸出時(shí)占寬度較小的一種,且不輸出無(wú)意義的零。例如:

floatf=123.123;

printf(“%f,%e,%g”,f,f,f);輸出結(jié)果為:123.123001,1.23123e+02,123.1231.

%f使整數(shù)部分如數(shù)輸出,小數(shù)占6位。

%e按標(biāo)準(zhǔn)化指數(shù)形式輸出,即小數(shù)點(diǎn)前有且只有一位非零數(shù)字,小數(shù)點(diǎn)后5位小數(shù),指數(shù)部分占4位(如e+02),其中“e”占1位,指數(shù)符號(hào)占1位,指數(shù)占2位。2.

雙精度實(shí)數(shù)也用%f格式輸出。單精度實(shí)數(shù)的有效位為7位;

雙精度實(shí)數(shù)則為16位;main(){floata,b;doublex,y;a=111111.111;b=222222.222;x=1111111111111.111111111;y=2222222222222.222222222;

printf(“a+b=%f,x+y=%f”,a+b,x+y);}輸出結(jié)果為:a+b=333333.328125,x+y=3333333333333.333010main(){floata=10.4,b=2.5;

printf(“a=%f,b=%f\n”,a,b);

printf(“a+b=%f\n”,a+b);

printf(“a-b=%f\n”,a-b);

printf(“a*b=%f\n”,a*b);

printf(“a/b=%f\n”,a/b);}輸出結(jié)果為:a=10.400000,b=2.500000a+b=12.900000a-b=7.900000a*b=25.999999a/b=4.160000設(shè)有兩個(gè)浮點(diǎn)數(shù)a=10.4,b=2.5,編寫(xiě)程序分別計(jì)算:(1)a+b(2)a-b(3)a*b(4)a/b字符型數(shù)據(jù)的輸出c——輸出單個(gè)字符s——輸出一個(gè)字符串例如:charc=‘a(chǎn)’;

printf(“%c,%s”,c,“CHINA”);輸出結(jié)果為:a,CHINA附加格式說(shuō)明符用途:確定輸出的寬度、精度、小數(shù)位數(shù)、對(duì)齊方式。位置:在%與格式字符間。1.控制字段寬度

m:指定輸出最小寬度為m。若數(shù)據(jù)不足m位,則左端補(bǔ)空格;若大于m位,則按實(shí)際位數(shù)輸出。

如:printf(“%3d”,21);printf(“%3d”,2134);

輸出:?2121340m:指定輸出的最小寬度為m,

若數(shù)據(jù)不足m位,則左端補(bǔ)0。

如:printf(“%03d”,21);

輸出:021m.n:m為輸出的總寬度;

n表示輸出的小數(shù)位數(shù);對(duì)字符串表示截取的字符個(gè)數(shù)。如:printf(“%7.2d”,3.1415926);

輸出:???3.14

如:printf(“%5.3s”,”COMPUTER”);

輸出:??COM*:寬度由緊跟在控制字符串后面的常量或變量的值確定。例如:inti=15;

printf(“%*d\n”,8,i);/*表示以字段寬度8輸出整型變量i*/

輸出:??????15例如:intk=6,num=33;

printf(“%*d\n”,k,num);/*表示以字段寬度6輸出整型變量i*/輸出:????33main(){inti=65;floatx=3.14159;printf(“%5d\n”,i);printf(“%05d\n”,i);

printf(“%*d\n”,5,i);printf(“%7.5f\n”,x);printf(“%7.4f\n”,x);}輸出結(jié)果為:???6500065???653.14159?3.1416控制對(duì)齊方式–

:左對(duì)齊;否則:右對(duì)齊;例如:

inti=15;

printf(“%–8d\n”,i);輸出:15??????printf(“%8d\n”,i);輸出:??????15例如:intk=8567;printf(“|%-06d|\n”,k);輸出:A、|008567|B、|8567|C、|856700|D、|8567|Disright!字符“l(fā)”l:輸出長(zhǎng)整型數(shù)據(jù)如:%ld——輸出長(zhǎng)整型

%lf——輸出雙精度型使用printf()函數(shù)時(shí)的注意事項(xiàng)當(dāng)格式字符少于輸出項(xiàng)時(shí),多余的輸出項(xiàng)不予輸出;當(dāng)格式字符多于輸出項(xiàng)時(shí),將輸出不定值;如:printf(“c=%cf=%f”,c,f,g);

printf(“x=%ds=%f”,x);例如:longu=51274;printf(“%ld”,u);2.格式說(shuō)明總是以%開(kāi)頭,以9個(gè)格式字符之一為結(jié)束,

中間可以插入附加格式字符。若某個(gè)格式字符不在%之后,則視其為普通字符。如:

printf(“c=%cf=%fd=%ds=%s”,c,f,d,s);

3.如果想輸出字符“%”,則應(yīng)在格式字符串中用連續(xù)兩個(gè)%表示。

如:printf(“%f%%\n”,1.0/3);

輸出:0.333333%4.格式字符一律用小寫(xiě)字母,如%d不能寫(xiě)成%D二、格式輸入函數(shù)scanf()作用:把從終端上輸入的數(shù)據(jù)傳送給對(duì)應(yīng)的變量。調(diào)用形式:scanf(格式控制,輸入項(xiàng)地址表);例如:

scanf(“%d%d%d”,&a,&b,&c);&——取地址運(yùn)算符&a——指變量a所在的內(nèi)存地址輸入數(shù)據(jù)時(shí),以空格、tab鍵或回車(chē)鍵分隔1.格式說(shuō)明輸入格式字符附加格式字符可以指定輸入數(shù)據(jù)所占列數(shù),系統(tǒng)自動(dòng)按它截取所需數(shù)據(jù)。如:scanf(“%3d%3d”,&a,&b);當(dāng)輸入123456時(shí),系統(tǒng)會(huì)自動(dòng)將123給a,456給b在scanf()中不能規(guī)定輸入數(shù)據(jù)的精度則scanf(“%7.2f”,&a);

是不符合C語(yǔ)言語(yǔ)法的“*”附加符用來(lái)表示跳過(guò)相應(yīng)的數(shù)據(jù)例如:scanf(“%d%*d%d”,&a,&b);當(dāng)從鍵盤(pán)輸入:1234567則a=12b=67在scanf()函數(shù)執(zhí)行中,

輸入數(shù)據(jù)時(shí)應(yīng)注意的幾個(gè)問(wèn)題:1.如果在“格式控制”字符串中出現(xiàn)普通字符,則在執(zhí)行中輸入數(shù)據(jù)時(shí)應(yīng)照原樣輸入。例如:scanf(“%d,%d”,&a,&b);輸入時(shí)應(yīng)輸入如下形式:3,4若輸入34

則是錯(cuò)誤的又如:

scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);輸入形式應(yīng)為如下:a=12,b=24,c=362.在用“%c”格式輸入字符時(shí),空格字符和轉(zhuǎn)義字符都作為有效字符。例如:scanf(“%c%c%c”,&c1,&c2,&c3);如輸入:abc則c1=‘a(chǎn)’c2=‘’c3=‘b’正確輸入法:abcscanf(“%d”,&x);……if(x==3){printf(“請(qǐng)輸入字符”);

scanf(“\n%c”,&a);if(a>=’a’&&a<=‘z’)a-=32;elsea+=32;}scanf(“%d”,&x);……if(x==3){printf(“請(qǐng)輸入字符”);

scanf(“%c”,&a);if(a>=’a’&&a<=‘z’)a-=32;elsea+=32;}scanf(“%d”,&x);……if(x==3){printf(“請(qǐng)輸入字符”);

scanf(“%c%c”,&t,&a);if(a>=’a’&&a<=‘z’)a-=32;elsea+=32;}scanf(“%d”,&x);……if(x==3){printf(“請(qǐng)輸入字符”);

scanf(“%*c%c”,&a);if(a>=’a’&&a<=‘z’)a-=32;elsea+=32;}當(dāng)我們輸入3<換行>后,程序并沒(méi)有等待第二次輸入,為什么?此時(shí)x為多少,a為多少?x=3,a=‘\n’如何修改?三、簡(jiǎn)單程序設(shè)計(jì)的基本方法1.分析問(wèn)題

(1)已知條件:(2)所求結(jié)果:(3)解決辦法:(如何由已知條件得到所求結(jié)果)2.解決問(wèn)題

(1)程序中所需的變量(變量名、類(lèi)型)

(2)算法的描述步驟

(3)輸入輸出語(yǔ)句的形式

(4)寫(xiě)程序(按照C語(yǔ)言程序的基本結(jié)構(gòu)將上述分析的問(wèn)題逐一寫(xiě)出即可)變量定義輸入語(yǔ)句算法的描述輸出語(yǔ)句main(){}標(biāo)準(zhǔn)函數(shù)說(shuō)明符號(hào)常量定義例1:求方程ax2+bx+c=0的根,a,b,c由鍵盤(pán)輸入,(設(shè)b2-4ac0)1.分析問(wèn)題

(1)已知條件:三個(gè)系數(shù)a,b,c(2)所求結(jié)果:方程的兩個(gè)根x1,x2(3)解決辦法:(如何由已知條件得到所求結(jié)果)

根據(jù)求根公式:假設(shè)其中變量a、b、c、x1、x2、p、q、disc均為實(shí)型2.解決問(wèn)題

(1)程序中所需的變量(變量名、類(lèi)型)三個(gè)系數(shù)a,b,c、方程的兩個(gè)根x1,x2及中間變量

p、q、disc均為實(shí)型。(2)算法的描述步驟先判斷disc

再?zèng)Q定是否求根

disc>=0if()disc<0else求根顯示無(wú)實(shí)根

(3)輸入輸出語(yǔ)句的形式輸入三個(gè)系數(shù):scanf(“%f%f%f”,&a,&b,&c);

輸出方程兩根:printf(“x1=%.2f\nx2=%.2f\n”,x1,x2);變量定義輸入算法main(){

}4、寫(xiě)程序:#include“math.h”if(b*b-4*a*c>=0){p=-b/(2*a);disc=b*b-4*a*c;q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;}elseprintf(“norealroot\n”);floata,b,c,p,q,disc,x1,x2;scanf(“%f%f%f”,&a,&b,&c);輸出printf(“x1=%.2f\nx2=%.2f\n”,x1,x2);例2:從鍵盤(pán)輸入三角形的三條邊長(zhǎng),求三角形的面積.1.分析問(wèn)題

(1)已知條件:三角形的3條邊長(zhǎng)

(2)所求結(jié)果:三角形的面積

(3)解決辦法:(如何由已知條件得到所求結(jié)果)

根據(jù)三角形的面積公式:其中2.解決問(wèn)題

(1)程序中所需的變量(變量名、類(lèi)型)三角形的三條邊長(zhǎng)分別用變量a、b、c均為實(shí)型三角形的面積用變量area為實(shí)型半周長(zhǎng)用變量p為實(shí)型

(2)算法的描述步驟先求p

再求area

(3)輸入輸出語(yǔ)句的形式輸入三條邊長(zhǎng):scanf(“%f%f%f”,&a,&b,&c);

輸出三角形面積:printf(“area=%f\n”,area);floata,b,c,p,area;scanf(“%f%f%f”,&a,&b,&c);p=(a+b+c)/2;area=sqrt(p*(p-a)*(p-b)*(p-c));printf(“area=%f\n”,area);main(){}#include“math.h”(4)寫(xiě)程序Printf、scanf

練習(xí)題例如:

floatf=123.456;printf(“%f,%10f,%10.2f,%.2f\n”,f,f,f,f);printf(“%e,%10e,%10.2e,%.2e\n”,f,f,f,f);printf(“%3s,%7.2s,%.4s\n”,“CHINA”,“CHINA”,“CHINA”);

結(jié)果為:輸出123.456001,123.456001,????123.46,123.461.23456e+02,1.23456e+02,???1.2e+02,1.2e+02CHINA,?????CH,CHIN

請(qǐng)大家自己用附加格式輸出:

*

*******main(){chars='*',k='';

printf("%c%c%c%c%c\n",k,k,k,k,s);

printf("%c%c%c%c%c%c\n",k,k,k,s,k,s);

printf("%c%c%c%c%c%c%c\n",k,k,s,s,s,s,s);}main(){chars='*';printf("%5c\n",s);printf("%4c%2c\n",s,s);printf("%3c%c%c%c%c\n",s,s,s,s,s);}main(){charc=‘a(chǎn)’;

inti=65;floatx=347.25;

printf(“%c,%d\n”,c,c);

printf(“%c,%d,%u,%x,%o\n”,i,i,i,i,i);

printf(“%f,%e,%g\n”,x,x,x);}輸出結(jié)果為:a,97A,65,65,41,101347.250000,3.47250e+02,347.25看結(jié)果main(){chars='*',k='';

printf("%c%c%c%c%c\n",k,k,k,k,s);

printf("%c%c%c%c%c%c\n",k,k,k,s,k,s);

printf("%c%c%c%c%c%c%c\n",k,k,s,s,s,s,s);}輸出:??????????????*????*_????*?????*??????*???????*???*????*???*?????*???*?*????*???*?*?????*???*?*??????*???*?*??*????*???*?*??**????*???*?*??***????*???*?*??****?

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論