




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Chap2用C語(yǔ)言編寫(xiě)程序2.1在屏幕上顯示HelloWorld!2.2求華氏溫度100°F對(duì)應(yīng)的攝氏溫度2.3計(jì)算分段函數(shù)2.4輸出華氏—攝氏溫度轉(zhuǎn)換表2.5生成乘方表與階乘表*本章要點(diǎn)怎樣編寫(xiě)程序,在屏幕上顯示一些信息?怎樣編寫(xiě)程序,實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)處理,例如將華氏溫度轉(zhuǎn)換為攝氏溫度?怎樣使用if語(yǔ)句計(jì)算分段函數(shù)?怎樣用for語(yǔ)句求1+2+……+100?如何定義和調(diào)用函數(shù)生成一張乘方表?*2.1在屏幕上顯示HelloWorld!例2-1在屏幕上顯示一個(gè)短句:HelloWorld!*2.1在屏幕上顯示HelloWorld!/*顯示“HelloWorld!”*/注釋文本
#include<stdio.h>intmain(void)主函數(shù){
printf(“HelloWorld!\n”);語(yǔ)句結(jié)束
return0;}
輸出函數(shù)
換行符1.任何程序都有主函數(shù)2.程序由若干語(yǔ)句組成3.語(yǔ)句由;結(jié)束*2.1在屏幕上顯示一些信息例2-2在屏幕上顯示:Programmingisfun!AndProgramminginCisevenmorefun!#include<stdio.h>編譯預(yù)處理命令intmain(void){printf("Programmingisfun!\n");printf("AndProgramminginCisevenmorefun!\n");return0;}*2.2求華氏溫度100°F對(duì)應(yīng)的攝氏溫度攝氏溫度C=(5/9)(F-32)2.2.1程序解析2.2.2常量、變量和數(shù)據(jù)類型2.2.3算術(shù)運(yùn)算和賦值運(yùn)算2.2.4格式化輸出函數(shù)printf*2.2.1程序解析例2-3求華氏溫度100°F對(duì)應(yīng)的攝氏溫度。攝氏溫度C=5*(F-32)/9#include<stdio.h>intmain(void){intcelsius,fahr;變量定義
fahr=100;變量使用
celsius=5*(fahr-32)/9;printf("fahr=%d,celsius=%d\n",fahr,celsius);輸出結(jié)果
return0;}輸出:fahr=100,celsius=37*2.2.2常量、變量和數(shù)據(jù)類型intcelsius,fahr;celsius=5*(fahr-32)/9;數(shù)據(jù)常量:在程序運(yùn)行過(guò)程中,其值不能被改變變量:在程序運(yùn)行過(guò)程中,其值可以被改變數(shù)據(jù)類型常量:5和9是整型常量(整數(shù))變量:在定義時(shí)指定*數(shù)據(jù)類型和表達(dá)式數(shù)據(jù)類型基本數(shù)據(jù)類型整型int實(shí)型(浮點(diǎn)型)floatdouble字符型char構(gòu)造數(shù)據(jù)類型數(shù)組、結(jié)構(gòu)、聯(lián)合、枚舉指針類型空類型運(yùn)算:對(duì)數(shù)據(jù)的操作運(yùn)算符+數(shù)據(jù)表達(dá)式*基本數(shù)據(jù)類型整型有符號(hào)整型無(wú)符號(hào)整型數(shù)據(jù)長(zhǎng)度int
unsigned[int]16或32位short[int]unsignedshort[int]16位long[int]unsignedlong[int]32位字符型char8位實(shí)型(浮點(diǎn)型)單精度浮點(diǎn)型float32位雙精度浮點(diǎn)型double64位*基本數(shù)據(jù)類型-整型擴(kuò)展的整數(shù)類型:shortlongunsigned
[int]有符號(hào)整型無(wú)符號(hào)整型數(shù)據(jù)長(zhǎng)度int
unsigned[int]16或32位short[int]unsignedshort[int]16位long[int]unsignedlong[int]32位有符號(hào)short
1000000000000000-32768
-215011111111111111132767
215-1無(wú)符號(hào)unsignedshort00000000000000000111111111111111165535
216-1*整數(shù)類型的取值范圍int32位-2147483648~2147483647
-231~231-1short[int]16位-32768~32767
-215~215-1long[int]32位-2147483648~2147483647
-231~231-1unsigned[int]32位0~4294967295
0
~232-1unsignedshort[int]16位0~65535
0
~216-1unsignedlong[int]32位0~4294967295
0
~232-1*整型常量(整數(shù))整數(shù)的表示三種表現(xiàn)形式:十進(jìn)制整數(shù):正、負(fù)號(hào),0~9,首位不是0例:10,123八進(jìn)制整數(shù):正、負(fù)號(hào),0~7,首位是0例:010,0123十六進(jìn)制整數(shù):正、負(fù)號(hào),0~9,a~f,A~F,前綴是0x,0X例:0x10,0X123*整數(shù)的表示123=01111011(B)二進(jìn)制=173(O)八進(jìn)制=7B(X)十六進(jìn)制12301730x7b160200x10100120XA不能超出整型數(shù)據(jù)的取值范圍比長(zhǎng)整型數(shù)還要大的數(shù)只能用實(shí)數(shù)來(lái)表示*數(shù)制的轉(zhuǎn)換基數(shù)權(quán)1、十進(jìn)制轉(zhuǎn)非十進(jìn)制口訣:除基取余,商0為止,從下到上將十進(jìn)制108轉(zhuǎn)換成十六進(jìn)制(6C)2、非十進(jìn)制轉(zhuǎn)十進(jìn)制口訣:每位乘權(quán)再相加(16A)16=1*16*16+6*16+10=(362)103、非十進(jìn)制之間的轉(zhuǎn)換口訣:變二進(jìn)制重分節(jié)16轉(zhuǎn)8:變二進(jìn)制重分節(jié),3位一節(jié)從右數(shù)8轉(zhuǎn)16:變二進(jìn)制重分節(jié),4位一節(jié)從右數(shù)(B5)16=10110101=10110101=(265)8*整數(shù)的類型判斷整數(shù)的類型整數(shù)后的字母后綴123L
long123U
unsigned123LU
unsigned
long整數(shù)的值*基本數(shù)據(jù)類型-實(shí)型實(shí)型(浮點(diǎn)型)數(shù)據(jù)單精度浮點(diǎn)型
float雙精度浮點(diǎn)型double存儲(chǔ)
數(shù)據(jù)精度取值范圍(有效數(shù)字)float
4字節(jié)七/八位
±(10-38
~1038)double
8字節(jié)十六位±(10308
~10308)*數(shù)據(jù)精度和取值范圍數(shù)據(jù)精度與取值范圍是兩個(gè)不同的概念:floatx=1234567.89;雖在取值范圍內(nèi),但無(wú)法精確表達(dá)。floaty=1.2e55;y的精度要求不高,但超出取值范圍。并不是所有的實(shí)數(shù)都能在計(jì)算機(jī)中精確表示
實(shí)型常量的類型都是double1234567.80*實(shí)型常量(實(shí)數(shù)、浮點(diǎn)數(shù))實(shí)數(shù)的表示浮點(diǎn)表示法0.123123.412..12科學(xué)計(jì)數(shù)法6.026E-271.2e+301E-5實(shí)數(shù)的類型double*變量的定義變量定義的一般形式:類型名變量名表;例如:intcelsius,fahr;定義整型變量floatx;定義單精度浮點(diǎn)型變量doublearea,length;定義雙精度浮點(diǎn)型變量double型數(shù)據(jù)比f(wàn)loat精度高,取值范圍大變量名:小寫(xiě)字母;見(jiàn)名知義*變量的定義定義變量時(shí)要指定變量名和數(shù)據(jù)類型類型名變量名表;intcelsius,fahr;floatx;doublearea,length;變量名代表內(nèi)存中的一個(gè)存儲(chǔ)單元存放該變量的值該存儲(chǔ)單元的大小由變量的數(shù)據(jù)類型決定C語(yǔ)言中的變量代表保存數(shù)據(jù)的存儲(chǔ)單元數(shù)學(xué)中的變量代表未知數(shù)x=x+1*變量的定義與使用變量必須先定義,后使用。#include<stdio.h>intmain(void){intcelsius,fahr;
fahr=100;
celsius=5*(fahr-32)/9;printf("fahr=%d,celsius=%d\n",fahr,celsius);
return0;}一個(gè)變量名只能定義一次變量一般都定義在程序的頭上不能定義在程序的中間或后面應(yīng)該先賦值,后引用*2.2.3算術(shù)運(yùn)算和賦值運(yùn)算fahr=100;celsius=5*(fahr-32)/9;1、算術(shù)運(yùn)算雙目算術(shù)運(yùn)算符:+-*/%算術(shù)表達(dá)式:用算術(shù)運(yùn)算符將運(yùn)算對(duì)象連接起來(lái)的符合C語(yǔ)言語(yǔ)法規(guī)則的式子數(shù)學(xué)式:5*(F-32)/9
C表達(dá)式:5*(fahr-32)/9或者:數(shù)學(xué)式:s(s-a)(s-b)(s-c)C表達(dá)式:s*(s-a)*(s-b)*(s-c)*算術(shù)運(yùn)算雙目算術(shù)運(yùn)算符:+-*/%算術(shù)表達(dá)式:用算術(shù)運(yùn)算符將運(yùn)算對(duì)象連接起來(lái)的符合C語(yǔ)言語(yǔ)法規(guī)則的式子注意/整數(shù)除整數(shù),得整數(shù)如:1/2=0,9/4=2?5*(fahr-32)/9和5/9*(fahr-32)等價(jià)嗎%針對(duì)整型數(shù)據(jù)如:5%6=5,9%4=1,100%4=0雙目運(yùn)算符兩側(cè)操作數(shù)的類型要相同*賦值運(yùn)算賦值運(yùn)算符=賦值表達(dá)式:用=
將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子變量=表達(dá)式例如:fahr=100;celsius=5*(fahr-32)/9;計(jì)算賦值運(yùn)算符右側(cè)表達(dá)式的值將賦值運(yùn)算符右側(cè)表達(dá)式的值賦給左側(cè)的變量=的左邊必須是一個(gè)變量*2.2.4格式化輸出函數(shù)printf數(shù)據(jù)輸出:格式化輸出函數(shù)printf
#include<stdio.h>printf("HelloWorld!\n");printf("fahr=%d,celsius=%d\n",fahr,celsius);printf(格式控制字符串,輸出參數(shù)1,…,輸出參數(shù)n);用雙引號(hào)括起來(lái),表示輸出的格式要輸出的數(shù)據(jù)*printf-格式控制字符串printf("HelloWorld!\n");
printf("fahr=%d,celsius=%d\n",fahr,celsius);格式控制字符串:普通字符:原樣輸出格式控制說(shuō)明:按指定的格式輸出數(shù)據(jù),%…與數(shù)據(jù)類型有關(guān)int型:%dfloatdouble型:%fprintf("fahr=%d,celsius=%d\n",fahr,celsius);輸出參數(shù)必須和格式控制字符串中的格式控制說(shuō)明相對(duì)應(yīng),它們的類型、個(gè)數(shù)和位置一一對(duì)應(yīng)輸出:fahr=100,celsius=37*轉(zhuǎn)義字符反斜杠后跟一個(gè)字符或數(shù)字字符常量,代表一個(gè)字符
'\n'
'\101'
'\x41'
'A'所有字符都可以用轉(zhuǎn)義字符表示*2.3計(jì)算分段函數(shù)2.3.1程序解析2.3.2關(guān)系運(yùn)算2.3.3if-else語(yǔ)句2.3.4格式化輸入函數(shù)scanf2.3.5常用數(shù)學(xué)庫(kù)函數(shù)*2.3.1程序解析例2-4分段計(jì)算水費(fèi)輸入用戶的月用水量x(噸),計(jì)算并輸出該用戶應(yīng)支付的水費(fèi)y(元)(保留2位小數(shù))要解決的問(wèn)題:輸入計(jì)算分段函數(shù)輸出,并保留2位小數(shù)*2.3.1程序解析-求分段函數(shù)#include<stdio.h>intmain(void){doublex,y;printf("Enterx(x>=0):\n");/*輸入提示*/
scanf("%lf",&x);/*調(diào)用scanf函數(shù)輸入數(shù)據(jù)*/
if(x<=15) /*if–else語(yǔ)句*/
y=4*x/3;
else
y=2.5*x-10.5;printf("f(%f)=%.2f\n",x,y);
return0;}Enterx(x>=0):9.5f(9.500000)=12.67Enterx(x>=0):15f(15.000000)=20.00數(shù)據(jù)必須輸入嗎?Enterx(x>=0):21.3f(21.300000)=42.75*2.3.2關(guān)系運(yùn)算x<=15比較x和15的大小比較的結(jié)果:真假當(dāng)x取值9.5時(shí),x<=15的結(jié)果是:?當(dāng)x取值21.3時(shí),x<=15的結(jié)果是:?關(guān)系運(yùn)算—比較運(yùn)算,比較兩個(gè)操作數(shù)關(guān)系運(yùn)算符x<yx<=yx==yx>yx>=yx!=y關(guān)系表達(dá)式:用關(guān)系運(yùn)算符將2個(gè)表達(dá)式連接起來(lái)的式子。如:x<=1區(qū)分=
和==*運(yùn)算符功能
>
大于
>=
大于等于
<
小于
<=
小于等于
==
等于
!=
不等于高低優(yōu)先級(jí)關(guān)系運(yùn)算符左結(jié)合*a=b>c優(yōu)先級(jí):算術(shù)關(guān)系賦值高——————低a=(b>c)a==b<ca==(b<c)關(guān)系表達(dá)式的值是一個(gè)邏輯值,關(guān)系成立,真——1;不成立,假——0。*運(yùn)用關(guān)系表達(dá)式表示比較的數(shù)學(xué)式C關(guān)系表達(dá)式x≤10x≥10x≠10x=10x<=10x>=10x!=10x==10用關(guān)系表達(dá)式描述條件判斷x是否為負(fù)數(shù)判斷x是否不為零判斷x是否為偶數(shù)*x<0x!=0x%2==02.3.3if-else語(yǔ)句if(表達(dá)式)
語(yǔ)句1else
語(yǔ)句2if(x<=15)y=4*x/3;else
y=2.5*x-10.5;語(yǔ)句1表達(dá)式語(yǔ)句2真假*計(jì)算二分段函數(shù)if(表達(dá)式)
語(yǔ)句1else
語(yǔ)句2if(x!=0)
y=1/x;elsey=0;*源程序#include<stdio.h>intmain(void){doublex,y;printf("Enterx:\n");scanf("%lf",&x);
if(x!=0)
y=1/x;elsey=0;printf("f(%.2f)=%.1f\n",x,y);
return0;}#include<stdio.h>/*例2-4*/intmain(void){doublex,y;printf("Enterx(x>=0):\n");scanf("%lf",&x);
if(x<=15)y=4*x/3;elsey=2.5*x-10.5;printf("f(%f)=%.2f\n",x,y);
return0;}*運(yùn)行結(jié)果#include<stdio.h>intmain(void){doublex,y;printf("Enterx:\n");scanf("%lf",&x);
if(x!=0)
y=1/x;elsey=0;printf("f(%.2f)=%.1f\n",x,y);
return0;}Enterx:2.5f(2.50)=0.4Enterx:0f(0.00)=0.0*軟件測(cè)試的基本思想軟件測(cè)試精心設(shè)計(jì)一批測(cè)試用例[輸入數(shù)據(jù),預(yù)期輸出結(jié)果],然后分別用這些測(cè)試用例運(yùn)行程序,看程序的實(shí)際運(yùn)行結(jié)果與預(yù)期輸出結(jié)果是否一致。Enterx:2.5f(2.50)=0.4Enterx:0f(0.00)=0.0if(x!=0)
y=1/x;elsey=0;if(x<=15)y=4*x/3;elsey=2.5*x-10.5;Enterx(x>=0):9.5f(9.500000)=12.67Enterx(x>=0):15f(15.000000)=20.00Enterx(x>=0):21.3f(21.300000)=42.75*2.3.4格式化輸入函數(shù)scanf數(shù)據(jù)輸入:格式化輸入函數(shù)scanf
#include<stdio.h>scanf("%lf",&x);scanf(格式控制字符串,輸入?yún)?shù)1,…,輸入?yún)?shù)n);用雙引號(hào)括起來(lái),表示輸入的格式變量地址*scanf-格式控制字符串格式控制字符串:格式控制說(shuō)明:按指定的格式輸入數(shù)據(jù),%…與數(shù)據(jù)類型有關(guān)int型:%dfloat型:%fdouble型:%lf普通字符:原樣輸入例如:scanf("%lf",&x);輸入:9.5scanf("x=%lf",&x);輸入:x=9.5盡量不要出現(xiàn)普通字符*scanf-格式控制字符串注意:普通字符:原樣輸入盡量不要出現(xiàn)普通字符例如:scanf("%lf",&x);scanf(“%d,%d,%d”,&x,&y,&z);scanf(“%d;%d;%d”,&x,&y,&z);scanf(“%d-%d-%d”,&x,&y,&z);scanf(“x=%dy=%dz=%d”,&x,&y,&z);“”內(nèi)最好不要加任何符號(hào),如果要加提示,這些提示不會(huì)自動(dòng)顯示出來(lái),而必須由操作者手動(dòng)輸入,否則出現(xiàn)數(shù)據(jù)錯(cuò)誤。可以采用輸入提示的輸入方式:printf(“x=”);scanf(“%d”,&x);printf(“y=”);scanf(“%d”,&y);printf(“z=”);scanf(“%d”,&z);輸入:9.5輸入:9,5,7輸入:9;5;7輸入:9-5-7輸入:x=9y=5z=7*改進(jìn)例2-3的程序例2-3求華氏溫度100°F對(duì)應(yīng)的攝氏溫度。攝氏溫度C=5*(F-32)/9#include<stdio.h>intmain(void){intcelsius,fahr;
fahr=100;
celsius=5*(fahr-32)/9;printf("fahr=%d,celsius=%d\n",fahr,celsius);
return0;}scanf("%d",&fahr);printf(“Enterfahr:\n");Enterfahr:100fahr=100,celsius=37*2.3.5常用數(shù)學(xué)庫(kù)函數(shù)庫(kù)函數(shù)C語(yǔ)言處理系統(tǒng)提供事先編好的函數(shù),供用戶在編程時(shí)調(diào)用。scanf(),printf(),exp()在相應(yīng)的系統(tǒng)文件(頭文件)中定義一些必需的信息。#include命令用戶調(diào)用庫(kù)函數(shù)時(shí),將相應(yīng)的頭文件包含到源程序中。例如調(diào)用scanf,printf,需要#include<stdio.h>調(diào)用sqrt,需要#include<math.h>*常用數(shù)學(xué)庫(kù)函數(shù)平方根函數(shù)sqrt(x)
絕對(duì)值函數(shù)fabs(x)fabs(-3.56)的值為3.56冪函數(shù)pow(x,n):xnpow(1.1,2)的值為1.21(即1.12)指數(shù)函數(shù)exp(x):exexp(2.3)的值為e2.3以e為底的對(duì)數(shù)函數(shù)log(x):lnxlog(123.45)的值為4.815836以10為底的對(duì)數(shù)函數(shù)log10(x):log10xlog10(123.45)的值為2.091491。*例2-5計(jì)算存款的本息輸入存款金額money、存期year和年利率rate,根據(jù)公式計(jì)算存款到期時(shí)的本息合計(jì)sum(稅前),輸出時(shí)保留2位小數(shù)。sum=money(1+rate)yearsum=money*pow((1+rate),year)*例2-5程序#include<stdio.h>#include<math.h>
intmain(void){intmoney,year;doublerate,sum;
printf(“Entermoney:");
scanf("%d",&money);
printf(“Enteryear:");scanf("%d",&year);
printf(“Enterrate:");scanf("%lf",&rate);sum=money*pow((1+
rate),year);printf("sum=%.2f",sum);return0;}Entermoney:1000Enteryear:
3Enterrate:
0.025sum=1076.89scanf("%d%d%lf",&money,&year,&rate);*調(diào)用scanf函數(shù)輸入多個(gè)數(shù)據(jù)scanf("%d%d%lf",&money,&year,&rate);輸入:100030.025scanf需要多個(gè)輸入?yún)?shù)和多個(gè)格式控制說(shuō)明輸入?yún)?shù)的類型、個(gè)數(shù)和位置要與格式控制說(shuō)明一一對(duì)應(yīng)?scanf("%d%lf%d",&money,&year,&rate);程序運(yùn)行時(shí),輸入的多個(gè)數(shù)據(jù)之間必須有間隔。scanf("%d%lf%d
",&money,&rate,&year);如何輸入?輸入?yún)?shù)、格式控制說(shuō)明、輸入數(shù)據(jù)*補(bǔ)充:整型數(shù)據(jù)的輸入輸出printf(格式控制,輸出參數(shù)1,...,輸出參數(shù)n);scanf(格式控制,輸入?yún)?shù)1,...,輸入?yún)?shù)n);格式控制說(shuō)明
%…十進(jìn)制八進(jìn)制十六進(jìn)制int%d%o%xlong%ld%lo%lxunsigned%u
%o%xunsignedlong%lu%lo%lx*輸出整型數(shù)據(jù)示例(1)#include<stdio.h>intmain(void){printf("%d,%o,%x\n",10,10,10);printf("%d,%d,%d\n",10,010,0x10);printf("%d,%x\n",012,012);return0;}
0……0101010,12,a10,8,1610,a*輸入整型數(shù)據(jù)示例(2)#include<stdio.h>intmain(void){inta,b;
printf("inputa,b:");scanf("%o%d",&a,&b);printf("%d%5d\n",a,b); /*%5d指定變量b的輸出寬度為5*/printf("%x,%d\n",a,b);return0;}
inputa,b:17171517f,17"%x%d"*實(shí)型數(shù)據(jù)的輸入和輸出輸入scanf()float:%f或%e
以小數(shù)或指數(shù)形式輸入一個(gè)單精度浮點(diǎn)數(shù)double:%lf或%le以小數(shù)或指數(shù)形式輸入一個(gè)雙精度浮點(diǎn)數(shù)輸出printf()float和double使用相同的格式控制說(shuō)明%f以小數(shù)形式輸出浮點(diǎn)數(shù),保留6位小數(shù)%e以指數(shù)形式輸出*實(shí)型數(shù)據(jù)輸出格式示例#include<stdio.h>intmain(void) {doubled=3.1415926;printf("%f,%e\n",d,d);printf("%5.3f,%5.2f,%.2f\n",d,d,d);return0;}
3.141593,3.14159e+003.142,3.14,3.14一共5位,小數(shù)部分3位,小數(shù)點(diǎn)占1位*實(shí)型數(shù)據(jù)輸入輸出示例假定float的精度為7位,double的精度為16位
#include<stdio.h>intmain(void)
{floatf;doubled;printf("inputf,d:");scanf("%f%lf",&f,&d);printf("f=%f\nd=%f\n",f,d);d=1234567890123.12;printf("d=%f\n",d);return0;}inputf,d:1234567890123.1234561234567890123.123456f=1234567954432.000000d=1234567890123.123540d=1234567890123.120120*格式符中占位數(shù)的作用m或m.nm:輸出數(shù)據(jù)所占的列數(shù),又稱為場(chǎng)寬。n:表示輸出實(shí)型數(shù)值時(shí)小數(shù)點(diǎn)后的位數(shù)整型輸出格式符中加入占位數(shù)m:沒(méi)有m,按實(shí)際長(zhǎng)度輸出實(shí)際位數(shù)<︱m∣,且m是正數(shù),數(shù)字占m位,右邊對(duì)齊,左邊補(bǔ)空格;實(shí)際位數(shù)<︱m∣,且m是負(fù)數(shù),數(shù)字占m位,左邊對(duì)齊,右邊補(bǔ)空格;實(shí)際位數(shù)>︱m∣(或缺省m),按實(shí)際長(zhǎng)度輸出,m不起作用格式控制說(shuō)明符:%-0m.n
格式字符
左對(duì)齊補(bǔ)0寬度精度缺省右對(duì)齊補(bǔ)空格*實(shí)型輸出格式符中加入占位數(shù)m.n:沒(méi)有m.n,按數(shù)字的實(shí)際位數(shù)輸出實(shí)數(shù)長(zhǎng)度
≥︱m∣,不管實(shí)數(shù)是正數(shù)還是負(fù)數(shù),按實(shí)際長(zhǎng)度輸出,m.n不起作用
實(shí)數(shù)長(zhǎng)度
<︱m∣,且m是正數(shù):實(shí)數(shù)的總位數(shù)占m位,小數(shù)點(diǎn)占一位,小數(shù)部分占n位,整數(shù)部分占(m-n-1)位,右邊對(duì)齊,左邊補(bǔ)空;實(shí)際位數(shù)<︱m∣,且m是負(fù)數(shù):實(shí)數(shù)的總位數(shù)占m位,小數(shù)點(diǎn)占一位,小數(shù)部分占n位,整數(shù)部分占(m-n-1)位,左邊對(duì)齊,右邊補(bǔ)空;實(shí)數(shù)的指數(shù)形式中m.n的n是小數(shù)部分加上e(占一位),且e是優(yōu)先的。例如123.678%-15.6e%-15.4e%-15.2e%1.23678e+021.237e+02
1.2e+02
*inta=365;longb=30097;charc=’Z’;floatd=132.76;doublee=7865.298;printf(“%6d%10ld%3c%12f%12lf”,a,b,c,d,e);printf(“a=%d^b=%d\n”,a,b);輸出:a=3^b=4printf(“%4d,%4d\n”,a,b);a=123,b=12345輸出:^123,12345輸出:^^^365^^^^^30097^^Z^^132.759995^7865.298000*=======================================================a=3;b=4;=======================================================
a=123;b=12345;基本數(shù)據(jù)類型-字符型字符具有數(shù)值特征'A'6501000001整型變量和字符變量的定義和賦值可以互換【ASCII碼范圍】charc;c='A';或c=65;int
i;i=65;或i='A';*字符型常量字符常量'a'、'A'、'9'、'+'、'$'
(注意:?jiǎn)我?hào))
ASCII字符集列出所有可用的字符(256個(gè))每個(gè)字符:惟一的次序值(ASCII碼)'0'~'9'升序排列'A'~'Z''a'~'z'*字符的數(shù)值特征字符-ASCII碼對(duì)字符進(jìn)行運(yùn)算-對(duì)字符的ASCII碼進(jìn)行運(yùn)算例如:'A'的ASCII碼65則:'A'+1=66,對(duì)應(yīng)字符'B'區(qū)分?jǐn)?shù)字字符和數(shù)字
'1'1*字符型數(shù)據(jù)輸入輸出scanf()和printf()%ccharch;scanf("%c",&ch);printf("%c",ch);getchar()和putchar()charch;ch=getchar();putchar(ch);輸入輸出一個(gè)字符*輸入輸出字符示例#include<stdio.h>intmain(void){charch1,ch2;ch1=getchar();ch2=getchar();putchar(ch1);putchar('#');putchar(ch2);return0;}AbA#b輸入輸出字符示例#include<stdio.h>intmain(void){charch1,ch2,ch3;scanf("%c%c%c",&ch1,&ch2,&ch3);printf("%c%c%c%c%c",ch1,'#',ch2,'#',ch3);return0;}AbCA#b#CAbCA##b【例6-1】單詞加密解析。輸入一個(gè)英文單詞(由6個(gè)小寫(xiě)英文字母組成),按照下列過(guò)程將該單詞加密:先將英文單詞中的小寫(xiě)字母轉(zhuǎn)換為對(duì)應(yīng)的大寫(xiě)字母,再將該大寫(xiě)字母的ASCII碼對(duì)10整除后取其余數(shù),從而得到一個(gè)六位整數(shù)密碼。#include<stdio.h>intmain(void){ inti; charch_lower,ch_upper; for(i=1;i<=6;i++) { scanf("%c",&ch_lower); if(ch_lower>='a'&&ch_lower<='z') ch_upper=ch_lower-'a'+'A';/*將小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母*/ printf("%c->%c->%d\n",ch_lower,ch_upper,ch_upper%10); }return0;}fridayf->F->0r->R->2i->I->3d->D->8a->A->5y->Y->9字符運(yùn)算大小寫(xiě)英文字母轉(zhuǎn)換'b'-'a'='B'-'A'……'z'-'a'='Z'-'A''m''M''a'->'A''A'->'a''m'-'a'+'A'='M''M'-'A'+'a'='m''8'-'0'=88+'0'='8'數(shù)字字符和數(shù)字轉(zhuǎn)換9-0='9'-'0''9'=9+'0''8'8'8'->88->'8'2.4輸出華氏-攝氏溫度轉(zhuǎn)換表2.4.1程序解析2.4.2for語(yǔ)句2.4.3指定次數(shù)的循環(huán)程序設(shè)計(jì)*2.4.1程序解析例2-6輸入2個(gè)整數(shù)lower和upper,輸出一張華氏-攝氏溫度轉(zhuǎn)換表,華氏溫度的取值范圍是[lower,upper],每次增加1°F。fahrcelsius30-1.131-0.6320.0330.6341.1351.7*2.4.1程序解析-溫度轉(zhuǎn)換表#include<stdio.h>intmain(void){intfahr,lower,upper;doublecelsius;printf("Enterlower:");scanf("%d",&lower);printf("Enterupper:");scanf("%d",&upper);printf("fahrcelsius\n");//溫度重復(fù)轉(zhuǎn)換:華氏溫度從lower開(kāi)始,到upper結(jié)束,每次增加1°F
for(fahr=lower;fahr<=upper;fahr++){celsius=(5.0/9.0)*(fahr-32);printf("%d%6.1f\n",fahr,celsius);}return0;}fahr=fahr+1Enterlower:30Enterupper:
35fahrcelsius30-1.131-0.6320.0330.6341.1351.7*例2-6中for語(yǔ)句的流程for(fahr=lower;fahr<=upper;fahr++){celsius=(5.0/9.0)*(fahr-32);printf("%d%6.1f\n",fahr,celsius);}fahr=fahr+2輸出?Enterlower:30Enterupper:
35fahrcelsius30-1.131-0.6320.0330.6341.1351.7*for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
循環(huán)體語(yǔ)句實(shí)現(xiàn)C語(yǔ)句的重復(fù)執(zhí)行2.4.2for語(yǔ)句-循環(huán)語(yǔ)句3個(gè)表達(dá)式、循環(huán)體語(yǔ)句!書(shū)寫(xiě)順序和執(zhí)行順序不同!表達(dá)式1只執(zhí)行一次*for循環(huán)語(yǔ)句格式:for([初值表達(dá)式];條件表達(dá)式;[增量表達(dá)式])
循環(huán)體語(yǔ)句12345真假初值表達(dá)式:給循環(huán)變量賦初值。條件表達(dá)式:循環(huán)的條件,決定循環(huán)是否繼續(xù)。增量表達(dá)式:改變循環(huán)變量的值,給循環(huán)變量增加一個(gè)定量(步長(zhǎng))。*循環(huán)(控制)變量:for語(yǔ)句中,通過(guò)改變或判斷某個(gè)變量的值來(lái)控制循環(huán)的執(zhí)行for(fahr
=lower;
fahr
<=upper;
fahr
++){celsius=(5.0/9.0)*(fahr-32.0);printf("%d%6.1f\n",fahr,celsius);}for語(yǔ)句中的循環(huán)變量賦初值判斷其值改變其值*for(fahr
=lower;
fahr
<=upper;
fahr
++){celsius=(5.0/9.0)*(fahr-32.0);printf("%d%6.1f\n",fahr,celsius);}表達(dá)式1:給循環(huán)變量賦初值,指定循環(huán)的起點(diǎn)。fahr=lower表達(dá)式2:給出循環(huán)的條件,判斷循環(huán)是否達(dá)到終點(diǎn)?fahr<=upper表達(dá)式3:設(shè)置循環(huán)的步長(zhǎng),改變循環(huán)變量的值,從而可改變表達(dá)式2的真假性。fahr++循環(huán)體語(yǔ)句:被反復(fù)執(zhí)行的語(yǔ)句,一條語(yǔ)句。for語(yǔ)句的說(shuō)明*for(fahr=lower;fahr<=upper;fahr++)
{celsius=(5.0/9.0)*(fahr-32.0);printf("%d%6.1f\n",fahr,celsius);}for(fahr=lower;fahr<=upper;fahr=fahr+1)
celsius=(5.0/9.0)*(fahr-32.0); printf("%d%6.1f\n",fahr,celsius);復(fù)合語(yǔ)句{}和空語(yǔ)句;for(fahr=lower;fahr<=upper;fahr=fahr+1);
celsius=(5.0/9.0)*(fahr-32.0); printf("%d%6.1f\n",fahr,celsius);!不要在for語(yǔ)句中隨意加分號(hào)*說(shuō)明:1.for(;條件表達(dá)式;)
表達(dá)式1、3可省,但分號(hào)不能省2.i=1;for(;i<=n;i++)for(i=1;i<=n;i++)3.表達(dá)式1、3省略
i=1;for(;i<=n;){sum=sum+i;i++;}*求1+2+……+100抽取具有共性的算式:sum=sum+isum初值為0,該算式重復(fù)100次,i從1變到100設(shè)i為循環(huán)變量,則:指定循環(huán)起點(diǎn)的表達(dá)式1:i=1給出循環(huán)條件的表達(dá)式2:i<=100設(shè)置循環(huán)步長(zhǎng)的表達(dá)式3:i++循環(huán)體語(yǔ)句:sum=sum+i;for(i=1;i<=100;i++)sum=sum+i;2.4.3指定次數(shù)的循環(huán)程序設(shè)計(jì)*/*計(jì)算1+2+3+……+100*/#include<stdio.h>intmain(void){inti,sum;sum=0; /*置累加和sum的初值為0*/for(i=1;i<=100;i++)/*循環(huán)重復(fù)100次*/sum=sum+i; /*反復(fù)累加*/printf(“sum=%d\n”,sum); /*輸出累加和*/return0;}源程序求1+2+……+100for(i=1;i<=100;i++){sum=0;sum=sum+i;}sum=5050*#include<stdio.h>intmain(void){inti,sum;sum=0; for(i=1;i<=100;i++)sum=sum+i;printf(“sum=%d\n”,sum);return0;}求1+1/2+1/3+……+1/100for(i=1;i<=100;i++)sum=sum+1.0/i;inti;doublesum;printf(“sum=%f\n”,sum);*一般包含四個(gè)部分:初始化:指定循環(huán)起點(diǎn)給循環(huán)變量賦初值,如i=1;進(jìn)入循環(huán)之前,設(shè)置相關(guān)變量的初值,如sum=0。條件控制:只要i<=100,循環(huán)就繼續(xù)工作:指重復(fù)執(zhí)行的語(yǔ)句(循環(huán)體)。一條語(yǔ)句,可以是復(fù)合語(yǔ)句或空語(yǔ)句。如sum=sum+i。改變循環(huán)變量:在每次循環(huán)中改變循環(huán)變量的值如i++,以改變循環(huán)條件的真假。一旦i>100,循環(huán)結(jié)束。指定次數(shù)的循環(huán)程序設(shè)計(jì)*輸入一個(gè)正整數(shù)n,求前n項(xiàng)和,即循環(huán)n次#include<stdio.h>intmain(void){inti,sum;sum=0;for(i=1;i<=100;i++)sum=sum+i;printf(“sum=%d\n”,sum);return0;}例2-7求1+2+3+……+nfor(i=1;i<=n;i++)sum=sum+i;printf(“Entern:");scanf("%d",&n);Entern:100Sum=5050*#include<stdio.h>intmain(void){inti,sum;
printf(“Entern:");scanf("%d",&n);sum=0;for(i=1;i<=n;i++)sum=sum+i;printf(“sum=%d\n”,sum);return0;}求1+1/2+1/3+……+1/n#include<stdio.h>intmain(void){inti;doublesum;
printf(“Entern:");scanf("%d",&n);sum=0;for(i=1;i<=n;i++)sum=sum+1.0/i;printf(“sum=%f\n”,sum);return0;}*求前n項(xiàng)和,即循環(huán)n次,每次累加1項(xiàng)。for(i=1;i<=n;i++)sum=sum+item
(第i項(xiàng))
item=1.0/(2*i-1)求1+1/3+1/5+…的前n項(xiàng)和*#include<stdio.h>intmain(void){inti,n; doubleitem,sum;printf(“Entern:"); scanf("%d",&n); sum=0; for(i=1;i<=n;i++){ item=1.0/(2*i-1); /*計(jì)算第i項(xiàng)的值*/ sum=sum+item; /*累加第i項(xiàng)的值*/ } printf("sum=%f\n",sum);return0;}源程序求1+1/3+1/5+…*求前n項(xiàng)和,即循環(huán)n次,每次累加1項(xiàng)。for(i=1;i<=n;i++)sum=sum+item
(第i項(xiàng))item=flag*1.0/denominator
denominator=denominator+2flag=-flag例2-8求1-1/3+1/5-…的前n項(xiàng)和item=flag*1.0/(2*i-1)*#include<stdio.h>intmain(void){intdenominator,flag,i,n;doubleitem,sum;printf(“Entern:");scanf("%d",&n); flag=1;denominator=1; sum=0;for(i=1;i<=n;i++){ item=flag*1.0/denominator;/*計(jì)算第i項(xiàng)的值*/ sum=sum+item;/*累加第i項(xiàng)的值*/flag=-flag;/*準(zhǔn)備下一次循環(huán)*/denominator=denominator+2; } printf("sum=%f\n",sum);return0;}例2-8源程序*n!=1*2*…*nfor(i=1;i<=n;i++)product=product*item
(第i項(xiàng))item=i例2-9求n!product=?*#include<stdio.h>intmain(void){inti,n;doubleproduct;printf("inputn:\n");scanf("%d",&n);product=1; /*置階乘product的初值為1*/for(i=1;i<=n;i++) /*循環(huán)重復(fù)n次,計(jì)算n!*/product=product*i;printf("product=%.0f\n",product);return0;}例2-9源程序*輸入實(shí)數(shù)x和正整數(shù)n,計(jì)算xn=x*x*…*xfor(i=1;i<=n;i++)power=power*item
(第i項(xiàng))item=?求xn
*#include<stdio.h>intmain(void){inti,n;doublex,power;printf(“Enterx,n:\n");scanf("%lf%d",&x,&n);power=1; /*置power的初值為1*/for(i=1;i<=n;i++) /*循環(huán)重復(fù)n次,計(jì)算x的n次冪*/power=power*x;printf("%0.f\n",power);}源程序求xn
*2.5生成乘方表和階乘表
例2-10生成乘方表輸入一個(gè)正整數(shù)n,生成一張2的乘方表,輸出20到2n的值,可以調(diào)用冪函數(shù)計(jì)算2的乘方。for(i=0;i<=n;i++){power=pow(2,i);/*調(diào)用冪函數(shù)pow(2,i)計(jì)算2的i次方*/
輸出power的值;}*源程序:生成乘方表#include<stdio.h>#include<math.h>intmain(void){inti,n;doublepower;printf("Entern:");scanf("%d",&n);for(i=0;i<=n;i++){power=pow(2,i);/*調(diào)用冪函數(shù)pow(2,i)計(jì)算2的i次方*/printf("pow(2,%d)=%.0f\n",i,power);}return0;}Entern:4pow(2,0)=1pow(2,1)=2pow(2,2)=4pow(2,3)=8pow(2,4)=16
*例2-11生成階乘表輸入一個(gè)正整數(shù)n,生成一張階乘表,輸出0!到n!的值。要求定義和調(diào)用函數(shù)fact(n)計(jì)算n!,函數(shù)類型是double。for(i=0;i<=n;i++){power=pow(2,i);/*調(diào)用冪函數(shù)pow(2,i)計(jì)算2的i次方*/
輸出power的值;}for(i=0;i<=n;i++){product=fact(i);/*調(diào)用自定義函數(shù)fact(i)計(jì)算i!*/
輸出product的值;}*源程序:生成階乘表#include<stdio.h>doublefact(intn);/*自定義函數(shù)的聲明*/intmain(void){inti,n;doubleresult;printf("Entern:");scanf("%d",&n);for(i=0;i<=n;i++){result=fact(i);/*調(diào)用自定義函數(shù)fact(i)計(jì)算i!*/printf("%d!=%.0f\n",i,result);}return0;}Entern:30!=11!=12!=23!=6doublefact(intn)/*函數(shù)首部*/{inti;doubleproduct;product=1;for(i=1;i<=n;i++)product=product*i;
returnproduct;/*將結(jié)果回送主函數(shù)*/}*函數(shù)的概念C語(yǔ)言中有兩種類型函數(shù)標(biāo)準(zhǔn)庫(kù)函數(shù)自定義函數(shù)函數(shù)可以做到一次定義、多次調(diào)用使用自定義函數(shù)的程序框架doublefact(intn); /*聲明自定義函數(shù),以分號(hào)結(jié)束*/intmain(void){……result=fact(i);/*調(diào)用自定義函數(shù)fact(i)計(jì)算i!*/……}/*定義求n!的函數(shù)*/*補(bǔ)充:
算術(shù)表達(dá)式-算術(shù)運(yùn)算符單目+-++--雙目+-*/%注意/整數(shù)除整數(shù),得整數(shù)1/4=0,10/3=3%模(求余):
針對(duì)整型數(shù)據(jù)5%6=5,9%4=1,100%4=0+
和
–
單目運(yùn)算符,+10和–10雙目運(yùn)算符,
x+10和y–10
雙目運(yùn)算符兩側(cè)操作數(shù)的類型要相同,否則,自動(dòng)類型轉(zhuǎn)換后,再運(yùn)算。*自增運(yùn)算符++和自減運(yùn)算符--intn;n++++nn----n
(只適合變量運(yùn)算)使變量的值增1或減1++n
n++
n=n+1--n
n--
n=n-1取變量的值作為表達(dá)式的值++n:n=n+1;取n值作為表達(dá)式++n的值n++:取n值作為表達(dá)式n++的值;n=n+1*自增運(yùn)算和自減運(yùn)算intn,m;n=2;m=++n;n=2;m=n++;n=3n=3m=3m=2m=nm=n+1n=n+1m=n*++n:n=n+1;取n值作為表達(dá)式++n的值n++:取n值作為表達(dá)式n++的值;n=n+1算術(shù)運(yùn)算符的優(yōu)先級(jí)和結(jié)合性單目+-++--雙目*/%雙目+-高低-5+3%2=(-5)+(3%2)=-43*5%3=(3*5)%3=0-i++-(i++)*寫(xiě)出C表達(dá)式數(shù)學(xué)式C算術(shù)表達(dá)式s(s-a)(s-b)(s-c)(x+2)e2x*6.4.2賦值表達(dá)式賦值運(yùn)算符=x=3*4優(yōu)先級(jí)較低,結(jié)合性從右向左x=y=3
x=(y=3)*賦值表達(dá)式變量
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB 1886.384-2025食品安全國(guó)家標(biāo)準(zhǔn)食品添加劑植物炭黑
- 西安外國(guó)語(yǔ)大學(xué)《景觀設(shè)計(jì)基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 江蘇省南京玄武區(qū)2025屆初三3月聯(lián)合檢測(cè)試題(生物試題理)試題含解析
- 山西省晉中學(xué)市榆社縣2024-2025學(xué)年初三下學(xué)期期初自測(cè)化學(xué)試題含解析
- 重慶航天職業(yè)技術(shù)學(xué)院《能源動(dòng)力測(cè)試技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇省鹽城市東臺(tái)市2025年學(xué)生學(xué)業(yè)調(diào)研抽測(cè)試卷(第二次)化學(xué)試題含解析
- 吉林省梅河口五中2025年高中畢業(yè)班質(zhì)量檢查(II)生物試題含解析
- 山西醫(yī)科大學(xué)《通風(fēng)與空調(diào)工程課程設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 西安美術(shù)學(xué)院《基礎(chǔ)藥理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西工程學(xué)院《機(jī)械與電氣安全》2023-2024學(xué)年第二學(xué)期期末試卷
- 一年級(jí)信息技術(shù)下冊(cè) 在網(wǎng)上交流信息教學(xué)設(shè)計(jì) 清華版
- 專題五 戰(zhàn)爭(zhēng)與文化交鋒 高考?xì)v史二輪復(fù)習(xí)專項(xiàng)提分訓(xùn)練(含答案)
- 人教版二年級(jí)數(shù)學(xué)下冊(cè)第三單元 圖形的運(yùn)動(dòng)(一)標(biāo)準(zhǔn)檢測(cè)卷(含答案)
- 2025年山東省淄博市張店區(qū)中考一模歷史試題(含答案)
- 【湛江】2025年中國(guó)熱帶農(nóng)業(yè)科學(xué)院農(nóng)產(chǎn)品加工研究所第一批招聘工作人員30人(第1號(hào))筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 與食品安全相關(guān)的組織機(jī)構(gòu)設(shè)置,部門及崗位職責(zé)
- 婦產(chǎn)科課件-早產(chǎn)臨床防治指南(2024)解讀
- 成人重癥患者人工氣道濕化護(hù)理專家共識(shí) 解讀
- 2024年湖北省中考地理生物試卷(含答案)
- 2024國(guó)家糧食和物資儲(chǔ)備局垂直管理系事業(yè)單位招聘筆試參考題庫(kù)含答案解析
- 2024年無(wú)錫市錫山環(huán)保能源集團(tuán)招聘筆試參考題庫(kù)附帶答案詳解
評(píng)論
0/150
提交評(píng)論