C語言譚浩強(qiáng)第四版例題(共88頁)_第1頁
C語言譚浩強(qiáng)第四版例題(共88頁)_第2頁
C語言譚浩強(qiáng)第四版例題(共88頁)_第3頁
C語言譚浩強(qiáng)第四版例題(共88頁)_第4頁
C語言譚浩強(qiáng)第四版例題(共88頁)_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上例1.1 要求在屏幕上輸入以下一行信息.This is a C program.編寫程序:#include <stdio.h> / 這是編譯預(yù)?處理命令int main( ) / 定義主函數(shù) / 函數(shù)開始的標(biāo)志 printf ("This is a C program.n"); / 輸出所指定的一行信息 return 0; / 函數(shù)執(zhí)行完畢時(shí)返回函數(shù)值0 例1.2 求兩個(gè)整數(shù)之和.編寫程序:#include <stdio.h> / 這是編譯預(yù)處理命令 int main( ) / 定義主函數(shù) / 函數(shù)開始 int a,b,su

2、m; / 本行是程序的聲明部分,定義a、b、sum為整型變量 a = 123; / 對變量a賦值 b = 456; / 對變量b賦值 sum = a + b; / 進(jìn)行a+b 的運(yùn)算,并把結(jié)果存放在變量sum中 printf("sum is %dn",sum); / 輸出結(jié)果 return 0; / 使函數(shù)返回值為0 / 函數(shù)結(jié)束 例1.3 求兩個(gè)整數(shù)的較大者.編寫程序:#include <stdio.h>int main( ) / 定義主函數(shù) / 主函數(shù)體開始 int max(int x,int y); / 對被調(diào)用函數(shù)max的聲明 int a,b,c; /

3、定義變量a,b,c scanf("%d,%d",&a,&b); / 輸入變量a和b的值 c = max(a,b); / 調(diào)用max函數(shù),將得到的值賦給c printf("max=%dn",c); / 輸出c的值 return 0; / 返回函數(shù)值為0int max(int x,int y) /定義max函數(shù),函數(shù)值為整型, 形式參數(shù)x和y為整型 int z; / max函數(shù)中的聲明部分,定義本函數(shù)中用到的變量z為整型 if (x > y) z = x; else z = y; return(z); /將z的值返回,通過max帶回到調(diào)

4、用函數(shù)的位置例2.1 求1×2×3×4×5編寫程序:#include <stdio.h>int main( ) int i,t; t=1; i=2; while(i<=5) t=t*i; i=i+1; printf("%dn",t); return 0;例2.2 有50個(gè)學(xué)生,要求將成績在80分以上的學(xué)生的學(xué)號和成績輸出。編寫程序:例2.19 求編寫程序:#include <stdio.h>int main( ) int sign=1; double deno=2.0,sum=1.0,term; / 定義

