高級程序C語言經(jīng)典50例(后)附答案手稿_第1頁
高級程序C語言經(jīng)典50例(后)附答案手稿_第2頁
高級程序C語言經(jīng)典50例(后)附答案手稿_第3頁
高級程序C語言經(jīng)典50例(后)附答案手稿_第4頁
高級程序C語言經(jīng)典50例(后)附答案手稿_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、“高級語言程序設(shè)計”編程題-1. 從鍵盤輸入3個整數(shù),求其中的最大數(shù)和最小數(shù),并輸出結(jié)果。-2. 從鍵盤上輸入一個3*3的整數(shù)矩陣,求其各行的平均值并輸出,輸出時保留兩位小數(shù)。-3. 輸出x2的值,x取值從0到10。-4. 從鍵盤上輸入一個3*4的整數(shù)矩陣,要求輸出其最大元素的值,以及它的行號和列號。-5.編寫一個程序從鍵盤輸入10個數(shù),要求輸出其中最小的。-6.編寫一個函數(shù)根據(jù)以下公式計算s,計算結(jié)果作為函數(shù)值返回;n通過形參傳入。 -7.輸出1000年(包括1000年)到1999年之間的所有閏年,要求每三個一行,分行輸出。閏年:能被4整除不能被100整除的年份,或是能被400整除的年份-8

2、. 編寫程序打印所有的“水仙花數(shù)”?!八苫〝?shù)”指一個三位數(shù),其各位數(shù)字立方和等于該數(shù)本身,例如153是一個“水仙花數(shù)”,因為 1531×1×13×3×35×5×5。-9.編寫一個程序,輸入一個3位數(shù)的正整數(shù),然后反向輸出對應(yīng)的數(shù)。如:123,則輸出321。-10. 從鍵盤輸入10名學(xué)生的C語言成績存入一維數(shù)組內(nèi),編寫程序計算10名學(xué)生的最高分、平均分和及格人數(shù)。-11. 編寫一個程序,判斷用戶輸入的字符是否是數(shù)字,若是數(shù)字,則輸出“a -12. 從鍵盤輸入12個數(shù)存入二維數(shù)組a34中,編寫程序求出最大元素的值及它所在的行號和列號。-

3、13打印所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個三位正整數(shù),其各位數(shù)字的立方和等于該數(shù)本身。-14. 利用函數(shù)將給定的3×3二維數(shù)組轉(zhuǎn)置。-15. 編程輸入a、b、c的值后,輸出一元二次方程ax2+bx+c=0的解。-16. 從鍵盤上輸入任意兩個數(shù)和一個運算符(+、-、*、/),根據(jù)輸入的運算符對兩個數(shù)計算,并輸出結(jié)果。-17. 編寫輸入一個字符串,計算其中空格的個數(shù)。-18. 采用二維數(shù)組輸入多個學(xué)生五門課的成績,分別求出每個學(xué)生的平均成績和每門課的平均成績。19. 編寫程序,逆轉(zhuǎn)字符串。20. 編寫程序,統(tǒng)計一個英語文本中的英語單詞個數(shù)。21. 打印出所有的“水仙花數(shù)”,所謂

4、“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個“水仙花數(shù)”,因為153=1的三次方5的三次方3的三次方。22有一分數(shù)序列:2/1,3/2,5/3,8/5,13/8,21/13.求出這個數(shù)列的前20項之和。23找出101200中所有的素數(shù)。24使用循環(huán)結(jié)構(gòu)編寫程序,打印出如下圖案*25.用冒泡排序法將10個整數(shù)由大到小排序。26.輸入任意正整數(shù),編程判斷該數(shù)是否為回文數(shù)(回文數(shù)是指從左到右讀與從右到左讀一樣,如12321)。27. 求出10至1000之內(nèi)能同時被2、3、7整除的數(shù),并輸出。28. 輸入一字符串,檢查是否回文 (回文是指正反序相同,如,LeveL),若

