第3章順序結(jié)構(gòu)程序新_第1頁
第3章順序結(jié)構(gòu)程序新_第2頁
第3章順序結(jié)構(gòu)程序新_第3頁
第3章順序結(jié)構(gòu)程序新_第4頁
第3章順序結(jié)構(gòu)程序新_第5頁
已閱讀5頁,還剩69頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第3章順序結(jié)構(gòu)程序設(shè)計(jì)第3章順序結(jié)構(gòu)程序設(shè)計(jì)本章主要內(nèi)容:

3.1c語句概述3.2數(shù)據(jù)輸入輸出的概念在c語言中的實(shí)現(xiàn)3.3字符數(shù)據(jù)的輸入輸出3.4格式輸入輸出3.5順序結(jié)構(gòu)程序設(shè)計(jì)舉例重點(diǎn):掌握數(shù)據(jù)輸入輸出語句的使用方法掌握順序結(jié)構(gòu)程序設(shè)計(jì)的方法順序結(jié)構(gòu)是三種基本結(jié)構(gòu)中最簡單的一種結(jié)構(gòu)。執(zhí)行的順序:按自上向下的順序依次執(zhí)行ABABN-S圖流程圖3.1順序結(jié)構(gòu)程序的組成順序結(jié)構(gòu)程序組成:數(shù)據(jù)描述部分(變量說明部分)輸入語句(已知)賦值語句(已知,計(jì)算)輸出語句(顯示結(jié)果)例1求半徑為r的圓的面積。/*calculatingtheareaofacircle*/#definePI3.14intmain(){floatr,area;scanf(“%f″,&r);或r=3;area=PI*r*r;printf(″Thearea=%f\n″,area);return0;}3.1順序結(jié)構(gòu)程序的組成3.2賦值語句賦值語句是由賦值表達(dá)式加上一個(gè)分號(hào)構(gòu)成。如x=a+b;賦值語句的使用:①給變量一個(gè)初始值時(shí)使用賦值語句;②改變變量的值時(shí)使用賦值語句;③保存計(jì)算的中間結(jié)果和最終結(jié)果時(shí)使用賦值語句。例2關(guān)于賦值語句的使用#definePI3.14intmain(){floatr1,r2=1,r,a1,a2;r1=3;r2=r1+5;r=r2*r2;a1=PI*r1*r1;a2=PI*r;printf(″%f,%f\n″,a1,a2);return0;}語句分類簡單語句空語句復(fù)合語句流程控制語句表達(dá)式語句(表達(dá)式;)函數(shù)調(diào)用語句(函數(shù)名(參數(shù)表);)(;)({一條或多條語句})條件語句循環(huán)語句break;continue;return;轉(zhuǎn)向語句①表達(dá)式語句例如:i++;--j;i=i+1;i=i+1×②賦值語句例如:a=1;a=a*3*cos(a);a=3×

區(qū)分:賦值表達(dá)式和賦值語句?1.表達(dá)式語句形式:表達(dá)式;簡單語句2.函數(shù)調(diào)用語句形式:函數(shù)調(diào)用;作用:完成特定的任務(wù)。例如:scanf(“%f”,&x);

printf(“%f”,x);y1=sin(1.7);y2=3*sin(3.14*x/180);簡單語句3.空語句空語句只用一個(gè)分號(hào)表示。形式:;注意:執(zhí)行該語句不做任何操作。常用在循環(huán)語句中,構(gòu)成空循環(huán)。4.復(fù)合語句用{}將一些簡單語句括起來,構(gòu)成復(fù)合語句。注意:1.在語法上相當(dāng)于一條語句。

