chap02-用C語言編寫程序_第1頁
chap02-用C語言編寫程序_第2頁
chap02-用C語言編寫程序_第3頁
chap02-用C語言編寫程序_第4頁
chap02-用C語言編寫程序_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

Chap2用C語言編寫程序簡單程序的一般形式

指令

intmain(void)//函數(shù)

{

語句

}2指令在編譯C程序之前,預處理器先行對其編輯預處理器執(zhí)行的命令稱為指令Example: #include<stdio.h><stdio.h>//C’sstandardI/Olibrary.指令以#為開頭,默認只有一行,結(jié)尾無;3函數(shù)數(shù)學:函數(shù)是根據(jù)一個或多個給定參數(shù)進行數(shù)值計算的規(guī)則C:函數(shù)是一系列組合在一起并且整體命名的語句集合程序員自行編寫的函數(shù)編譯器提供的庫函數(shù)通常需要返回值 returnx+1;4main

函數(shù)main

函數(shù)是必須的.main函數(shù)是特別的,在程序執(zhí)行時自動被調(diào)用main函數(shù)要求返回一個狀態(tài)碼,用0表示正常退出5語句語句是程序運行時執(zhí)行的命令.C語言規(guī)定每條語句都要以分號結(jié)尾,復合語句除外6注釋單行用//C99//Thisisacomment多行用/*

*/

/*Thisisacomment*/ /*Name:pun.c Purpose:Printsabadpun. Author:K.N.King*/ 7變量與賦值變量:在程序執(zhí)行過程中臨時存儲數(shù)據(jù)的單元類型:用來說明變量存儲的數(shù)據(jù)種類聲明:變量使用之前為編譯器所做的描述

intheight;intheight,length,width,volume;賦值:變量通過賦值方式獲得值初始化:在聲明時賦值,未初始化的變量不可控8變量的聲明與使用變量必須先聲明,后使用。#include<stdio.h>intmain(void){intcelsius,fahr;

fahr=100;

celsius=5*(fahr-32)/9;printf("fahr=%d,celsius=%d\n",fahr,celsius);

return0;}一個變量名只能聲明一次變量一般都定義在程序的頭上不能定義在程序的中間或后面應該先賦值,后引用常量常量:在程序運行過程中,其值不能被改變

字面值:89‘A’const類型常量名=值;

宏定義:#defineINCHES_PER_POUND166//名稱默認全大寫(規(guī)范不強制)10標識符標識符:變量、常量、函數(shù)、宏定義、結(jié)構(gòu)名等實體的命名.標識符可以含有字母、數(shù)字、下劃線,但必須以字母或下劃線開頭C語言區(qū)分大小寫一般要求變量用小寫,多個單詞時:current_pagecurrentPage理論上標識符長度沒有限制

11關(guān)鍵字如下不能用于標識符: autoenumrestrict*unsigned breakexternreturnvoid casefloatshortvolatile charforsignedwhile constgotosizeof_Bool* continueifstatic_Complex* defaultinline*struct_Imaginary* dointswitch doublelongtypedef elseregisterunion