5、是則輸出“Yes”,否則輸出“No”。29. 設(shè)計一個函數(shù),用來判斷一個整數(shù)是否為素數(shù)。30. 從鍵盤上輸入若干學(xué)生成績(成績在0100之間),計算平均成績,并輸出低于平均分的學(xué)生成績,用輸入負數(shù)結(jié)束輸入。31. 設(shè)計一個函數(shù),用來判斷一個整數(shù)是否為素數(shù)。32. 從鍵盤上輸入若干學(xué)生成績(成績在0100之間),計算平均成績,并輸出低于平均分的學(xué)生成績,用輸入負數(shù)結(jié)束輸入。33. 輸入三個整型數(shù),找出其中數(shù)值最大者并輸出。34. 編寫程序在屏幕上顯示如下圖形:1 2 3 4 55 1 2 3 44 5 1 2 33 4 5 1 2 2 3 4 5 135. 編寫猜數(shù)游戲,程序給定某個整數(shù),從鍵盤

6、上反復(fù)輸入數(shù)據(jù)進行猜測。如果未猜中,程序提示輸入過大或者過小;如果猜中,則輸出猜的次數(shù),最多允許猜10次36. 將一個數(shù)組中的值按逆序重新存放。例如,原來順序為 a,b,c,d,e,f,g,現(xiàn)在順序為g,f,e,d,c,b,a.(數(shù)組長度不限)37. 有一篇文章,共有3行文字,每行有80個字符。要求分別統(tǒng)計出其中英文大寫字母,小寫字母,數(shù)字,空格以及其他字符的個數(shù)。38求39將十個整數(shù)輸入數(shù)組,求出其平均值并輸出。40.將十個實型數(shù)輸入數(shù)組(float n10;)逆序存放后再輸出。41.編寫程序:輸出x2的值,x取值從1到10。42.設(shè)計程序:定義可以存儲1000個整數(shù)的數(shù)組;在該數(shù)組中依次存

7、入1到1000;在屏幕上打印出數(shù)組中所有17的倍數(shù)。43.設(shè)計一個函數(shù),用來判斷一個整數(shù)是否為素數(shù);并在main()函數(shù)中調(diào)用該函數(shù),在屏幕上打印出100以內(nèi)的所有素數(shù)。44.寫出一個函數(shù),求n! .(n! = 1*2*3*n)45使用一維數(shù)組計算學(xué)生的平均成績。用輸入負數(shù)結(jié)束輸入。 46.從鍵盤上輸入一個3*3的矩陣,并求其主對角線元素的和。47. 寫一個函數(shù)is_prime,判斷整數(shù)n是否素數(shù)。如果n是素數(shù),則返回1;如果n不是素數(shù),則返回0。48.從鍵盤輸入任意一串字符串,程序輸出同樣的一串字符,要求輸出字符串中大小寫相互轉(zhuǎn)化,其他符號不變。如輸入“a123BxC”,則輸出“A123bX

8、c”49.任意輸入10個整數(shù),打印出10個數(shù)中的最大值50.輸入三個整數(shù)a, b, c,請按從小到大的順序輸出這三個數(shù)51、輸入一個整數(shù)n,請判斷n是否是質(zhì)數(shù),如果是,打印 n是質(zhì)數(shù),否則打印 n不是質(zhì)數(shù)52編程,先輸入n,再輸入n個實數(shù)并分別統(tǒng)計正數(shù)的和、負數(shù)的和,然后輸出統(tǒng)計結(jié)果。53.編程,輸入a1、a2、.、a15后,計算下列表達式的值并輸出。54.編程,設(shè)有三個候選人,每次輸入一個得票的候選人的名字,要求最后輸出各人得票結(jié)果。55.編程,從鍵盤上輸入一個字符串,將其中的小寫字母轉(zhuǎn)換成大寫字母,大寫字母轉(zhuǎn)換成小寫字母,輸入字符串以“!”結(jié)束,將轉(zhuǎn)換后的字符串輸出到電腦屏幕。1. 解答

9、/*從鍵盤輸入3個整數(shù),求其中的最大數(shù)和最小數(shù),并輸出結(jié)果*/#include "stdio.h"void main()printf("從鍵盤輸入3個整數(shù),求其中的最大數(shù)和最小數(shù),并輸出結(jié)果nn");int a,b,c,max; /*定義三個整數(shù)和形參變量*/printf("請輸入三個整數(shù),用 空格 隔開 n");scanf("%d %d %d",&a,&b,&c);if(a>=b)max=a;/*將兩者中的大的值賦予參數(shù)*/if(max>=c && b>=