2.{}外無分號(hào)。例如:{z=x+y;t=z/100;printf(“%f”,t);}例如:醋和醬油互換問題{t=a;a=b;b=t;}3.3數(shù)據(jù)輸入/輸出的概念在C語言中的實(shí)現(xiàn)在調(diào)用標(biāo)準(zhǔn)輸入/輸出庫函數(shù)時(shí),是以計(jì)算機(jī)主機(jī)為主體而言的。C語言本身不提供輸入/輸出語句,輸入/輸出操作是由C函數(shù)庫中函數(shù)來實(shí)現(xiàn)的。所以printf和scanf不是C語言的關(guān)鍵字,而只是函數(shù)名。在調(diào)用系統(tǒng)庫函數(shù)時(shí),要用預(yù)編譯命令”#include”將”頭文件”包括到用戶源文件中。在調(diào)用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時(shí),文件開頭應(yīng)該有以下預(yù)編譯命令:#include<stdio.h>或#include“stdio.h”。在調(diào)用數(shù)學(xué)函數(shù)時(shí),應(yīng)包含頭文件#include<math.h>。C語言提供給用戶有豐富的標(biāo)準(zhǔn)庫函數(shù)(參考附錄F),標(biāo)準(zhǔn)庫函數(shù)完成預(yù)先設(shè)定好的任務(wù),可直接調(diào)用。標(biāo)準(zhǔn)庫函數(shù)調(diào)用的規(guī)則:1、庫函數(shù)調(diào)用的形式函數(shù)名(參數(shù)表);2、調(diào)用目的一類調(diào)用是為了得到函數(shù)的返回值,另一類只是為了完成某項(xiàng)任務(wù)。數(shù)據(jù)的輸入與輸出C語言的標(biāo)準(zhǔn)函數(shù)庫提供有常用的輸入和輸出函數(shù),其中putchar()函數(shù)可用來輸出一個(gè)字符,getchar()函數(shù)可用來輸入一個(gè)字符,printf()函數(shù)用來輸出任意格式的數(shù)據(jù),scanf()函數(shù)用來輸入任意格式的數(shù)據(jù)。這四個(gè)函數(shù)都以終端(系統(tǒng)隱含指定的輸出設(shè)備,一般為鍵盤和屏幕)為輸入/出對(duì)象。單個(gè)字符的輸入/輸出在程序設(shè)計(jì)中,除了需要使用整型和實(shí)型數(shù)據(jù)之外,還需要另外一種很重要的數(shù)據(jù)類型,即字符型數(shù)據(jù),如姓名,文字信息等,都是字符型數(shù)據(jù),也叫文字型數(shù)據(jù)。文字型數(shù)據(jù)有兩種類型:單個(gè)字符和字符串大多數(shù)系統(tǒng)采用ASCII字符集字母:A~Z,a~z數(shù)字:0~9不能顯示的字符:空(null)字符(以‘\0’表示)、警告(以‘\a’表示)、退格(以‘\b’表示)、回車(以‘\r’表示)等基本ASCII碼表的前32個(gè)字符為控制字符(ASCII碼值為0~31)。接著為標(biāo)準(zhǔn)英文鍵盤上的每一個(gè)字符都規(guī)定了一個(gè)ASCII碼值,字符在內(nèi)存中的存儲(chǔ)格式按照ASCII碼值所對(duì)應(yīng)的二進(jìn)制數(shù)確定??崭瘛?200100000A——6501000001a——9701100001b——9801100010一、字符常量字符常量:用單引號(hào)括起來的一個(gè)字符。如:‘A’、‘e’、‘?’等。由反斜杠(\)引導(dǎo)的轉(zhuǎn)義字符。如:“\n”表換行符。注意:a與'a'不同,前者為變量,后者為字符常量。9與‘9’也不同,前者為整型常量,后者是字符常量?!產(chǎn)’與‘A’是不同的字符常量。

以“\”開頭的字符序列稱為轉(zhuǎn)義字符,這些字符的含義不是其本身,而是轉(zhuǎn)成了新的意義。

\n 換行,將當(dāng)前位置移到下一行開頭\t換區(qū)(橫向跳格,跳到下一個(gè)輸出區(qū),一區(qū)占8列)\b 退格(刪除前面的一個(gè)字符)\r回車,將當(dāng)前位置移到本行開頭\\代表一個(gè)反斜杠字符(\)