5、deno,sum,term為雙精度變量 while (deno<=100) sign=-sign; term=sign/deno; sum=sum+term; deno=deno+1; printf("%fn",sum); return 0; 例3.1 有人用溫度計(jì)測量出用華氏法表示的溫度(如 F,今要求把它轉(zhuǎn)換為以攝氏法表示的溫度(如 C) 。編寫程序:#include <stdio.h>int main ( ) float f,c; / 定義f和c為單精度浮點(diǎn)型變量 f=64.; / 指定f的值 c=(5.0/9)*(f-32); / 利用公式計(jì)算c的

6、值 printf("f=%fnc=%fn",f,c); / 輸出c的值 return 0; 例3.2 計(jì)算存款利息。有1000元,想存一年。有三種方法可選:(1)活期,年利率為r1 (2)一年期定期,年利率為r2(3)存兩次半年定期,年利率為r3 請分別計(jì)算出一年后按三種方法所得到的本息和。編寫程序:#include <stdio.h>int main( ) float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3; p1 = p0 * (1 + r1); p2 = p0 * (1 + r2); p3 = p0 *

7、 (1 + r3/2) * (1 + r3/2); printf("p1=%fnp2=%fnp3=%fn",p1,p2,p3); return 0; 例3.3 給定一個(gè)大寫字母,要求用小寫字母輸出。編寫程序:#include <stdio.h>int main ( ) char c1,c2; c1='A' / 將字符'A'的ASCII代碼放到c1變量中 c2=c1+32; / 得到字符'a'的ASCII代碼,放在c2變量中 printf("%cn",c2); / 輸出c2的值,是一個(gè)字符 pri

8、ntf("%dn",c2); / 輸出c2的值,是字符'a'的ASCII代碼 return 0;例3.10 改寫例3.3程序,使之可以適用于任何大寫字母.從鍵盤輸入一個(gè)大寫字母,在顯示屏上顯示對應(yīng)的小寫字母.編寫程序:#include <stdio.h>int main ( ) char c1,c2; c1=getchar(); / 從鍵盤讀入一個(gè)字符,賦給字符變量c1 c2=c1+32; / 得到字符'a'的ASCII代碼,放在字符變量c2中 putchar(c2); / 輸出c2的值,是一個(gè)字符 putchar('n&

9、#39;); return 0; #include <stdio.h>int main ( ) char c1,c2; c1=getchar(); / 從鍵盤讀入一個(gè)大寫字符,賦給字符變量c1 c2=c1+32; / 得到對應(yīng)的小寫字符的ASCII代碼,放在字符變量c2中 printf("大寫字母:%cn小寫字母:%cn",c1,c2); / 輸出c1,c2的值-大小寫字符 return 0; 例3.4 給出三角形的三邊長,求三角形面積。編寫程序:#include <stdio.h>#include <math.h>int main (

10、) double a,b,c,s,area; / 定義各變量,均為double型 a=3.67; / 對邊長a賦值 b=5.43; / 對邊長b賦值 c=6.21; / 對邊長c賦值 s=(a+b+c)/2; / 計(jì)算s area=sqrt(s*(s-a)*(s-b)*(s-c); / 計(jì)算area printf("a=%ftb=%ft%fn",a,b,c); / 輸出三邊a,b,c的值 printf("area=%fn",area); / 輸出面積area的值 return 0; 例3.5 求 方程的根。a、b、c由鍵盤輸入 設(shè) 編寫程序:#inclu

11、de <stdio.h>#include <math.h> / 程序中要調(diào)用求平方根函數(shù)sqrt int main ( ) double a,b,c,disc,x1,x2,p,q; / disc是判別式sqrt(b*b-4ac) scanf("%lf%lf%lf",&a,&b,&c); / 輸入實(shí)型變量的值要用格式聲明"%f" disc=b*b-4*a*c; if (disc<0) printf("This equation hav't real rootsn"); els

12、e p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q;x2=p-q; / 求出方程的兩個(gè)根 printf("x1=%7.2fnx2=%7.2fn",x1,x2); / 輸出方程的兩個(gè)根 return 0;例3.6 用%f輸出實(shí)數(shù),只能得到6位小數(shù).編寫程序:#include <stdio.h>int main()double a=1.0; printf("%fn",a/3); return 0;例 3.7 float型數(shù)據(jù)的有效位數(shù).編寫程序:#include <stdio.h>int main

13、()double a; a=10000/3.0; printf("%fn",a); return 0;例3.8 先后輸出BOY三個(gè)字符。 編寫程序:#include <stdio.h>int main ( ) char a='B',b='O',c='Y' / 定義3個(gè)字符變量,并初始化 putchar(a); / 向顯示器輸出字符B putchar(b); / 向顯示器輸出字符O putchar(c); / 向顯示器輸出字符Y putchar ('n'); / 向顯示器輸出一個(gè)換行符 return

14、0; #include <stdio.h>int main ( ) char a,b,c; / 定義3個(gè)字符變量 a='B'b='O'c='Y' / 給3個(gè)字符變量賦值 putchar(a); / 向顯示器輸出字符B putchar(b); / 向顯示器輸出字符O putchar(c); / 向顯示器輸出字符Y putchar ('n'); / 向顯示器輸出一個(gè)換行符 return 0; 例3.9 從鍵盤輸入BOY三個(gè)字符,然后把它們輸出到屏幕。編寫程序:#include <stdio.h>int main

15、 ( ) char a,b,c; / 定義字符變量a,b,c a=getchar(); / 從鍵盤輸入一個(gè)字符,送給字符變量a b=getchar(); / 從鍵盤輸入一個(gè)字符,送給字符變量b c=getchar(); / 從鍵盤輸入一個(gè)字符,送給字符變量c putchar(a); / 將變量a的值輸出 putchar(b); / 將變量a的值輸出 putchar(c); / 將變量a的值輸出 putchar('n'); / 換行 return 0; #include <stdio.h>int main ( ) putchar(getchar(); / 將接收到的字

16、符輸出 putchar(getchar(); / 將接收到的字符輸出 putchar(getchar(); / 將接收到的字符輸出 putchar('n'); return 0;例4.1 在例3.5的基礎(chǔ)上對程序進(jìn)行改進(jìn)。題目要求是求 方程的根。由鍵盤輸入a,b,c。假設(shè)a,b,c的值任意,并不保證 。需要在程序中進(jìn)行判別,如果 ,就計(jì)算并輸出方程的兩個(gè)實(shí)根,否則就輸出“方程無實(shí)根”的信息。 編寫程序:#include <stdio.h>#include <math.h> / 程序中要調(diào)用求平方根函數(shù)sqrt int main ( ) double a,

17、b,c,disc,x1,x2,p,q; / disc是判別式sqrt(b*b-4ac) scanf("%lf%lf%lf",&a,&b,&c); / 輸入雙精度浮點(diǎn)型變量的值要用格式聲明"%lf" disc=b*b-4*a*c; if (disc<0) printf("This equation hav't real rootsn"); else p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q;x2=p-q; / 求出方程的兩個(gè)根 printf("r

18、eal roots:nx1=%10.6fnx2=%10.6fn",x1,x2); / 輸出方程的兩個(gè)根 return 0;例4.2 輸入兩個(gè)實(shí)數(shù),按代數(shù)值由小到大的順序輸出這兩個(gè)數(shù)。編寫程序:#include <stdio.h>int main() float a,b,t; scanf("%f,%f",&a,&b); if(a>b) t=a; a=b; b=t; printf("%5.2f,%5.2fn",a,b); return 0;例4.3 輸入3個(gè)數(shù)a,b,c,要求按由小到大的順序輸出。編寫程序:#inc

19、lude <stdio.h>int main() float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) t=a; a=b; b=t; / 實(shí)現(xiàn)a和b的互換 if(a>c) t=a; a=c; c=t; / 實(shí)現(xiàn)a和c的互換 if(b>c) t=b; b=c; c=t; / 實(shí)現(xiàn)b和c的互換 printf("%5.2f,%5.2f,%5.2fn",a,b,c); return 0;例4.4 輸入一個(gè)字符,判別它是否大寫字母,如果是,將它轉(zhuǎn)換成小寫字母;如果

20、不是,不轉(zhuǎn)換。然后輸出最后得到的字符。編寫程序:#include <stdio.h>int main() char ch; scanf("%c",&ch); ch=(ch>='A' && ch<='Z') ? (ch+32) : ch; printf("%cn",ch); return 0;例4.5有一函數(shù):編一程序,輸入一個(gè)x值,要求輸出相應(yīng)的y值。編寫程序:程序1:#include <stdio.h>int main() int x,y; scanf(&quo

21、t;%d",&x); if(x<0) y=-1; else if(x=0) y=0; else y=1; printf("x=%d,y=%dn",x,y); return 0;程序2:#include <stdio.h>int main() int x,y; scanf("%d",&x); if (x>=0) if (x>0) y=1; else y=0; else y=-1; printf("x=%d,y=%dn",x,y); return 0;例4.6 要求按照考試成績的等級

22、輸出百分制分?jǐn)?shù)段,A等為85分以上,B等為7084分,C等為6069分 ,D等為 60分以下 。成績的等級由鍵盤輸入。編寫程序:#include <stdio.h>int main() char grade; scanf("%c",&grade); printf("Your score:"); switch(grade) default: printf("data error!n");break; case 'A': printf("85100n");break; case &#

23、39;B': printf("7084n");break; case 'C': printf("6069n");break; case 'D': printf("<60n");break; return 0; 例4.7 編寫程序,用switch語句處理菜單命令。在許多應(yīng)用程序中,用菜單對流程進(jìn)行控制,例如從鍵盤輸入一個(gè)A或a字符,就會執(zhí)行A操作,輸入一個(gè)B或b字符,就會執(zhí)行B操作,等等。編寫程序:#include <stdio.h>int main() void action1

24、(int,int),action2(int,int); char ch; int a=15,b=23; ch=getchar(); switch(ch) case 'a': case 'A': action1(a,b);break; case 'b': case 'B': action2(a,b);break; default: putchar('a'); return 0; void action1(int x,int y) printf("x+y=%dn",x+y);void action2

25、(int x,int y) printf("x*y=%dn",x*y);例4.8 寫一程序,判斷某一年是否閏年。編寫程序: 程序1: 程序2: #include <stdio.h> #include <stdio.h>int main() int main() int year,leap; int year,leap; scanf("%d",&year); scanf("%d",&year); if (year%4=0) if(year%4!=0) leap=0; if(year%100=0)

26、else if (year%100!=0) leap=1; if(year%400=0) else if(year%400!=0) leap=1; leap=0; else else leap=0; leap=1; if (leap) else printf("%d is ",year); leap=1; else printf("%d is not ",year); else printf("a leap year.n"); leap=0; return 0; if (leap) printf("%d is ",

27、year); else printf("%d is not ",year); printf("a leap year.n"); return 0; #include <stdio.h> 程序3:int main() int year,leap; printf("enter year:"); scanf("%d",&year); if(year%4=0 && year%100!=0) | (year%400=0) leap=1; else leap=0; if (leap) pri

28、ntf("%d is ",year); else printf("%d is not ",year); printf("a leap year.n"); return 0; 程序4:#include <stdio.h> #include <stdbool.h>int main() int year; bool leap; scanf("%d",&year); if (year%4=0) if(year%100=0) if(year%400=0) leap=true; else lea

29、p=false; else leap=true; else leap=false; if (leap=true) printf("%d is ",year); else printf("%d is not ",year); printf("a leap year.n"); return 0; 例4.9 求 方程的解。編寫程序:#include <stdio.h>#include <math.h>int main() double a,b,c,disc,x1,x2,realpart,imagpart; scanf

30、("%lf,%lf,%lf",&a,&b,&c); printf("The equation "); if(fabs(a)<=1e-6) printf("is not a quadraticn"); else disc=b*b-4*a*c; if(fabs(disc)<=1e-6) printf("has two equal roots:%8.4fn",-b/(2*a); else if(disc>1e-6) x1=(-b+sqrt(disc)/(2*a); x2=(-b-

31、sqrt(disc)/(2*a); printf("has distinct real roots:%8.4f and %8.4fn",x1,x2); else realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf(" has complex roots:n"); printf("%8.4f+%8.4fin",realpart,imagpart); printf("%8.4f-%8.4fin",realpart,imagpart); return 0; 例4.1

32、0 運(yùn)輸公司對用戶計(jì)算運(yùn)輸費(fèi)用。路程(s km)越遠(yuǎn),每噸·千米運(yùn)費(fèi)越低。編寫程序:#include <stdio.h>int main() int c,s; float p,w,d,f; printf("please enter price,weight,discount:"); / 提示輸入的數(shù)據(jù) scanf("%f,%f,%d",&p,&w,&s); / 輸入單價(jià)、重量、距離 if(s>=3000) c=12; / 3000km以上為同一折扣 else c=s/250; / 3000km以下各段折

33、扣不同,c的值不相同 switch(c) case 0: d=0; break; / c=0,代表250km以下,折扣d=0 case 1: d=2; break; / c=1,代表250到500km以下,折扣d=2% case 2: case 3: d=5; break; / c=2和3,代表500到1000km以下,折扣d=5% case 4: case 5: case 6: case 7: d=8; break; / c=4-7,代表1000到2000km以下,折扣d=8% case 8: case 9: case 10: case 11: d=10; break; / c=8-11,代

34、表2000到3000km以下,折扣d=10% case 12: d=15; break; / c12,代表3000km以上,折扣d=15% f = p * w * s * (1 - d / 100); / 計(jì)算總運(yùn)費(fèi) printf("freight=%10.2fn",f); / 輸出總運(yùn)費(fèi),取兩位小數(shù) return 0;例5.1求1+2+3+100,即編寫程序:#include <stdio.h>int main() int i=1,sum=0; / 定義變量i的初值為1,sum的初值為0 while (i<=100) / 當(dāng)i>100,條件表達(dá)式i

35、<=100的值為假,不執(zhí)行循環(huán)體 / 循環(huán)體開始 sum=sum+i; / 第一次累加后,sum的值為1 i+; / 加完后,i的值加1,為下次累加作準(zhǔn)備 / 循環(huán)體結(jié)束 printf("sum=%dn",sum); / 輸出1+2+3+100的累加和 return 0;例5.2 用dowhile語句求: 1+2+3+100,即編寫程序:#include <stdio.h>int main() int i=1,sum=0; do sum=sum+i; i+; while(i<=100); printf("%dn",sum); re

36、turn 0;例5.3 while和do-while循環(huán)的比較。編寫程序:(1)用while循環(huán)#include <stdio.h>int main() int i,sum=0; printf("please enter i,i=?"); scanf("%d",&i); while(i<=10) sum=sum+i; i+; ; printf("sum=%dn",sum); return 0;(2)用dowhile循環(huán)#include <stdio.h>int main() int i,sum=0

37、; printf("please enter i,i=?"); scanf("%d",&i); do sum=sum+i; i+; while(i<=10); printf("sum=%dn",sum); return 0;例5.4 在全系1000學(xué)生中,征集慈善募捐,當(dāng)總數(shù)達(dá)到10萬元時(shí)就結(jié)束,統(tǒng)計(jì)此時(shí)捐款的人數(shù),以及平均每人捐款的數(shù)目。編寫程序:#include <stdio.h>#define SUM int main() float amount,aver,total; int i; for (i=1

38、,total=0;i<=1000;i+) printf("please enter amount:"); scanf("%f",&amount); total= total+amount; if (total>=SUM) break; aver=total/i; printf("num=%dnaver=%10.2fn",i,aver); return 0;例5.5 要求輸出100200之間的不能被3整除的數(shù)。編寫程序:#include <stdio.h>int main()int n; for (n=1

39、00;n<=200;n+) if (n%3=0) continue; printf("%d ",n); printf("n"); return 0;例5.6 輸出以下4*5的矩陣。 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20編寫程序:#include <stdio.h>int main() int i,j,n=0; for (i=1;i<=4;i+) for (j=1;j<=5;j+,n+) if(n%5=0)printf("n"); /控制在輸出5個(gè)數(shù)據(jù)后

40、換行 printf("%dt",i*j); printf("n"); return 0;#include <stdio.h>int main() int i,j,n=0; for (i=1;i<=4;i+) for (j=1;j<=5;j+,n+) if(n%5=0)printf("n"); /控制在輸出5個(gè)數(shù)據(jù)后換行 if (i=3 && j=1) break; /遇到第3行第1列,終止內(nèi)循環(huán) printf("%dt",i*j); printf("n")

41、; return 0;#include <stdio.h>int main() int i,j,n=0; for (i=1;i<=4;i+) for (j=1;j<=5;j+,n+) if(n%5=0)printf("n"); /控制在輸出5個(gè)數(shù)據(jù)后換行 if (i=3 && j=1) continue; /遇到第3行第1列,提前結(jié)束執(zhí)行本次內(nèi)循環(huán)體 printf("%dt",i*j); printf("n"); return 0;例5.7用 公式求 的近似值,直到發(fā)現(xiàn)某一項(xiàng)的絕對值小于10*6

42、 為止(該項(xiàng)不累計(jì)加)。編寫程序:#include <stdio.h>#include<math.h>int main() int sign=1; / sign用來表示數(shù)值的符號 double pi=0.0,n=1.0,term=1.0; / pi代表,n代表分母,term代表當(dāng)前項(xiàng)的值 while(fabs(term)>=1e-8) / 檢查當(dāng)前項(xiàng)term的絕對值是否大于或等于10的(-6)次方 pi=pi+term; / 把當(dāng)前項(xiàng)term累加到pi中 n=n+2; / n+2是下一項(xiàng)的分母 sign=-sign; / sign代表符號,下一項(xiàng)的符號與上一項(xiàng)符號

43、相反 term=sign/n; / 求出下一項(xiàng)的值term pi=pi*4; / 多項(xiàng)式的和pi乘以4,才是的近似值 printf("pi=%10.8fn",pi); / 輸出的近似值 #include <stdio.h>#include<math.h>int main() int sign=1; / sign用來表示數(shù)值的符號 int t=0; / t 代表當(dāng)前執(zhí)行循環(huán)體的次數(shù) double pi=0.0,n=1.0,term=1.0; / pi代表,n代表分母,term代表當(dāng)前項(xiàng)的值 while(fabs(term)>=1e-6) / 檢查

44、當(dāng)前項(xiàng)term的絕對值是否大于或等于10的(-6)次方 t=t+1; / 每進(jìn)入一次循環(huán)體,t的值加1 pi=pi+term; / 把當(dāng)前項(xiàng)term累加到pi中 n=n+2; / n+2是下一項(xiàng)的分母 sign=-sign; / sign代表符號,下一項(xiàng)的符號與上一項(xiàng)符號相反 term=sign/n; / 求出下一項(xiàng)的值term pi=pi*4; / 多項(xiàng)式的和pi乘以4,才是的近似值 printf("pi=%10.6fn",pi); / 輸出的近似值 例5.8 求費(fèi)波那西(Fibonacci)數(shù)列的前40個(gè)數(shù)。這個(gè)數(shù)列有如下特點(diǎn):第1、2兩個(gè)數(shù)為1、1。從第3個(gè)數(shù)開始,該數(shù)是其前面兩個(gè)數(shù)之和。即:編寫程序:#include <stdio.h>int main() int f1=1,f2=1,f3; int i; printf("%12dn%12dn",f1,f2

溫馨提示

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

評論

0/150

提交評論