10、c)/*同時找出最大的數(shù)和最小的數(shù),下面類似*/printf("三者中最大的數(shù)是 a = %dn三者中最小的數(shù)是 c = %dn",a,c);else if(max>=c && b<c)printf("三者中最大的數(shù)是 a = %dn三者中最小的數(shù)是 b = %dn",a,b);else if(max<c)printf("三者中最大的數(shù)是 c = %dn三者中最小的數(shù)是 b = %dn",c,b);elsemax=b;/*將兩者中的大的值賦予參數(shù)*/if(max>=c && a&

11、gt;=c)printf("三者中最大的數(shù)是 b = %dn三者中最小的數(shù)是 c = %dn",b,c);else if(max>=c && a<c)printf("三者中最大的數(shù)是 b = %dn三者中最小的數(shù)是 a = %dn",b,a);else if(max<c)printf("三者中最大的數(shù)是 c = %dn三者中最小的數(shù)是 a = %dnn",c,a);2. 解答:#include "stdio.h"void main()int i,j,a33; /*定義i,j為計數(shù)器

12、*/float ave1,ave2,ave3;/*平均值要保留小數(shù),故用實型*/printf("請按提示從鍵盤輸入整數(shù)n");for(i=0;i<=2;i+)for(j=0;j<=2;j+)/*用雙循環(huán)來從鍵盤接收a33的3*3矩陣。ij都不能大于2,與數(shù)組定義有關(guān)*/printf("請輸入(按回車確認) n a%d%d = ",i,j);scanf("%d",&aij);/*接收鍵盤輸入*/printf("n您輸入的矩陣為:n");for(i=0;i<=2;i+)/*這個嵌套循環(huán)用來打印

13、出所輸入的矩陣*/for(j=0;j<=2;j+)printf("%d ",aij);printf("n");ave1=(a00+a01+a02)*1/3.0;/*求平均值。注意這里的1/3.0,這是為了使整型轉(zhuǎn)為實型,以保留小數(shù)*/ave2=(a10+a11+a12)*1/3.0;ave3=(a20+a21+a22)*1/3.0;printf("第一行的平均值為ave1 = %.2fn",ave1);printf("第二行的平均值為ave2 = %.2fn",ave2);printf("第三行的平

14、均值為ave3 = %.2fn",ave3);3. 解答:#include "stdio.h"void main()int x;for(x=0;x<=10;x+)printf("%d*%d = %dn",x,x,x*x);4. 解答:#include "stdio.h"void main()int a34,i,j,max;/*定義矩陣和計數(shù)器*/int m,n;/*用來記錄行號和列號*/printf("請按提示輸入n");for(i=0;i<3;i+)for(j=0;j<4;j+)/*雙

15、嵌套接收3*4矩陣*/printf("請輸入(按回車確認) n a%d%d = ",i,j);scanf("%d",&aij);/*接收鍵盤輸入*/max=a00;for(i=0;i<3;i+)for(j=0;j<4;j+)if(aij>max)/*用雙嵌套尋遍數(shù)組的元素,用if來實現(xiàn)符合條件的命令*/max=aij,/*這個式子來獲得所用循環(huán)中的最大值*/m=i,n=j;/*記錄最大值的行號和列號*/printf("n矩陣中的最大值是 max= %dnn",max);printf("行號為:%d

16、列號為:%dn ",m,n);5. 解答:#include "stdio.h"void main()int a10,max,i;printf("請按提示輸入n");for(i=0;i<10;i+)printf("請輸入第 %d 個數(shù): ",i+1);scanf("%d",&ai);printf("n");max=a0;for(i=0;i<10;i+)if(max<ai)max=ai;/*同前幾道題類似,用max取出數(shù)組里最大值*/printf("這十

17、個數(shù)中最大的是:%dn",max);6. 解答:#include "stdio.h"void sum(int n)/*編寫函數(shù)*/int j;float s=0;for(j=1;j<=n;j+)s=s+1.0 /(2*j-1);printf(" s = %.2fn",s);void main()int n;scanf("%d",&n);sum(n);/*調(diào)用函數(shù)*/7. 解答:#include "stdio.h"void main()int i;for(i=1000;i<=1999;i

18、+)/*定義循環(huán)變量*/if(i%4=0 && i%100!=0)/*篩選符合條件的年份*/printf("this %d year is a leap yearn",i);else if(i%400=0)/*篩選符合條件的年份*/printf("this %d year is a leap yearn",i);8. 解答:#include "stdio.h"void main()int a,b,c,x,i;printf("以下程序打印出所有的水仙花數(shù)nn");/下面三層嵌套循環(huán)可尋遍所有的三位數(shù)f

19、or(a=1;a<=9;a+)/*a作為百位,不能為0,從1開始取*/for(b=0;b<=9;b+)for(c=0;c<=9;c+)if(a*100 + b*10 + c = a*a*a + b*b*b + c*c*c)/*滿足水仙花條件*/x=a*100+b*10+c,/*賦值,可以省略*/printf("三位數(shù) %d 是水仙花數(shù)n",x);9. 解答:#include "stdio.h"void main()int i,j,k,x,y;printf("請輸入一個三位數(shù): ");scanf("%d&qu

20、ot;,&x);/下面是提取出這個三位數(shù)的百位、十位和各位/用三層循環(huán)尋遍所有三位數(shù)if(x>100 && x<999)for(i=1;i<=9;i+)for(j=0;j<=9;j+)for(k=0;k<=9;k+)/*個位倒序后成百位,個也不能為零*/if(i*100 + j*10 + k = x)/*找到和x相等的數(shù),記錄i,j,k*/if(k = 0)/*排除個位為0的數(shù)*/printf("這個三位數(shù)個位為0,不能倒序n");elsey=k*100 + j*10 + i,/*依據(jù)i,j,k來逆向形成*/printf