\’ 代表一個(gè)單引號(hào)字符(')

\”代表一個(gè)雙引號(hào)字符(")

\ddd 1~3位8進(jìn)制數(shù)所表示的字符

\xhh 1~2位16進(jìn)制數(shù)所表示的字符字符形式 功能二、字符變量字符變量:只能存放一個(gè)字符并能改變其值的變量。字符型變量在內(nèi)存中占1個(gè)字節(jié)。字符變量的定義:char

變量名;

例如:charc1,c2,c3,c4;變量c1,c2,c3,c4中可存儲(chǔ)字符數(shù)據(jù)、介于-128~127的整數(shù)或者轉(zhuǎn)義字符。例如:字符A的ASCII碼為:65D(十進(jìn)制)=41H(十六進(jìn)制)=101Q(八進(jìn)制)∴字符A可以表示為‘A’、’\x41’、’\101’。字符變量分類:char和unsignedchar;三、字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及使用方法存儲(chǔ)形式:按ASCII碼存儲(chǔ)。使用方法:

按字符使用(%c):則使用字符本身。

按數(shù)值使用(%d):則使用該字符的ASCII碼值。例如:chara;a=‘a(chǎn)’,并不是把字符‘a(chǎn)’本身放到內(nèi)存單元中,而是將該字符的相應(yīng)的ASCII碼97放到內(nèi)存單元中。四、字符型數(shù)據(jù)使用方法舉例例3.6main(){charc1,c2,c3='\007'

;c1='A';c2='B';printf("c1=%c,c2=%c\n",c1,c2);printf("c1=%d,c2=%d\n",c1,c2);printf(“c3=%c,c3=%d\n”,c3,c3

);}

運(yùn)行結(jié)果如下:c1=A,c2=Bc1=65,c2=66一聲響,c3=7但注意:一個(gè)字符變量不可以存放一個(gè)字符串,所以字符不能用雙引號(hào)括起來。例3.7小寫字母轉(zhuǎn)換為大寫字母#include<stdio.h>main(){charc1,c2;c1=‘a(chǎn)’;c2=‘b’;c1=c1-32;c2=c2-32;printf(“%c%c”,c1,c2);}運(yùn)行結(jié)果:A

B注意字符的相加、字符的運(yùn)算問題:1.字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用,可直接進(jìn)行算術(shù)運(yùn)算.2.對(duì)字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,相當(dāng)于對(duì)它們的ASCII進(jìn)行算術(shù)運(yùn)算.3.字符型與數(shù)值型可以互相賦值。4.一個(gè)字符數(shù)據(jù)既可以字符形式輸出,也可以整數(shù)形式輸出.1、VC++將字符變量默認(rèn)定義為signedchar型。其存儲(chǔ)單元的最高位為符號(hào)位,取值范圍是-128~127。2、如果在字符變量中存放一個(gè)ASCII碼為0~127間的字符,由于字節(jié)中最高位為0,因此用%d格式輸出字符變量時(shí),是一個(gè)正整數(shù)。3、如果在字符變量中存放一個(gè)ASCII碼為128~255間的字符,由于字節(jié)中最高位為1,因此用%d格式輸出字符變量時(shí),是一個(gè)負(fù)整數(shù)。例如:charc=130;printf(“%d”,c);結(jié)果:-126字符按有符號(hào)處理例如:unsignedcharc=130;printf(“%d”,c);結(jié)果:130字符按無符號(hào)處理需要說明:簡單的屏幕輸出如何輸出a、b、c三個(gè)變量的值。#include<stdio.h>main(){inta=1;floatb=2.5;charc=‘A’;printf(“a=%d\n”,a);printf(“a=%f\n”,b);printf(“a=%c\n”,c);printf(“endofprogram\n”);}養(yǎng)成對(duì)變量初始化的習(xí)慣,有助于因忘記對(duì)變量賦初值導(dǎo)致的計(jì)算錯(cuò)誤。#include<stdio.h>main(){inta=1;floatb=2.5;charc=‘A’;

}3.4字符的輸入/輸出1、字符輸出函數(shù)格式:putchar(ch)功能:將字符變量ch的值輸出到屏幕的當(dāng)前位置上。即向終端(顯示器)輸出一個(gè)字符。注意事項(xiàng):ch可以是字符常量、字符變量、整型變量、轉(zhuǎn)義字符。如:①putchar('A');/*在屏幕上輸出大寫字母A*/②c=putchar(‘A’);/*在屏幕上輸出大寫字母A,并將大寫字母A賦給變量c*/③c=‘*’;putchar(c);/*在屏幕上輸出c的值,即輸出一個(gè)*號(hào)*/④inti=97;putchar(i);/*輸出字符‘a(chǎn)’*/輸出轉(zhuǎn)義字符:putchar(’\101’)/*輸出字符‘A’*/putchar(’\’’)/*輸出單引號(hào)字符‘’’*/putchar(’\015’)/*輸出回車,不換行,使輸出的當(dāng)前位置移到本行開頭*/例:#include<stdio.h>/*必須加*/main(){inti=97;charch=‘a(chǎn)’;/*變量初始化*/putchar(i);putchar(‘\n’);putchar(ch);}運(yùn)行結(jié)果:aa例4.1輸出單個(gè)字符#include<stdio.h>main(){chara,b,c;a=‘B’;b=‘O’;c=‘Y’;putchar(a);putchar(b);putchar(c);putchar(‘\n’);}運(yùn)行結(jié)果:BOY若運(yùn)行結(jié)果為:BOY程序應(yīng)怎樣改?

putchar(‘\n’);/*輸出換行符*/2、字符輸入函數(shù)格式:getchar()功能:從鍵盤上讀入一個(gè)字符,按回車鍵輸入結(jié)束,讀入的字符會(huì)自動(dòng)被回顯到屏幕上。返回值:該字符的ASCII碼值3.4字符數(shù)據(jù)的輸入/輸出注意:1、程序運(yùn)行后,在調(diào)用getchar()函數(shù)時(shí),將返回用戶屏幕,等待用戶輸入一個(gè)字符后,才能繼續(xù)向下運(yùn)行。2、getchar()函數(shù)只能接受一個(gè)字符。鍵入字符后需要敲回車鍵,回車后,程序才會(huì)響應(yīng)輸入,繼續(xù)執(zhí)行后續(xù)語句。3、getchar()函數(shù)得到的字符可以賦給字符變量或整型變量,也可以不賦給任何變量,作為表達(dá)式的一部分。例如:輸入單個(gè)字符#include"stdio.h"

main(){charc;c=getchar();putchar(c);putchar(‘\n’);}putchar(getchar());printf(“%c”,getchar());輸入:aa若要調(diào)用putchar(),getchar()函數(shù),應(yīng)在程序的前面使用文件包含命令:#include"stdio.h"例題:從鍵盤輸入一個(gè)大寫英文字母,要求改用小寫字母輸出#include<stdio.h>main(){charc1,c2;c1=getchar();c2=c1+32;putchar(c2);putchar(‘\n’);}/*getchar()沒有參數(shù),getchar(c1)是錯(cuò)誤的;*//*可寫為c2=c1+(‘a(chǎn)’-’A’)*/分析:觀察附錄A常用的ASCII字符表,可以發(fā)現(xiàn)一個(gè)規(guī)律,即小寫英文字母的ASCII碼值比相應(yīng)的大寫英文字母的ASCII碼值大32,根據(jù)這個(gè)規(guī)律,即可實(shí)現(xiàn)他們的轉(zhuǎn)換/*putchar(c2)必須有參數(shù)*/此程序還能改為:#include<stdio.h>main(){charc2;c2=getchar()+32;putchar(c2);putchar(‘\n’);}3.4數(shù)據(jù)的格式化輸入/輸出一、格式輸出函數(shù)的一般格式printf(“格式控制字符串”);printf(“格式控制字符串”,輸出值參數(shù)表);格式控制字符串:必須用雙引號(hào)括起來,其作用是控制輸出項(xiàng)的格式和輸出一些提示信息。輸出值參數(shù)表:可有多個(gè)輸出值也可沒有。輸出值可以是常量、變量、運(yùn)算符表達(dá)式、函數(shù)返回值等。若多個(gè)輸出,每個(gè)輸出項(xiàng)之間用逗號(hào)分隔。輸出的數(shù)據(jù)可以是整數(shù)、實(shí)數(shù)、字符、字符串。例如:inti=97;printf(“i=%d,%c”,i,i);輸出結(jié)果:i=97,a例如:printf(“%d”,100);輸出結(jié)果:100例如:intn=8;printf(“n=%d\n%d”,n,n*10);輸出結(jié)果:n=880例inta=3,b=4;printf(“%d%d%d”,a,b,a+b);輸出結(jié)果:347例inta=3,b=4;printf(“a=%3d,b=%5d\n”,a,b);輸出結(jié)果:a=3,b=43.5格式輸入/輸出一、格式輸出函數(shù)形式:printf(“格式控制字符串”,輸出值參數(shù)表);格式控制字符串:由3部分組成:普通字符、轉(zhuǎn)義字符、輸出項(xiàng)格式說明輸出值參數(shù)表:需要輸出的一些數(shù)據(jù);必須與格式控制符一一對(duì)應(yīng)格式說明普通字符由%+格式字符組成普通字符即需要原樣輸出的字符作用:將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出可以使用字母、數(shù)字、標(biāo)點(diǎn)符號(hào)、空格、數(shù)學(xué)符號(hào)等例如:printf(“%d%d”,a,b);printf(“a=%d,b=%d\n”,a,b);格式字符格式符功能%d以帶符號(hào)的十進(jìn)制形式輸出整數(shù)(整數(shù)不輸出正號(hào))%o以不帶符號(hào)的八進(jìn)制形式輸出整數(shù)%x以不帶符號(hào)的十六進(jìn)制形式輸出整數(shù)%u以不帶符號(hào)的十進(jìn)制形式輸出整數(shù)%c以字符形式輸出一個(gè)字符%s輸出一個(gè)或多個(gè)字符%f以小數(shù)形式輸出單、雙精度數(shù),默認(rèn)輸出6位小數(shù)%e以標(biāo)準(zhǔn)指數(shù)形式輸出單、雙精度數(shù),數(shù)字部分小數(shù)位數(shù)為6位例題:從鍵盤輸入一個(gè)大寫英文字母,將其轉(zhuǎn)換為小寫字母后,將轉(zhuǎn)換后的小寫字母及其十進(jìn)制的ASCII碼值顯示到屏幕上#include<stdio.h>main(){charch;ch=getchar();ch=ch+32;printf(“%c,%d\n”,ch,ch);}運(yùn)行結(jié)果:Bb,98printf(“%c”,ch);與putchar(c2);等價(jià)printf()函數(shù)中整數(shù)的輸出格式%d格式:按十進(jìn)制輸出有符號(hào)整數(shù)(-231~231-1)

。%ld格式:按十進(jìn)制輸出有符號(hào)整數(shù)(-231~231-1)。%5d格式:按十進(jìn)制輸出有符號(hào)整數(shù)至少占5位,右對(duì)齊,超過5位時(shí)按實(shí)際位數(shù)輸出。 %-5d格式:按十進(jìn)制輸出有符號(hào)整數(shù)至少占5位,左對(duì)齊。%8ld格式:按十進(jìn)制輸出長整型整數(shù),至少占8位,右對(duì)齊,超過8位時(shí)按實(shí)際位數(shù)輸出。%u格式:按十進(jìn)制輸出無符號(hào)整數(shù)(0~65535)。%o格式:按八進(jìn)制輸出無符號(hào)整數(shù)。%x格式:按十六進(jìn)制輸出無符號(hào)整數(shù)。注意:以u(píng)、八、十六進(jìn)制格式輸出,不會(huì)輸出負(fù)數(shù)例如:inta=-1;b=123;printf(“%u,%d,%o,%x\n”,a,a,a,a);printf(“%d,%2d,%-5d,%5d\n”,b,b,b,b);再如:main(){unsignedinta=65535;intb=-2;printf(“a=%d,%o,%x,%u\n”,a,a,a,a);printf(“b=%d,%o,%x,%u\n”,b,b,b,b);}%f格式:按十進(jìn)制輸出實(shí)數(shù),不指定寬度,系統(tǒng)自定,整數(shù)部分全部輸出,保留6位小數(shù)。單精度實(shí)數(shù)有效位數(shù)為7位。雙精度為16位。%e格式:按指數(shù)形式輸出實(shí)數(shù),按規(guī)范化形式輸出(13位),尾數(shù)部分的小數(shù)位數(shù)為6位,指數(shù)部分占5位(包括1位指數(shù)的符號(hào)位和占1位的e),%.3f格式:按十進(jìn)制輸出實(shí)數(shù),保留3位小數(shù)。%8.3f格式:按十進(jìn)制輸出實(shí)數(shù),列寬占8位,保留3位小數(shù),右對(duì)齊,超過8位時(shí)按實(shí)際位數(shù)。%8.3e格式:按指數(shù)形式輸出實(shí)數(shù),尾數(shù)部分保留3位有效數(shù)字,占8位,右對(duì)齊,超過8位時(shí)按實(shí)際位數(shù)。%g格式:按%e和%f中較短的一種格式輸出實(shí)數(shù)。printf()函數(shù)中實(shí)數(shù)的輸出格式例如:main(){floatf=123.456;printf(“%f%10f%10.2f%.2f%-10.2f\n”,f,f,f,f,f);printf(“%e”,f);printf(“%8e”,f);printf(“%10.9e”,1000.7654321);}結(jié)果:123.456001123.456001123.46123.46123.461.234560e+0021.234560e+0021.000765432e+003f格式符的說明:保留6位小數(shù),單精度有效位數(shù)為7位;雙精度有效位數(shù)為16位。e格式符的說明:尾數(shù)部分保留6位小數(shù)。o、e、u格式符的說明:按不同進(jìn)制輸出無符號(hào)整數(shù)。例如:格式符的用法main(){inta=1234;floatf=123.456;printf(“%d%2d\n”,a,a);printf(“%f%8f%8.1f%.2f%.2e\n”,f,f,f,f,f);}運(yùn)行結(jié)果:12341234123.456001123.456001123.5123.461.23e+02注意:實(shí)數(shù)型的運(yùn)算常常會(huì)出現(xiàn)誤差P79例如4.6小于數(shù)字的位數(shù),照原樣輸出只管小數(shù)位數(shù),其他照原樣輸出有3個(gè)空格%c格式:按字符輸出一個(gè)字符,但不輸出單引號(hào)。%d格式:按數(shù)值輸出,輸出該字符相應(yīng)的ASCII碼值%3c格式:按字符輸出一個(gè)字符,占3位,右對(duì)齊。%-8c格式:按字符輸出一個(gè)字符,占8位,左對(duì)齊。%s格式:輸出一個(gè)字符串,但不輸出雙引號(hào)。%6s格式:輸出一個(gè)字符串,至少占6位,右對(duì)齊,超過6位,按實(shí)際位數(shù)。%-6s格式:輸出一個(gè)字符串,至少占6位,左對(duì)齊,超過6位,按實(shí)際位數(shù)。%6.3s格式:輸出一個(gè)字符串,占6列,取字符串左端3個(gè)字符,右對(duì)齊。%-6.3s格式:輸出一個(gè)字符串,占6列,取字符串左端3個(gè)字符,左對(duì)齊。printf()函數(shù)中字符及字符串的輸出格式例1:main(){printf(“%3s,%7.2s,%.4s,%-5.3s\n”,“china”,“china”,“china”,”china”);}結(jié)果:china,ch,chin,chi例2:#include<stdio.h>main(){printf(“a=%4d,b=%-6.2f,c=%4c,d=%s,e=%c”,12,3.456,’A’,”hello”,’B’);}運(yùn)行結(jié)果:a=12,b=3.46,c=A,d=hello,e=B對(duì)printf()函數(shù)的說明:除了X、E、G外,其他格式字符必須用小寫字母;可以在"格式控制"中使用轉(zhuǎn)義字符;在%和格式字符之間可加入任何其他修飾符(如l,寬度);如果要輸出字符%,應(yīng)在“格式控制”字符串中連續(xù)兩個(gè)%表示。%d√

%D×printf(“%f\n”,a);printf(“f=%lf,c=%c\n”,a,c);printf(“%f%%”,1.0/3);轉(zhuǎn)義字符轉(zhuǎn)義字符功能\n回車換行符,光標(biāo)移動(dòng)下一行行首\r回車不換行,光標(biāo)移動(dòng)本行行首\t橫向跳格(8位為一格,光標(biāo)跳到下一格起始位置,如第9或17位等)\b退一格,光標(biāo)往左移動(dòng)一格\f走紙換頁\\用于輸出反斜杠字符“\”\’用于輸出單引號(hào)字符“‘”\’’用于輸出雙引號(hào)字符“””\ddd三位八進(jìn)制數(shù)ddd對(duì)應(yīng)的ASCII碼字符\xhh兩位十六進(jìn)制數(shù)hh對(duì)應(yīng)的ASCII碼字符轉(zhuǎn)義字符的使用#include<stdio.h>main(){printf(“123456789012345678901234567890\n”);printf(“123\t456\n”);printf(“12345\b123\r9\n”);}運(yùn)行結(jié)果:1234567890123456789012345678901234569234123思考:寫出下列輸出結(jié)果:printf(“\tfirst\b\b\bsh\\\r\’No.1’”);舉例:求半徑為1的圓面積#definePI3.14#include<stdio.h>main(){doubler,area,circum;r=1;area=PI*r*r;circum=2*PI*r;printf(“area=%7.2f\n”,area);printf(“circum=%f\n”,circum);}同學(xué)思考:當(dāng)要求r=3或r=3.5時(shí),怎么辦?3.5格式輸入/輸出二、格式輸入函數(shù)形式:scanf("格式控制",地址表列)格式控制:同printf()函數(shù),區(qū)別:無\n功能:按照格式控制字符串所規(guī)定的格式,從鍵盤上輸入數(shù)據(jù),然后回車,依次賦給各個(gè)變量。地址表列:由若干個(gè)地址組成的表列,可以是變量的地址,或字符串的首地址。在變量前必須加&符號(hào)。各地址間以逗號(hào)隔開。"格式控制":格式字符普通字符scanf中的普通字符是不顯示的,而是規(guī)定了輸入時(shí)必須輸入的字符由%+[格式符]格式字符;重視f,d,c格式符函數(shù)scanf()的格式轉(zhuǎn)換符格式轉(zhuǎn)換說明符用法%d%o%x%c%s%f或%e%%輸入十進(jìn)制整數(shù)輸入八進(jìn)制整數(shù)輸入十六進(jìn)制整數(shù)輸入一個(gè)字符,空白字符(包括空格、回車、tab)也作為有效字符輸入輸入字符串,遇到第一個(gè)空白字符(包括空格、回車、tab)時(shí)結(jié)束輸入實(shí)數(shù),以小數(shù)或指數(shù)形式輸入均可輸入一個(gè)百分號(hào)%舉例:求半徑為1的圓面積#definePI3.14#include<stdio.h>main(){floatr,area;area=PI*r*r;printf(“area=%f”,area);}當(dāng)要求r=3或r=3.5時(shí),怎么辦?scanf(“r=%f”,&r);r=1;運(yùn)行結(jié)果:輸入:r=3則area=28.6運(yùn)行程序scanf(“%f”,&r);運(yùn)行結(jié)果:輸入:3則area=28.6l可用于d,f,e前,指定輸入long型數(shù)值例如:scanf(“%ld,%lf”,&x,&y);m指定輸入數(shù)據(jù)的寬度,系統(tǒng)自動(dòng)按域?qū)捊厝∷钄?shù)據(jù)例如:scanf(“%3d%5d%f”,&a,&b,&x);執(zhí)行時(shí),輸入20012004.1則200→a,1200→b,4.1→x*抑制字符,表示對(duì)應(yīng)的輸入項(xiàng)在讀入后不賦給相應(yīng)的變量例如:scanf(“%3d%*5d%f”,&a,&x);執(zhí)行時(shí),輸入20011200

4.1則200→a,1200→,4.1→x修飾符scanf(“%*5d%f”,&a,&x);輸入20011

4.1則20011→,4.1→a.nscanf()沒有精度格式修飾符,即用scanf()輸入實(shí)型數(shù)據(jù)時(shí)不能規(guī)定精度例1:用scanf()函數(shù)輸入數(shù)據(jù)#include<stdio.h>voidmain(){inta,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“%d,%d,%d\n”,a,b,c);}運(yùn)行時(shí)輸入數(shù)據(jù):345輸出結(jié)果:3,4,5輸入數(shù)據(jù)時(shí)注意事項(xiàng):1、輸入的數(shù)據(jù)之間以什么間隔?#include<stdio.h>main(){intx,y,a1,b1,a2,b2,a3,b3,a4,b4;scanf(“x=%d,y=%d”,&x,&y);scanf(“%d,%d”,&a1,&b1);scanf(“%d%d”,&a2,&b2);scanf(“%d%d”,&a4,&b4);scanf(“%d:%d”,&a3,&b3);printf(“x=%d,y=%d\n”,x,y);printf(“a1=%d,b1=%d\n”,a1,b1);printf(“a2=%d,b2=%d\n”,a2,b2);printf(“a3=%d,b3=%d”,a3,b3);}注意:照原樣輸入運(yùn)行結(jié)果:從鍵盤中輸入時(shí)分別是:

x=1,y=23,46781012:23屏幕顯示:x=1,y=2a1=3,b1=4a2=6,b2=7a3=12,b3=23輸入數(shù)據(jù)時(shí)注意事項(xiàng):1、輸入的數(shù)據(jù)之間以什么間隔?2、可以指定輸入數(shù)據(jù)所占的列數(shù),系統(tǒng)自動(dòng)按它截取所需數(shù)據(jù);思考:當(dāng)輸入abc時(shí),c1,c2,c3的值是什么?例1:scanf(“%3d%3d”,&a,&b);執(zhí)行時(shí)輸入:123456則123→a,456→b例2:scanf(“%3c”,&ch);執(zhí)行時(shí)輸入:abc則‘a(chǎn)’→ch例3:canf(“%c%c%c”,&c1,&c2,&c3);執(zhí)行時(shí)輸入:abc則‘a(chǎn)’→c1,’’→c2,’b’→c3輸入數(shù)據(jù)時(shí)注意事項(xiàng):1、輸入的數(shù)據(jù)之間以什么間隔?2、可以指定輸入數(shù)據(jù)所占的列數(shù),系統(tǒng)自動(dòng)按它截取所需數(shù)據(jù);3、如果在%后有一個(gè)“*”附加說明符,表示跳過它指定的列數(shù)。scanf(“%2d%*3d%2d”,&a,&b);輸入:123456712→a,345→?,67→b輸入數(shù)據(jù)時(shí)注意事項(xiàng):1、輸入的數(shù)據(jù)之間以什么間隔?2、可以指定輸入數(shù)據(jù)所占的列數(shù),系統(tǒng)自動(dòng)按它截取所需數(shù)據(jù);3、如果在%后有一個(gè)“*”附加說明符,表示跳過它指定的列數(shù)。4、輸入數(shù)據(jù)時(shí),遇以下情況認(rèn)為該數(shù)據(jù)結(jié)束:遇空格、TAB、或回車遇指定寬度結(jié)束遇非法輸入scanf(“%d%c%f”,&a,&b,&c);輸入:1234

a

123o.26↓↓↓↓abc非法輸入scanf()函數(shù)中的輸入格式%c格式:讀入一個(gè)字符常量,但不需要輸入單引號(hào)。%*c格式:跳過一個(gè)字符。%d格式:讀入一個(gè)基本整型常量。%*d格式:跳過一個(gè)整數(shù)。%f格式:讀入一個(gè)十進(jìn)制單精度型常量。%lf格式:讀入一個(gè)十進(jìn)制雙精度型常量。%s格式:讀入一個(gè)字符串常量。%ld格式:讀入一個(gè)長整型常量。%e格式:按指數(shù)表示法讀入一個(gè)實(shí)型常量。注意:格式控制字符串中的其它字符必須照原樣從鍵盤上輸入!scanf()函數(shù)的%c格式符存在的問題例如:按如下數(shù)據(jù)輸入格式,從鍵盤輸入一個(gè)整數(shù)加法算式:操作數(shù)1+操作數(shù)2然后計(jì)算并輸出該表達(dá)式的計(jì)算結(jié)果,輸出格式如下:操作數(shù)1+操作數(shù)2=計(jì)算結(jié)果#include<stdio.h>main(){intdata1,data2;charop;printf(“pleaseentertheexpressiondata1+data2\n”);scanf(“%d%c%d”,&data1,&op,&data2);printf(“%d%c%d=%d\n”,data1,op,data2,data1+data2);}從鍵盤先后輸入12、空格、+、空格、3后程序運(yùn)行結(jié)果如下:如果輸入12、+、3結(jié)果如何?說明:在用%c格式讀入字符時(shí),空格字符和轉(zhuǎn)義(包括回車)都會(huì)被當(dāng)做有效字符讀入。如何解決scanf()函數(shù)的%c格式符存在的問題?用函數(shù)getchar()將數(shù)據(jù)輸入時(shí)存入緩沖區(qū)中的回車符讀入,以避免被后面的字符型變量作為有效字符讀入。在%c前面加一個(gè)空格,將前面數(shù)據(jù)輸入時(shí)存入緩沖區(qū)中的回車符讀入,避免被后面的字符型變量作為有效字符讀入。例如程序段:scanf(“%d”,&a);getchar();/*吸收了上面讀入a鍵入的回車*/scanf(“%c”,&b);或:scanf(“%d”,&a);scanf(“%c”,&b);/*%c前加一個(gè)空格,將上面a后面的回車吸收*/scanf與printf函數(shù)的區(qū)別main(){inta;scanf("%d\n",&a);printf("%d\n",a);}×√main(){inta;scanf("%d",a);printf("%d\n",a);}×√main(){floata;scanf("%.2f",&a);printf("%.2f\n",a);}×√main(){doublea;scanf("%f",&a);printf("%f\n",a);}×√使用scanf函數(shù)時(shí),如果雙引號(hào)中加一個(gè)\n,則在程序運(yùn)行時(shí)需要多輸入一個(gè)數(shù)據(jù)。使用printf函數(shù)時(shí),如果雙引號(hào)中加一個(gè)\n,則在程序運(yùn)行時(shí)在屏幕上輸出一個(gè)換行符。使用scanf函數(shù)從鍵盤上為變量賦值時(shí),應(yīng)在變量名前使用取地址符號(hào)。使用printf函數(shù)輸出數(shù)值時(shí),輸出項(xiàng)可以是一個(gè)常量、變量、或一個(gè)表達(dá)式。使用scanf函數(shù)從鍵盤上為變量賦值時(shí),不能規(guī)定精度。使用printf函數(shù)輸出實(shí)數(shù)時(shí),可以在%和f之間加.2,使輸出保存留2位小數(shù)。使用scanf函數(shù)從鍵盤上為雙精度型變量賦值時(shí),必須使用%lf格式。使用printf函數(shù)輸出雙精度實(shí)數(shù)時(shí),使用%f格式。程序設(shè)計(jì)方法程序設(shè)計(jì)的一般方法可以概括為五個(gè)步驟:從實(shí)際問題抽象出模型選擇適合的算法畫流程圖編寫程序調(diào)試程序舉例:求3個(gè)數(shù)的和同學(xué)思考:如何編寫程序?例1.輸入三角形的三邊長,求三角形面積程序設(shè)計(jì)需考慮以下問題:*需定義幾個(gè)變量?各為何種類型?*需要為哪些變量賦初值,哪些變量不需要賦初值?*按什么樣的順序計(jì)算中間變量的值?*計(jì)算面積值;*輸出計(jì)算結(jié)果,哪些變量的值不需要輸出?解題思路:假設(shè)給定的三個(gè)邊符合構(gòu)成三角形的條件關(guān)鍵是找到求三角形面積的公式公式為:其中s=(a+b+c)/2偽代碼算法:定義a,b,c,s,k,area變量輸入a,b,c的值s=1.0/2*(a+b+c)k=s*(s-a)*(s-b)*(s-c)area=sqrt(k)輸出a,b,c,area的值開始輸入a,b,c的值結(jié)束s=1.0/2*(a+b+c)k=s*(s-a)*(s-b)*(s-c)輸出a,b,c,area的值定義變量a,b,c,s,k,areaarea=sqrt(k)#include"math.h"/*包含數(shù)學(xué)函數(shù)頭文件*/#include“stdio.h"main(){floata,b,c,s,k,area;/*a,b,c分別表示邊長,area表示面積,s,k為中間變量*/scanf("%f,%f,%f",&a,&b,&c);/*注意輸入格式*/s=1.0/2*(a+b+c);k=s*(s-a)*(s-b)*(s-c);area=sqrt(k);printf("a=%7.2f,b=%7.2f,c=%7.2f\n",a,b,c);printf("area=%7.2f\n",area);}注意:因?yàn)榇祟}用到了sqrt()數(shù)學(xué)函數(shù),所以源程序的開頭應(yīng)加一條#include“math.h”,作為頭文件。文件包含預(yù)處理命令變量定義輸入數(shù)據(jù)輸出數(shù)據(jù)輸入:3,4,6輸出:a=3.00,b=4.00,c=6.00s=6.50area=5.33例2.輸入一個(gè)大寫字母,輸出對(duì)應(yīng)小寫字母和ASCII碼值。

程序設(shè)計(jì)時(shí)應(yīng)考慮以下問題:需定義幾個(gè)變量,各為什么類型?怎樣從鍵盤上輸入一個(gè)字符?為哪個(gè)變量從鍵盤上輸入字符?怎樣將大寫字母轉(zhuǎn)換成小寫字母?怎樣輸出最終結(jié)果?#include<stdio.h>main(){charc1,c2;c1=getchar();

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論