*C99only標準庫函數(shù)名稱也要回避12代碼書寫規(guī)范單個語句可以分開放在多行里.關(guān)鍵字、標識符、運算符、逗號等后面最好加一下空格通過縮進來幫助識別程序嵌套結(jié)構(gòu)通過空行來劃分程序邏輯單元亂加空格和分行會導致錯誤字符串太長怎么辦?printf(“ToC,ornottoC: thatisthequestion.\n");13\printf

函數(shù)printf

函數(shù)用來顯示格式串 printf(格式串,表達式1,表達式2,…);格式串包含普通字符和轉(zhuǎn)換說明(以

%

字符開頭).普通字符直接顯示,轉(zhuǎn)換說明被變量替代14Example:

inti,j; floatx,y;

i=10; j=20; x=43.2892f; y=5527.0f;

printf("i=%d,j=%d,x=%f,y=%f\n",i,j,x,y);Output: i=10,j=20,x=43.289200,y=5527.000000printf

函數(shù)編譯器不檢查轉(zhuǎn)換說明和字符串是否匹配.太多轉(zhuǎn)換說明: printf("%d%d\n",i);/***WRONG***/太少轉(zhuǎn)換說明: printf("%d\n",i,j);/***WRONG***/順序不一致:printf("%f%d\n",i,x);/***WRONG***/15轉(zhuǎn)換說明格式轉(zhuǎn)換說明標準格式 %m.pX

m(數(shù)字,可選,最小字段寬度,當數(shù)值所需字符少于m時,m為正右對齊,m為負左對齊)

p

(數(shù)字,可選,精度,取決于具體說明符)

X

(說明符,必須).%10.2f,mis10,pis2,andXisf.數(shù)值常用說明符d十進制e科學計數(shù)法,p指明小數(shù)點后的數(shù)字個數(shù)f浮點數(shù),p指明小數(shù)點后的數(shù)字個數(shù)g可以自動轉(zhuǎn)換,可以顯示為十進制、浮點數(shù)或科學計數(shù)法,不能用于整數(shù)

tprintf.c

/*Printsintandfloatvaluesinvariousformats*/

#include<stdio.h>

intmain(void) { inti; floatx;

i=40; x=839.21f;

printf("|%d|%5d|%-5d|%5.3d|\n",i,i,i,i); printf("|%10.3f|%10.3e|%-10g|\n",x,x,x);

return0; }Output:

|40|40|40|040| |839.210|8.392e+02|839.21|17轉(zhuǎn)義序列非打印的(控制)字符響鈴符

\a回退符

\b換行符

\n水平制表符

\t顯示\ \\Exampleprintf("Item\tUnit\tPurchase\n\tPrice\tDate\n"); ItemUnitPurchase PriceDate18scanf

函數(shù)scanf

根據(jù)特定格式讀取輸入.scanf(格式串,&變量名1,&變量名2,…);格式串包含普通字符(通常沒有)和轉(zhuǎn)換說明(以

%

字符開頭).轉(zhuǎn)換說明被變量替代轉(zhuǎn)換說明、轉(zhuǎn)義序列與printf用法相同編譯器不檢查轉(zhuǎn)換說明和字符串是否匹配19scanf

的匹配過程scanf

函數(shù)調(diào)用:

scanf("%d%d%f%f",&i,&j,&x,&y);用戶錄入:

1 -20.3 -4.0e3scanf

把用戶輸入當作一個連續(xù)字符流(¤

表示換行符?表示空格): ??1¤-20???.3¤???-4.0e3¤ ssrsrrrsssrrssssrrrrrr(s=skipped;r=read)最后一個換行符被忽略.20格式串中的普通字符空白字符(空格、制表符、換行符等)可以與輸入中任意數(shù)量的空白字符匹配,包括0個其他字符匹配時,scanf

放棄輸入字符繼續(xù)處理不匹配時,異常退出21addfrac.c/*Addstwofractions*/

#include<stdio.h>

intmain(void){intnum1,denom1,num2,denom2,result_num,result_denom;printf("Enterfirstfraction:");scanf("%d/%d",&num1,&denom1);

printf("Entersecondfraction:");scanf("%d/%d",&num2,&denom2);

result_num=num1*denom2+num2*denom1;result_denom=denom1*denom2;printf("Thesumis%d/%d\n",result_num,result_denom)return0;}22程序解析分段計算水費要解決的問題:輸入計算分段函數(shù)輸出,并保留2位小數(shù)

求ex程序解析-求分段函數(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=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.00Enterx(x>=0):21.3f(21.300000)=42.75軟件測試的基本思想軟件測試精心設計一批測試用例[輸入數(shù)據(jù),預期輸出結(jié)果],然后分別用這些測試用例運行程序,看程序的實際運行結(jié)果與預期輸出結(jié)果是否一致。inputx:2.5f(2.50)=0.4inputx: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常用數(shù)學庫函數(shù)庫函數(shù)C語言處理系統(tǒng)提供事先編好的函數(shù),供用戶在編程時調(diào)用。scanf(),printf(),exp()在相應的系統(tǒng)文件(頭文件)中定義一些必需的信息。#include命令用戶調(diào)用庫函數(shù)時,將相應的頭文件包含到源程序中。例如調(diào)用scanf,printf,需要#include<stdio.h>調(diào)用sqrt,需要#include<math.h>常用數(shù)學庫函數(shù)平方根函數(shù)sqrt(x)

絕對值函數(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為底的對數(shù)函數(shù)log(x):lnxlog(123.45)的值為4.815836以10為底的對數(shù)函數(shù)log10(x):log10xlog10(123.45)的值為2.091491。計算存款的本息輸入存款金額money、存期year和年利率rate,根據(jù)公式計算存款到期時的本息合計sum(稅前),輸出時保留2位小數(shù)。sum=money(1+rate)yearsum=money*pow((1+rate),year)#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);結(jié)構(gòu)化程序設計思想結(jié)構(gòu)化程序設計(StructuredProgramming)程序設計技術(shù)C語言是結(jié)構(gòu)化程序設計語言強調(diào)程序

溫馨提示

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

評論

0/150

提交評論