21、("這個倒序的三位數(shù)是:%dn",y);elseprintf("你的輸入有誤!n");10. 解答:#include "stdio.h"void main()int a10,max=0,m,i,k,j=0;float ave;printf("請按提示輸入十個同學(xué)的成績 nn");for(i=0;i<10;i+)/*接收成績*/printf("請輸入第 %d 位同學(xué)的成績:",i+1);scanf("%d",&ai);printf("n");f

22、or(i=0;i<10;i+)if(ai>=max)max=ai,m=i+1;/*找出最高成績,并記錄是第幾位同學(xué)*/if(ai>=60)j+;/*計算及格同學(xué)的個數(shù)*/ave=(a0+a1+a2+a3+a4+a5+a6+a7+a8+a9)/10.0;/*平均成績*/printf("成績中最高的是第 %d 位同學(xué)的:%d 分n",m,max);printf("及格的個數(shù)為:%dn",j);printf("平均成績?yōu)椋?.2fn",ave);11. 解答:#include "stdio.h"void

23、 main()char ch;ch=getchar();/*只接收第一個字符*/if(ch>='0' && ch<='9')/*帶單引號表示ASCLL碼值的比較*/printf("a numerical charactern");elseprintf("other charactern");12. 解答:參考第四題答案。13. 解答:參考第八題答案。14. 解答:#include "stdio.h"void change(int a33)int i,j,k;for(i=0;i

