




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第3章順序結構程序設計第3章順序結構程序設計本章主要內容:
3.1c語句概述3.2數據輸入輸出的概念在c語言中的實現3.3字符數據的輸入輸出3.4格式輸入輸出3.5順序結構程序設計舉例重點:掌握數據輸入輸出語句的使用方法掌握順序結構程序設計的方法順序結構是三種基本結構中最簡單的一種結構。執行的順序:按自上向下的順序依次執行ABABN-S圖流程圖3.1順序結構程序的組成順序結構程序組成:數據描述部分(變量說明部分)輸入語句(已知)賦值語句(已知,計算)輸出語句(顯示結果)例1求半徑為r的圓的面積。/*calculatingtheareaofacircle*/#definePI3.14intmain(){floatr,area;scanf(“%f″,&r);或r=3;area=PI*r*r;printf(″Thearea=%f\n″,area);return0;}3.1順序結構程序的組成3.2賦值語句賦值語句是由賦值表達式加上一個分號構成。如x=a+b;賦值語句的使用:①給變量一個初始值時使用賦值語句;②改變變量的值時使用賦值語句;③保存計算的中間結果和最終結果時使用賦值語句。例2關于賦值語句的使用#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;}語句分類簡單語句空語句復合語句流程控制語句表達式語句(表達式;)函數調用語句(函數名(參數表);)(;)({一條或多條語句})條件語句循環語句break;continue;return;轉向語句①表達式語句例如:i++;--j;i=i+1;i=i+1×②賦值語句例如:a=1;a=a*3*cos(a);a=3×
區分:賦值表達式和賦值語句?1.表達式語句形式:表達式;簡單語句2.函數調用語句形式:函數調用;作用:完成特定的任務。例如:scanf(“%f”,&x);
printf(“%f”,x);y1=sin(1.7);y2=3*sin(3.14*x/180);簡單語句3.空語句空語句只用一個分號表示。形式:;注意:執行該語句不做任何操作。常用在循環語句中,構成空循環。4.復合語句用{}將一些簡單語句括起來,構成復合語句。注意:1.在語法上相當于一條語句。
2.{}外無分號。例如:{z=x+y;t=z/100;printf(“%f”,t);}例如:醋和醬油互換問題{t=a;a=b;b=t;}3.3數據輸入/輸出的概念在C語言中的實現在調用標準輸入/輸出庫函數時,是以計算機主機為主體而言的。C語言本身不提供輸入/輸出語句,輸入/輸出操作是由C函數庫中函數來實現的。所以printf和scanf不是C語言的關鍵字,而只是函數名。在調用系統庫函數時,要用預編譯命令”#include”將”頭文件”包括到用戶源文件中。在調用標準輸入輸出庫函數時,文件開頭應該有以下預編譯命令:#include<stdio.h>或#include“stdio.h”。在調用數學函數時,應包含頭文件#include<math.h>。C語言提供給用戶有豐富的標準庫函數(參考附錄F),標準庫函數完成預先設定好的任務,可直接調用。標準庫函數調用的規則:1、庫函數調用的形式函數名(參數表);2、調用目的一類調用是為了得到函數的返回值,另一類只是為了完成某項任務。數據的輸入與輸出C語言的標準函數庫提供有常用的輸入和輸出函數,其中putchar()函數可用來輸出一個字符,getchar()函數可用來輸入一個字符,printf()函數用來輸出任意格式的數據,scanf()函數用來輸入任意格式的數據。這四個函數都以終端(系統隱含指定的輸出設備,一般為鍵盤和屏幕)為輸入/出對象。單個字符的輸入/輸出在程序設計中,除了需要使用整型和實型數據之外,還需要另外一種很重要的數據類型,即字符型數據,如姓名,文字信息等,都是字符型數據,也叫文字型數據。文字型數據有兩種類型:單個字符和字符串大多數系統采用ASCII字符集字母:A~Z,a~z數字:0~9不能顯示的字符:空(null)字符(以‘\0’表示)、警告(以‘\a’表示)、退格(以‘\b’表示)、回車(以‘\r’表示)等基本ASCII碼表的前32個字符為控制字符(ASCII碼值為0~31)。接著為標準英文鍵盤上的每一個字符都規定了一個ASCII碼值,字符在內存中的存儲格式按照ASCII碼值所對應的二進制數確定。空格——3200100000A——6501000001a——9701100001b——9801100010一、字符常量字符常量:用單引號括起來的一個字符。如:‘A’、‘e’、‘?’等。由反斜杠(\)引導的轉義字符。如:“\n”表換行符。注意:a與'a'不同,前者為變量,后者為字符常量。9與‘9’也不同,前者為整型常量,后者是字符常量。‘a’與‘A’是不同的字符常量。
以“\”開頭的字符序列稱為轉義字符,這些字符的含義不是其本身,而是轉成了新的意義。
\n 換行,將當前位置移到下一行開頭\t換區(橫向跳格,跳到下一個輸出區,一區占8列)\b 退格(刪除前面的一個字符)\r回車,將當前位置移到本行開頭\\代表一個反斜杠字符(\)
\’ 代表一個單引號字符(')
\”代表一個雙引號字符(")
\ddd 1~3位8進制數所表示的字符
\xhh 1~2位16進制數所表示的字符字符形式 功能二、字符變量字符變量:只能存放一個字符并能改變其值的變量。字符型變量在內存中占1個字節。字符變量的定義:char
變量名;
例如:charc1,c2,c3,c4;變量c1,c2,c3,c4中可存儲字符數據、介于-128~127的整數或者轉義字符。例如:字符A的ASCII碼為:65D(十進制)=41H(十六進制)=101Q(八進制)∴字符A可以表示為‘A’、’\x41’、’\101’。字符變量分類:char和unsignedchar;三、字符型數據在內存中的存儲形式及使用方法存儲形式:按ASCII碼存儲。使用方法:
按字符使用(%c):則使用字符本身。
按數值使用(%d):則使用該字符的ASCII碼值。例如:chara;a=‘a’,并不是把字符‘a’本身放到內存單元中,而是將該字符的相應的ASCII碼97放到內存單元中。四、字符型數據使用方法舉例例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
);}
運行結果如下:c1=A,c2=Bc1=65,c2=66一聲響,c3=7但注意:一個字符變量不可以存放一個字符串,所以字符不能用雙引號括起來。例3.7小寫字母轉換為大寫字母#include<stdio.h>main(){charc1,c2;c1=‘a’;c2=‘b’;c1=c1-32;c2=c2-32;printf(“%c%c”,c1,c2);}運行結果:A
B注意字符的相加、字符的運算問題:1.字符型數據和整型數據之間可以通用,可直接進行算術運算.2.對字符數據進行算術運算,相當于對它們的ASCII進行算術運算.3.字符型與數值型可以互相賦值。4.一個字符數據既可以字符形式輸出,也可以整數形式輸出.1、VC++將字符變量默認定義為signedchar型。其存儲單元的最高位為符號位,取值范圍是-128~127。2、如果在字符變量中存放一個ASCII碼為0~127間的字符,由于字節中最高位為0,因此用%d格式輸出字符變量時,是一個正整數。3、如果在字符變量中存放一個ASCII碼為128~255間的字符,由于字節中最高位為1,因此用%d格式輸出字符變量時,是一個負整數。例如:charc=130;printf(“%d”,c);結果:-126字符按有符號處理例如:unsignedcharc=130;printf(“%d”,c);結果:130字符按無符號處理需要說明:簡單的屏幕輸出如何輸出a、b、c三個變量的值。#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”);}養成對變量初始化的習慣,有助于因忘記對變量賦初值導致的計算錯誤。#include<stdio.h>main(){inta=1;floatb=2.5;charc=‘A’;
}3.4字符的輸入/輸出1、字符輸出函數格式:putchar(ch)功能:將字符變量ch的值輸出到屏幕的當前位置上。即向終端(顯示器)輸出一個字符。注意事項:ch可以是字符常量、字符變量、整型變量、轉義字符。如:①putchar('A');/*在屏幕上輸出大寫字母A*/②c=putchar(‘A’);/*在屏幕上輸出大寫字母A,并將大寫字母A賦給變量c*/③c=‘*’;putchar(c);/*在屏幕上輸出c的值,即輸出一個*號*/④inti=97;putchar(i);/*輸出字符‘a’*/輸出轉義字符:putchar(’\101’)/*輸出字符‘A’*/putchar(’\’’)/*輸出單引號字符‘’’*/putchar(’\015’)/*輸出回車,不換行,使輸出的當前位置移到本行開頭*/例:#include<stdio.h>/*必須加*/main(){inti=97;charch=‘a’;/*變量初始化*/putchar(i);putchar(‘\n’);putchar(ch);}運行結果:aa例4.1輸出單個字符#include<stdio.h>main(){chara,b,c;a=‘B’;b=‘O’;c=‘Y’;putchar(a);putchar(b);putchar(c);putchar(‘\n’);}運行結果:BOY若運行結果為:BOY程序應怎樣改?
putchar(‘\n’);/*輸出換行符*/2、字符輸入函數格式:getchar()功能:從鍵盤上讀入一個字符,按回車鍵輸入結束,讀入的字符會自動被回顯到屏幕上。返回值:該字符的ASCII碼值3.4字符數據的輸入/輸出注意:1、程序運行后,在調用getchar()函數時,將返回用戶屏幕,等待用戶輸入一個字符后,才能繼續向下運行。2、getchar()函數只能接受一個字符。鍵入字符后需要敲回車鍵,回車后,程序才會響應輸入,繼續執行后續語句。3、getchar()函數得到的字符可以賦給字符變量或整型變量,也可以不賦給任何變量,作為表達式的一部分。例如:輸入單個字符#include"stdio.h"
main(){charc;c=getchar();putchar(c);putchar(‘\n’);}putchar(getchar());printf(“%c”,getchar());輸入:aa若要調用putchar(),getchar()函數,應在程序的前面使用文件包含命令:#include"stdio.h"例題:從鍵盤輸入一個大寫英文字母,要求改用小寫字母輸出#include<stdio.h>main(){charc1,c2;c1=getchar();c2=c1+32;putchar(c2);putchar(‘\n’);}/*getchar()沒有參數,getchar(c1)是錯誤的;*//*可寫為c2=c1+(‘a’-’A’)*/分析:觀察附錄A常用的ASCII字符表,可以發現一個規律,即小寫英文字母的ASCII碼值比相應的大寫英文字母的ASCII碼值大32,根據這個規律,即可實現他們的轉換/*putchar(c2)必須有參數*/此程序還能改為:#include<stdio.h>main(){charc2;c2=getchar()+32;putchar(c2);putchar(‘\n’);}3.4數據的格式化輸入/輸出一、格式輸出函數的一般格式printf(“格式控制字符串”);printf(“格式控制字符串”,輸出值參數表);格式控制字符串:必須用雙引號括起來,其作用是控制輸出項的格式和輸出一些提示信息。輸出值參數表:可有多個輸出值也可沒有。輸出值可以是常量、變量、運算符表達式、函數返回值等。若多個輸出,每個輸出項之間用逗號分隔。輸出的數據可以是整數、實數、字符、字符串。例如:inti=97;printf(“i=%d,%c”,i,i);輸出結果:i=97,a例如:printf(“%d”,100);輸出結果:100例如:intn=8;printf(“n=%d\n%d”,n,n*10);輸出結果:n=880例inta=3,b=4;printf(“%d%d%d”,a,b,a+b);輸出結果:347例inta=3,b=4;printf(“a=%3d,b=%5d\n”,a,b);輸出結果:a=3,b=43.5格式輸入/輸出一、格式輸出函數形式:printf(“格式控制字符串”,輸出值參數表);格式控制字符串:由3部分組成:普通字符、轉義字符、輸出項格式說明輸出值參數表:需要輸出的一些數據;必須與格式控制符一一對應格式說明普通字符由%+格式字符組成普通字符即需要原樣輸出的字符作用:將輸出的數據轉換為指定的格式輸出可以使用字母、數字、標點符號、空格、數學符號等例如:printf(“%d%d”,a,b);printf(“a=%d,b=%d\n”,a,b);格式字符格式符功能%d以帶符號的十進制形式輸出整數(整數不輸出正號)%o以不帶符號的八進制形式輸出整數%x以不帶符號的十六進制形式輸出整數%u以不帶符號的十進制形式輸出整數%c以字符形式輸出一個字符%s輸出一個或多個字符%f以小數形式輸出單、雙精度數,默認輸出6位小數%e以標準指數形式輸出單、雙精度數,數字部分小數位數為6位例題:從鍵盤輸入一個大寫英文字母,將其轉換為小寫字母后,將轉換后的小寫字母及其十進制的ASCII碼值顯示到屏幕上#include<stdio.h>main(){charch;ch=getchar();ch=ch+32;printf(“%c,%d\n”,ch,ch);}運行結果:Bb,98printf(“%c”,ch);與putchar(c2);等價printf()函數中整數的輸出格式%d格式:按十進制輸出有符號整數(-231~231-1)
。%ld格式:按十進制輸出有符號整數(-231~231-1)。%5d格式:按十進制輸出有符號整數至少占5位,右對齊,超過5位時按實際位數輸出。 %-5d格式:按十進制輸出有符號整數至少占5位,左對齊。%8ld格式:按十進制輸出長整型整數,至少占8位,右對齊,超過8位時按實際位數輸出。%u格式:按十進制輸出無符號整數(0~65535)。%o格式:按八進制輸出無符號整數。%x格式:按十六進制輸出無符號整數。注意:以u、八、十六進制格式輸出,不會輸出負數例如: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格式:按十進制輸出實數,不指定寬度,系統自定,整數部分全部輸出,保留6位小數。單精度實數有效位數為7位。雙精度為16位。%e格式:按指數形式輸出實數,按規范化形式輸出(13位),尾數部分的小數位數為6位,指數部分占5位(包括1位指數的符號位和占1位的e),%.3f格式:按十進制輸出實數,保留3位小數。%8.3f格式:按十進制輸出實數,列寬占8位,保留3位小數,右對齊,超過8位時按實際位數。%8.3e格式:按指數形式輸出實數,尾數部分保留3位有效數字,占8位,右對齊,超過8位時按實際位數。%g格式:按%e和%f中較短的一種格式輸出實數。printf()函數中實數的輸出格式例如: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);}結果:123.456001123.456001123.46123.46123.461.234560e+0021.234560e+0021.000765432e+003f格式符的說明:保留6位小數,單精度有效位數為7位;雙精度有效位數為16位。e格式符的說明:尾數部分保留6位小數。o、e、u格式符的說明:按不同進制輸出無符號整數。例如:格式符的用法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);}運行結果:12341234123.456001123.456001123.5123.461.23e+02注意:實數型的運算常常會出現誤差P79例如4.6小于數字的位數,照原樣輸出只管小數位數,其他照原樣輸出有3個空格%c格式:按字符輸出一個字符,但不輸出單引號。%d格式:按數值輸出,輸出該字符相應的ASCII碼值%3c格式:按字符輸出一個字符,占3位,右對齊。%-8c格式:按字符輸出一個字符,占8位,左對齊。%s格式:輸出一個字符串,但不輸出雙引號。%6s格式:輸出一個字符串,至少占6位,右對齊,超過6位,按實際位數。%-6s格式:輸出一個字符串,至少占6位,左對齊,超過6位,按實際位數。%6.3s格式:輸出一個字符串,占6列,取字符串左端3個字符,右對齊。%-6.3s格式:輸出一個字符串,占6列,取字符串左端3個字符,左對齊。printf()函數中字符及字符串的輸出格式例1:main(){printf(“%3s,%7.2s,%.4s,%-5.3s\n”,“china”,“china”,“china”,”china”);}結果: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’);}運行結果:a=12,b=3.46,c=A,d=hello,e=B對printf()函數的說明:除了X、E、G外,其他格式字符必須用小寫字母;可以在"格式控制"中使用轉義字符;在%和格式字符之間可加入任何其他修飾符(如l,寬度);如果要輸出字符%,應在“格式控制”字符串中連續兩個%表示。%d√
%D×printf(“%f\n”,a);printf(“f=%lf,c=%c\n”,a,c);printf(“%f%%”,1.0/3);轉義字符轉義字符功能\n回車換行符,光標移動下一行行首\r回車不換行,光標移動本行行首\t橫向跳格(8位為一格,光標跳到下一格起始位置,如第9或17位等)\b退一格,光標往左移動一格\f走紙換頁\\用于輸出反斜杠字符“\”\’用于輸出單引號字符“‘”\’’用于輸出雙引號字符“””\ddd三位八進制數ddd對應的ASCII碼字符\xhh兩位十六進制數hh對應的ASCII碼字符轉義字符的使用#include<stdio.h>main(){printf(“123456789012345678901234567890\n”);printf(“123\t456\n”);printf(“12345\b123\r9\n”);}運行結果:1234567890123456789012345678901234569234123思考:寫出下列輸出結果: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);}同學思考:當要求r=3或r=3.5時,怎么辦?3.5格式輸入/輸出二、格式輸入函數形式:scanf("格式控制",地址表列)格式控制:同printf()函數,區別:無\n功能:按照格式控制字符串所規定的格式,從鍵盤上輸入數據,然后回車,依次賦給各個變量。地址表列:由若干個地址組成的表列,可以是變量的地址,或字符串的首地址。在變量前必須加&符號。各地址間以逗號隔開。"格式控制":格式字符普通字符scanf中的普通字符是不顯示的,而是規定了輸入時必須輸入的字符由%+[格式符]格式字符;重視f,d,c格式符函數scanf()的格式轉換符格式轉換說明符用法%d%o%x%c%s%f或%e%%輸入十進制整數輸入八進制整數輸入十六進制整數輸入一個字符,空白字符(包括空格、回車、tab)也作為有效字符輸入輸入字符串,遇到第一個空白字符(包括空格、回車、tab)時結束輸入實數,以小數或指數形式輸入均可輸入一個百分號%舉例:求半徑為1的圓面積#definePI3.14#include<stdio.h>main(){floatr,area;area=PI*r*r;printf(“area=%f”,area);}當要求r=3或r=3.5時,怎么辦?scanf(“r=%f”,&r);r=1;運行結果:輸入:r=3則area=28.6運行程序scanf(“%f”,&r);運行結果:輸入:3則area=28.6l可用于d,f,e前,指定輸入long型數值例如:scanf(“%ld,%lf”,&x,&y);m指定輸入數據的寬度,系統自動按域寬截取所需數據例如:scanf(“%3d%5d%f”,&a,&b,&x);執行時,輸入20012004.1則200→a,1200→b,4.1→x*抑制字符,表示對應的輸入項在讀入后不賦給相應的變量例如:scanf(“%3d%*5d%f”,&a,&x);執行時,輸入20011200
4.1則200→a,1200→,4.1→x修飾符scanf(“%*5d%f”,&a,&x);輸入20011
4.1則20011→,4.1→a.nscanf()沒有精度格式修飾符,即用scanf()輸入實型數據時不能規定精度例1:用scanf()函數輸入數據#include<stdio.h>voidmain(){inta,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“%d,%d,%d\n”,a,b,c);}運行時輸入數據:345輸出結果:3,4,5輸入數據時注意事項:1、輸入的數據之間以什么間隔?#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);}注意:照原樣輸入運行結果:從鍵盤中輸入時分別是:
x=1,y=23,46781012:23屏幕顯示:x=1,y=2a1=3,b1=4a2=6,b2=7a3=12,b3=23輸入數據時注意事項:1、輸入的數據之間以什么間隔?2、可以指定輸入數據所占的列數,系統自動按它截取所需數據;思考:當輸入abc時,c1,c2,c3的值是什么?例1:scanf(“%3d%3d”,&a,&b);執行時輸入:123456則123→a,456→b例2:scanf(“%3c”,&ch);執行時輸入:abc則‘a’→ch例3:canf(“%c%c%c”,&c1,&c2,&c3);執行時輸入:abc則‘a’→c1,’’→c2,’b’→c3輸入數據時注意事項:1、輸入的數據之間以什么間隔?2、可以指定輸入數據所占的列數,系統自動按它截取所需數據;3、如果在%后有一個“*”附加說明符,表示跳過它指定的列數。scanf(“%2d%*3d%2d”,&a,&b);輸入:123456712→a,345→?,67→b輸入數據時注意事項:1、輸入的數據之間以什么間隔?2、可以指定輸入數據所占的列數,系統自動按它截取所需數據;3、如果在%后有一個“*”附加說明符,表示跳過它指定的列數。4、輸入數據時,遇以下情況認為該數據結束:遇空格、TAB、或回車遇指定寬度結束遇非法輸入scanf(“%d%c%f”,&a,&b,&c);輸入:1234
a
123o.26↓↓↓↓abc非法輸入scanf()函數中的輸入格式%c格式:讀入一個字符常量,但不需要輸入單引號。%*c格式:跳過一個字符。%d格式:讀入一個基本整型常量。%*d格式:跳過一個整數。%f格式:讀入一個十進制單精度型常量。%lf格式:讀入一個十進制雙精度型常量。%s格式:讀入一個字符串常量。%ld格式:讀入一個長整型常量。%e格式:按指數表示法讀入一個實型常量。注意:格式控制字符串中的其它字符必須照原樣從鍵盤上輸入!scanf()函數的%c格式符存在的問題例如:按如下數據輸入格式,從鍵盤輸入一個整數加法算式:操作數1+操作數2然后計算并輸出該表達式的計算結果,輸出格式如下:操作數1+操作數2=計算結果#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后程序運行結果如下:如果輸入12、+、3結果如何?說明:在用%c格式讀入字符時,空格字符和轉義(包括回車)都會被當做有效字符讀入。如何解決scanf()函數的%c格式符存在的問題?用函數getchar()將數據輸入時存入緩沖區中的回車符讀入,以避免被后面的字符型變量作為有效字符讀入。在%c前面加一個空格,將前面數據輸入時存入緩沖區中的回車符讀入,避免被后面的字符型變量作為有效字符讀入。例如程序段:scanf(“%d”,&a);getchar();/*吸收了上面讀入a鍵入的回車*/scanf(“%c”,&b);或:scanf(“%d”,&a);scanf(“%c”,&b);/*%c前加一個空格,將上面a后面的回車吸收*/scanf與printf函數的區別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函數時,如果雙引號中加一個\n,則在程序運行時需要多輸入一個數據。使用printf函數時,如果雙引號中加一個\n,則在程序運行時在屏幕上輸出一個換行符。使用scanf函數從鍵盤上為變量賦值時,應在變量名前使用取地址符號。使用printf函數輸出數值時,輸出項可以是一個常量、變量、或一個表達式。使用scanf函數從鍵盤上為變量賦值時,不能規定精度。使用printf函數輸出實數時,可以在%和f之間加.2,使輸出保存留2位小數。使用scanf函數從鍵盤上為雙精度型變量賦值時,必須使用%lf格式。使用printf函數輸出雙精度實數時,使用%f格式。程序設計方法程序設計的一般方法可以概括為五個步驟:從實際問題抽象出模型選擇適合的算法畫流程圖編寫程序調試程序舉例:求3個數的和同學思考:如何編寫程序?例1.輸入三角形的三邊長,求三角形面積程序設計需考慮以下問題:*需定義幾個變量?各為何種類型?*需要為哪些變量賦初值,哪些變量不需要賦初值?*按什么樣的順序計算中間變量的值?*計算面積值;*輸出計算結果,哪些變量的值不需要輸出?解題思路:假設給定的三個邊符合構成三角形的條件關鍵是找到求三角形面積的公式公式為:其中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的值結束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"/*包含數學函數頭文件*/#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);}注意:因為此題用到了sqrt()數學函數,所以源程序的開頭應加一條#include“math.h”,作為頭文件。文件包含預處理命令變量定義輸入數據輸出數據輸入:3,4,6輸出:a=3.00,b=4.00,c=6.00s=6.50area=5.33例2.輸入一個大寫字母,輸出對應小寫字母和ASCII碼值。
程序設計時應考慮以下問題:需定義幾個變量,各為什么類型?怎樣從鍵盤上輸入一個字符?為哪個變量從鍵盤上輸入字符?怎樣將大寫字母轉換成小寫字母?怎樣輸出最終結果?#include<stdio.h>main(){charc1,c2;c1=getchar();
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車使用與維護 課件 項目一 制動系統的使用與維護1-4 盤式制動器的檢查與維護
- 2025年電壁車項目可行性研究報告
- 2025年電動精小型單座套筒調節閥項目可行性研究報告
- 2025年甲基異丙基酮項目可行性研究報告
- 2025年瓶裝液體灌裝機項目可行性研究報告
- 2025年特種鋼鑄件項目可行性研究報告
- 中北大學《英語敘事文寫作》2023-2024學年第一學期期末試卷
- 皖西衛生職業學院《工程材料與機械制造基礎A》2023-2024學年第二學期期末試卷
- 湖南省衡陽二十六中2025年下學期高三生物第二次階段檢測試題考試試卷含解析
- 浙江省嘉興市秀洲區2025屆數學三下期末達標檢測試題含解析
- 軟件使用授權書
- 澳大利亞東水西調
- 腦卒中后吞咽障礙患者進食護理(2023年中華護理學會團體標準)
- 機構與零件應用智慧樹知到課后章節答案2023年下山東輕工職業學院
- 綠色信貸項目節能減排量測算指引
- 哈薩克斯坦勞動法中文版
- 表面粗糙度儀檢定證書
- 健身長拳《起勢、開步雙劈、按掌前推》教案
- 高職學生職業生涯規劃-全章課件
- 森林管護措施及造林工作思考
- 順豐ai面試19道題自我介紹
評論
0/150
提交評論