24、<3;i+)for(j=i+1;j<3;j+)/*注意這里的j=i+1不能是j=0,想想為什么*/k=aij; /*借用參量k完成兩者的值互換*/aij=aji;aji=k;void main()int i,j,a33;for(i=0;i<3;i+)/*接收數(shù)組*/for(j=0;j<3;j+)printf("請輸入a%d%d = ",i,j);scanf("%d",&aij);printf("原來的矩陣:n");for(i=0;i<3;i+)for(j=0;j<3;j+)printf(&q

25、uot; %d ",aij);printf("n");printf("轉(zhuǎn)換后的矩陣:n");change(a);/*調(diào)用函數(shù)*/for(i=0;i<3;i+)for(j=0;j<3;j+)printf(" %d ",aij);printf("n");15. 解答:#include "stdio.h"#include "math.h" /*這個是需要引用數(shù)學(xué)函數(shù)*/void main()printf("輸入a、b、c的值后,輸出一元二次方程ax2

26、+bx+c=0的解n");int a,b,c;float n,x1,x2,m;printf("請輸入a的值:a = ");scanf("%d",&a);printf("請輸入b的值:b = ");scanf("%d",&b);printf("請輸入c的值:c = ");scanf("%d",&c);/以下實際為求根公式m = b*b - 4*a*c; /*這個是=b*b-4ac*/if(m>=0)n=sqrt(m); /*對開方。#in

27、clude "math.h 這個里面包含開放函數(shù) sqrt()*/x1=(-b+n)/(2*a);x2=(-b-n)/(2*a);printf("方程的根為:x1 = %.2f x2 = %.2f n",x1,x2);elseprintf("該方程沒有實數(shù)解n");16. 解答:參見課本69頁。17. 解答: #include <stdio.h>#include<string.h>/*定義字符串處理函數(shù)*/int main()char ch80;/這里需要定義一個數(shù)組int i,n,s=0;printf("請輸

28、入一串字符串:n");gets(ch);/為了輸入空格,必須要用gets輸入/gets 送一字符串到流中n=strlen(ch);/計算字符串長度for(i=0;i<n;i+)if(chi=32 )/空格的ASCII碼值為32s=s+1;/不能用i求和,因為i用在了for循環(huán)printf("字符串中的空格數(shù)有:%d 個n",s);18. 解答:/采用二維數(shù)組輸入多個學(xué)生五門課的成績,分別求出每個學(xué)生的平均成績和每門課的平均成績#include "stdio.h"void main()int a1005,i,j,n;float ave110

29、0=0;float ave280=0;printf("請輸入你要計算幾個人成績,n = ");scanf("%d",&n);for(i=0;i<n;i+)for(j=0;j<5;j+)printf("n請輸入第 %d 位同學(xué)的第 %d 門成績:",i+1,j+1);scanf("%d",&aij);/*接收成績*/ave1i=ave1i+aij;/*對每位學(xué)生的成績求和*/ave1i=ave1i/5;/*求出每位學(xué)生的平均成績*/for(j=0;j<5;j+)for(i=0;i&l

30、t;n;i+)ave2j=ave2j+aij;/*對每門課成績求和*/ave2j=ave2j/n;/*求出每門課平均成績*/for(i=0;i<n;i+)printf("第 %d 位同學(xué)的平均成績?yōu)椋?.2fn",i+1,ave1i);for(j=0;j<5;j+)printf("第 %d 門課的平均成績?yōu)椋?.2fn",j+1,ave2j);19. 解答:#include "stdio.h"#include "string.h"/*調(diào)用庫函數(shù)*/void main()char ch100;int n,

31、i;printf("請輸入字符串:");gets(ch);/*接收一串字符*/n=strlen(ch);/*求取字符串長度*/printf("逆轉(zhuǎn)字符串為:");for(i=0;i<n;i+)printf("%c",chn-i-1);/*這里注意%c和%s的區(qū)別,輸出的為連續(xù)多個單字符*/printf("n");20. 解答:#include "stdio.h"#include "string.h"void main()char ch100;int i,j=0,n;pr

32、intf("請輸入一個英語文本:");gets(ch);/*接收一個字符串*/n=strlen(ch);/*獲取字符串長度,以便控制循環(huán)次數(shù)*/*單詞的個數(shù)也就是空格的個數(shù),每個單詞后都有空格*/for(i=0;i<n;i+)if(chi = 32)/*空格的ASCLL碼為32,注意32沒有單引號*/j=j+1;printf("這個英語文本共有 %d 個單詞n",j+1);/*因為最后一個單詞后面沒有空格*/21. 解答:參見第八題22. 解答:/這個數(shù)列是斐波拉切數(shù)列,通項不好寫,但是能用程序計算#include "stdio.h&qu

33、ot;void sum(int n)int i,c;float s=0,a=2,b=1.0;/*數(shù)據(jù)類型轉(zhuǎn)換*/for(i=1;i<=n;i+)s=s+a/b;/看規(guī)律,數(shù)列a/b,c/d,e/f.其中,c=a+b,d=a依次類推c=a;/*下面的幾個式子就完成了數(shù)的轉(zhuǎn)換*/a=a+b;b=c;printf("數(shù)列的前 %d 項和為:%.2fn",n,s);void main()int n;printf("計算數(shù)列,斐波拉切數(shù)列2/1,3/2,5/3,8/5,13/8,21/13.的前N項和n");printf("請輸入項數(shù) N = &q

34、uot;);scanf("%d",&n);sum(n);/*調(diào)用函數(shù)*/23. 解答:/素數(shù):即質(zhì)數(shù),指在一個大于1的自然數(shù)中,除了1和此整數(shù)自身外,沒法被其他自然數(shù)整除的數(shù)#include "stdio.h"void main()int i,j;int flag=1;for(i=101;i<=200;i+)for(j=2;j<i;j+)/*取遍所有的除數(shù)*/if(i%j = 0)flag=0;break;/*能被整除,這個數(shù)不是素數(shù),則跳出內(nèi)層循環(huán)*/if(flag = 1)/*標(biāo)記出素數(shù)*/printf(" %d n&q

35、uot;,i);flag=1;/*還原flag的初始值,因為在程序運行中flag的值已被改變*/24. 解答:#include "stdio.h"void main()int i,j,k,n;printf("請輸入你要打印多少行:");scanf("%d",&n);for(i=1;i<=n;i+)for(j=0;j<(n-i);j+)/*每行空格數(shù)和行數(shù)的關(guān)系*/printf(" ");for(k=0;k<(2*i-1);k+)/*每行星號數(shù)和行數(shù)的關(guān)系*/printf("*&q

36、uot;);printf("n");25. 解答:#include <stdio.h>void main()int a10,i,j,t;printf("請任意輸入十個整數(shù),程序?qū)ζ溥M行排序n");for(i=0;i<10;i+)/*接收十個整數(shù)*/printf("請輸入第 %d 個數(shù): ",i+1);scanf("%d",&ai);for(i=0;i<9;i+)/*需要循環(huán)9次*/for(j=0;j<9-i;j+)/*此處的j<9-i與下面的if語句有關(guān)。在執(zhí)行if語句

37、后,最小的數(shù)將被放在數(shù)組的最后一位。所以循環(huán)到第二輪比較互換的過程時,就不需要在和最小的數(shù)比較了*/if(aj<aj+1)/*用語句來連續(xù)完成兩個相鄰數(shù)的比較和互換,把最小的數(shù)放在數(shù)組的末尾*/t=aj;aj=aj+1;aj+1=t;printf("排列后的數(shù)為: ");for(i=0;i<10;i+)printf(" %d ",ai);printf("n");26. 解答:#include "stdio.h"#include "string.h"/*引入庫函數(shù)*/void main

38、()int n,i,flag=1;char ch100;printf("請輸入一串字符:");gets(ch);/*接收一串字符*/n=strlen(ch);/*計算字符長度,好控制循環(huán)次數(shù)*/for(i=0;i<n;i+)if(chi != chn-i-1)/*判斷,如果第一位和最后位、第二位和倒數(shù)第二位不相等,則執(zhí)行下面語句*/flag=0;break;/*此處的if一旦執(zhí)行,則就有flag=0,跳出循環(huán)*/if(flag=1)/*如果上面的if未執(zhí)行,則說明字符是回文了*/printf("這串字符是回文n");elseprintf("

39、;這串字符不是回文n");27. 解答:#include "stdio.h"void main()int i;for(i=10;i<=1000;i+)if(i%2 = 0)if(i%3=0)if(i%7=0)printf("Êý %d ÄÜͬʱ±»Õû³ýn",i);28. 解答:#include "stdio.h"#include "string.h"/*

40、引入庫函數(shù)*/void main()int n,i,flag=1;char ch100;printf("請輸入一串字符:");gets(ch);/*接收一串字符*/n=strlen(ch);/*計算字符長度,好控制循環(huán)次數(shù)*/for(i=0;i<n;i+)if(chi != chn-i-1)/*判斷,如果第一位和最后位、第二位和倒數(shù)第二位不相等,則執(zhí)行下面語句*/flag=0;break;/*此處的if一旦執(zhí)行,則就有flag=0,跳出循環(huán)*/if(flag=1)/*如果上面的if未執(zhí)行,則說明字符是回文了*/printf("這串字符是回文n");

41、elseprintf("這串字符不是回文n");29. 解答:#include "stdio.h"void sushu(int n)int i,j,flag=1;if(n<=1)printf("你的輸入有誤n");elsefor(i=2;i<n;i+)if(n%i=0)/*如果能被1和本身之外的數(shù)整除,則不是素數(shù)*/flag=0;break;/*標(biāo)記flag=0,并跳出循環(huán)*/if(flag=1)/*在上面循環(huán)全部完成時flag依然等于1,則說明除去1和數(shù)本身,已經(jīng)找不到能整除n的數(shù)了*/printf("n這個數(shù)

42、是素數(shù)n");elseprintf("n這個數(shù)不是素數(shù)n");void main()int n;printf("請輸入一個整數(shù):");scanf("%d",&n);sushu(n);30. 解答:#include "stdio.h"void main()int i,n;float a100,ave,sum=0.0;printf("請輸入你要計算幾個學(xué)生的成績:");scanf("%d",&n);for(i=0;i<n;i+)printf(&qu

43、ot;請輸入第 %d 位同學(xué)的成績:",i+1);scanf("%f",&ai);/*接收成績*/if(ai<0 | ai>100)/*判斷是否輸入有誤*/printf("你的輸入有誤!n");goto end;/*goto函數(shù),程序直接跳轉(zhuǎn)到有標(biāo)記的地方繼續(xù)執(zhí)行*/sum=sum+ai;/*成績求和*/ave=sum/n;/*計算平均*/printf("平均成績?yōu)椋?.1fn",ave);for(i=0;i<n;i+)if(ai<ave)/*篩選出低于平均分的同學(xué)*/printf("

44、;第%d位同學(xué)成績?yōu)?.1f不及格n",i+1,ai);end:; /*goto函數(shù)的目標(biāo)標(biāo)記*/*附goto函數(shù)的用法:前面程序段goto flag; (勿忘了分號)中間程序段 flag: ; (勿忘了分號) 后面程序段程序從goto的地方直接跳轉(zhuǎn)到flag的地方,中間的部分全部不執(zhí)行,并且flag不需要事先定義,比如不需要 int flag*/31. 解答:同 29題32. 解答:同 30題33. 解答:同 01題34. 解答:#include "stdio.h"void main()int a5=1,2,3,4,5,i,j,t,n;printf("

45、請輸入你想要打印多少行:");scanf("%d",&n);for(i=0;i<5;i+)printf(" %d ",ai);/*打印原來的數(shù)組*/printf("n");for(i=0;i<n;i+)/*控制打印行數(shù)*/下面幾句是進行遞推的語句t=a4;for(j=3;j>=0;j-)aj+1=aj;/*將aj的值賦予aj+1,這是根據(jù)數(shù)表的規(guī)律判斷的*/a0=t;/*上面連續(xù)賦值無法實現(xiàn)將最后元素和第一個元素互換,故加上t=a4,a0=t的語句來完成*/for(j=0;j<5;j+)pri

46、ntf(" %d ",aj);/*打印出新的數(shù)組*/printf("n");35. 解答:#include "stdio.h"void main()int i,m=90,n,t;printf("n請輸入數(shù)來進行猜數(shù)游戲,你有10次機會。請輸入:");for(i=0;i<9;i+)/*限制猜測次數(shù),用i<9是因為最后一次的提示不一樣*/scanf("%d",&n);if(n>m)/*猜測判斷*/printf("n你輸入的數(shù)有點大,你還有%d次機會。請重新輸入:&

47、quot;,9-i);/*i初始值為0,故用9-i*/else if(n<m)printf("n你輸入的數(shù)有點小,你還有%d次機會。請重新輸入:",9-i);else if(n=m)printf("n恭喜你,猜對了!n你共猜測了 %d 次n",i+1);break;/*i初始值為0,故用i+1*/scanf("%d",&t);/*這里是第十次輸入*/if(t=m)printf("n恭喜你,猜對了!n你共用了10次機會n");elseprintf("n你的10次機會已經(jīng)用完,程序結(jié)束.n&qu

48、ot;);36. 解答:#include "stdio.h"#include "string.h"/*調(diào)用庫*/void main()char ch100;int n,i,t;printf("請輸入一串字符:");gets(ch);/*接收字符串*/n=strlen(ch);/*計算字符串長度*/for(i=0;i<n/2;i+)/*限制循環(huán)次數(shù),i<n/2因為如果i<n,則會在如ai和ai+1交換后,繼續(xù)進行了ai+1和ai交換,又還原了*/t=chi;/*以下三條是交換語句*/chi=chn-i-1;chn-i-

49、1=t;printf("逆序后的字符為:");for(i=0;i<n;i+)printf("%c",chi);/*打印結(jié)果*/printf("n");37. 解答:#include "stdio.h"#include "string.h"/*調(diào)用庫*/void main()char ch250;int i,a=0,b=0,c=0,d=0,e=0,n;printf("請輸入文本:");gets(ch);/*接收字符串*/n=strlen(ch);/*計算字符串長度*/fo

50、r(i=0;i<n;i+)if(chi>='A' && chi<='Z')/*統(tǒng)計大寫字母*/a+;else if(chi>='a' && chi<='z')/*統(tǒng)計小寫*/b+;else if(chi>='0' && chi<='9')/*統(tǒng)計數(shù)字*/c+;else if(chi=' ')/*統(tǒng)計空格*/d+;else/*統(tǒng)計其他*/e+;printf("輸入的文本中有:nn大寫字母

51、%d個n小寫字母%d個n數(shù) 字%d個n空 格%d個n其他字符%d個n",a,b,c,d,e);38. 解答:#include "stdio.h"void main()int i,a=0,b=0;float sum,c=0;for(i=1;i<=100;i+)a=a+i;for(i=1;i<=50;i+)b=b+i*i;for(i=1;i<=10;i+)c=c+1.0/i;/*數(shù)據(jù)類型轉(zhuǎn)換*/sum=a+b+c;printf("這個算式的和為: %.2fn",sum);39. 解答#include "stdio.h&q

52、uot;void main()int a10,i;float sum=0,ave;printf("請輸入十個整數(shù)n");for(i=0;i<10;i+)printf("請輸入第%d個數(shù):",i+1);scanf("%d",&ai);sum+=ai;/*求和,等同于 sum=sum+ai*/ave=sum/10.0;printf("這十個數(shù)的平均值為:%.2fn",ave);40. 解答:#include "stdio.h"void main()float n10,t;int i;p

53、rintf("請輸入十個實數(shù)n");for(i=0;i<10;i+)printf("n請輸入第%d個實數(shù):",i+1);scanf("%f",&ni);printf("原來的數(shù)組:n");for(i=0;i<10;i+)printf(" %.2f ",ni);/*打印原數(shù)組*/printf("n");for(i=0;i<5;i+)t=ni;/*三條逆序語句*/ni=n9-i;n9-i=t;printf("逆序后的數(shù)組為:n");f

54、or(i=0;i<10;i+)printf(" %.2f ",ni);/*打印逆序后數(shù)組*/printf("n");41. 解答:參見第三題42. 解答:#include "stdio.h"void main()int a1000,i;for(i=0;i<1000;i+)ai=i+1;/*i初始值為0*/for(i=0;i<1000;i+)if(ai%17=0)/*篩選符合條件的數(shù)*/printf("%dn",ai);43. 解答:參見29題44. 解答:#include "stdio.

55、h"void jiecheng(int n)long int i,ans=1;/*這里注意賦初值為1*/if(n=0)printf("0的階乘為1n");else if(n<0)printf("負數(shù)的階乘為無窮大n");elsefor(i=1;i<=n;i+)ans=ans*i;/*階乘運算式*/printf("數(shù) %d 的階乘: %d! = %d n",n,n,ans);void main()int n;printf("請輸入一個自然數(shù),程序?qū)⒂嬎闼碾A乘n n = ");scanf(&qu

56、ot;%d",&n);jiecheng(n);45. 解答:參見第30題46. 解答:#include "stdio.h"void main()int a33,sum=0,i,j;printf("請輸入一個3*3的矩陣n");for(i=0;i<3;i+)for(j=0;j<3;j+)/*接收數(shù)組*/printf("請輸入a%d%d = ",i,j);scanf("%d",&aij);printf("輸入的矩陣為:n");for(i=0;i<3;i+)

57、/*打印原矩陣*/for(j=0;j<3;j+)printf(" %d ",aij);printf("n");for(i=0;i<3;i+)sum=sum+aii;/*求主對角線的和*/printf("主對角線的和為:%dn",sum);47. 解答:參見29題48. 解答:#include "stdio.h"#include "string.h"/*調(diào)用庫函數(shù)*/void main()char ch100;int n,i;printf("請輸入一個字符串:");gets(ch);/*接收串字

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論