c語(yǔ)言實(shí)驗(yàn)答案_第1頁(yè)
c語(yǔ)言實(shí)驗(yàn)答案_第2頁(yè)
c語(yǔ)言實(shí)驗(yàn)答案_第3頁(yè)
c語(yǔ)言實(shí)驗(yàn)答案_第4頁(yè)
c語(yǔ)言實(shí)驗(yàn)答案_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、/1.1編寫一程序,在屏幕上輸出如下內(nèi)容:/ X | X | X/+/ 0 | 0 | 0#include <stdio.h>void main()printf(" X | X | Xn");/注意轉(zhuǎn)義字符n的用法printf("-+-n");printf(" |'n");printf("-+-n");printf(" 0 | 0 | 0'n");/1.2 輸出"Hello world!" 語(yǔ)句#include <stdio.h>voi

2、d main()printf("Hello world!n");/2.1編寫一程序,接受用戶輸入的兩個(gè)整 數(shù),并計(jì)算它們的和、差、積、商,程序運(yùn) 行結(jié)果應(yīng)如下所示。/注意,尖括號(hào)部分表示用戶輸入數(shù)據(jù)或要被 替換的輸出內(nèi)容,尖括號(hào)本身并不需要輸入 或輸出。/多使用幾組整數(shù)嘗試一下,你發(fā)現(xiàn)了什么?/The program gets two integers,and computes their sum,difference,product and quotient./The first number:<第一個(gè)整數(shù)在此輸入 > /The second number:&

3、lt;第二個(gè)整數(shù)在此輸入>/Results as follows:/<第一個(gè)整數(shù)>+<第二個(gè)整數(shù) >=和/<第一個(gè)整數(shù) >-< 第二個(gè)整數(shù) >=差>/<第一個(gè)整數(shù)>*第二個(gè)整數(shù) >=積>/<第一個(gè)整數(shù)>/<第二個(gè)整數(shù) >=商>#include<stdio.h>void main()int a,b;printf("The program gets two integers,and computes their sum,difference,product and

4、 quotient.n");printf("The first number:");/|/+scanf("%d",&a);printf("The second number");scanf("%d",&b);printf("Results as follows:n");printf("%d+%d=%dn",a,b,a+b);printf("%d-%d=%dn",a,b,a-b);printf("%d*%d=%dn&quo

5、t;,a,b,a*b);printf("%d+%d=%fn",a,b,1.0*a/b);/ 做除法時(shí)要注意,除得的結(jié)果是實(shí)數(shù)/2.2輸入半徑r的值,求出圓周長(zhǎng),圓面積#include<stdio.h>#define PI 3.14void main()int r;float zhouchang,mianji;printf("please input r:");scanf("%d",&r);zhouchang=2*PI*r;mianji=2*PI*r*r;printf("zhouchang=%fn"

6、;,zhouchang);printf("mianji=%fn",mianji);/3.1如何實(shí)現(xiàn)下述輸出要求?/A .輸出整數(shù)1234,輸出共占8位,數(shù)據(jù)左 對(duì)齊。/B.輸出整數(shù)1234,輸出共占10位,數(shù)據(jù)右 對(duì)齊。/C .輸出十六進(jìn)制整數(shù)0xFFDE3c02 ,輸出共占8位,數(shù)據(jù)左對(duì)齊。/D .輸出十六進(jìn)制整數(shù)0xFFDE3c ,輸出共占8位,數(shù)據(jù)右對(duì)齊,前補(bǔ)0。/E .輸出浮點(diǎn)數(shù)10.36,輸出共占6位,數(shù)據(jù) 右對(duì)齊。/F.輸出浮點(diǎn)數(shù) 123.4567890,輸出共占12位,精度6位,數(shù)據(jù)右對(duì)齊。/G .輸出浮點(diǎn)數(shù)123.4567890,精度3位,數(shù) 據(jù)左對(duì)齊。#i

7、nclude<stdio.h>#define PI 3.14void main()printf("%-8d'n”,1234);printf("%10d'n”,1234);printf("%-8X'n",0xFFDE3c02);printf("00%X'n",0xFFDE3C);printf("%6.2fn”,10.36);printf("%12.6fn”,123.4567890);printf("%-.3fn”,123.4567890);/3.2編制程序,接受用

8、戶輸入的數(shù)值,輸出 以該值為半徑的圓面積,#include<stdio.h>void main()float r,yuan,qiu,tiji;/分別為半徑,圓面積,球面積,球體積printf("please input r:");scanf("%f",&r);yuan=PI*r*r;qiu=4*PI*r*r;tiji=4.0/3*PI*r*r*r;printf("yuan=%fnqiu=%fntiji=%fn",yuan ,qiu,tiji);/4.1給出一個(gè)百分制成績(jī),要求輸出成績(jī)等級(jí)'A', &

9、#39;B', 'C', 'D', 'E'。/90分以上為A', 8089分為B', 7079分 為'C', 6069分為'D', 60分以下為E'。/分別用if和switch語(yǔ)句實(shí)現(xiàn)。#include<stdio.h>void main()int score;printf("please input score:");scanf("%d",&score);switch(score/10)case 10:case 9:pri

10、ntf("An");break;case 8:printf("B'n");break;case 7:printf("C'n");break;case 6:printf("D'n");break;default:printf("En");/*以下為if結(jié)構(gòu)#include<stdio.h>void main()int score;printf("please input score:");scanf("%d",&s

11、core);if(score>=90)printf("An");else if(score>=80) printf("Bn");else if(score>=70) printf("Cn");else if(score>=60) printf("Dn");elseprintf("En");*/5.1使用循環(huán)結(jié)構(gòu)打印下述圖形,打印行數(shù)n由用戶輸入。圖中每行事實(shí)上包括兩部分,中間間隔空格字符數(shù) m也由用戶輸入。/*/*/* */*/*#include<stdio.h&g

12、t;*void main() int n;/行數(shù)int i,j;變量,j是普通的循環(huán)變量/i為行的循環(huán)printf("please n:");scanf("%d",&n);for(i=1;i<=n;i+)制行數(shù)外層循環(huán)i控for(j=1;j<=n-i;j+)printf("");for(j=1;j<=2*i-1;j+) /輸出星號(hào)printf("*");for(j=1;j<=10;j+)/ 輸出中間的 printf("%d",i);空格for(j=1;j<=

13、i;j+)printf("");printf("%4d",i*j);forQ=2*(n-i+1)-1;j>=1;j-)輸 出printf("n");星號(hào)printf("*");printf("printf("n");-n");/5.3存在自然數(shù),其所有小于自身的因子之/5.2編制程序,按照下述格式打印九九乘法和等于該數(shù),這樣的數(shù)稱為完數(shù)。表。/設(shè)計(jì)算法,判斷某個(gè)給定的自然數(shù)n是否為/Nine - by - nine Multiplication Table完數(shù),要求具有

14、容錯(cuò)處理功能。/#include<stdio.h>void main()/123456789int n;/int sum=0; /sum保存自然數(shù) n的因子之和/11int i;/2 24printf("please input n:");/3 369scanf("%d",&n);/4 48 12 16for(i=1;i<n;i+)/5 5 10 15 20 25if(n%i=0)/6 6 12 18 24 30 36sum+=i;/7 7 14 2128 35 42 49if(n=sum) /注息判斷相等要用=運(yùn)/8 8 16

15、 24 32 40 48 56 64算符,而不是“=”/9 9 18 27 36 45 54 63 72 81printf("yes'n");/elseprintf("no'n");#include<stdio.h>void main()/6.1按照下述格式打印2009年5月日歷:/Calander 2009-5int i,j;/printf("Nine - by - nine Multiplication/SuMo Tu We ThFr SaTable'n");/printf("/12-

16、n");/ 3456789printf("n ");/10111213141516for(i=1;i<9;i+)/17181920212223printf("%4d",i);/24252627282930printf("n/31n");/for(i=1;i<=9;i+)此雙循環(huán)#include <stdio.h>結(jié)構(gòu)為本題核心void main()int i;printf("Calander 2009-5'n");printf("n");printf(&

17、quot; Su Mo Tu We Th Fr Sa'n");printf("n");for(i=0;i<5;i+)printf(" ");for(i=1;i<=31;i+)printf("%4d",i);if(i%7=2) printf("n");printf("nn");/6.2打印所有100至999之間的水仙花數(shù)。所 謂水仙花數(shù)是指滿足其各位數(shù)字立方和為該 數(shù)字本身的整數(shù)。#include<stdio.h> void main() int i,j,

18、k,m; /i,j,k分別表示百位、十 位、個(gè)位數(shù)字for(m=100;m<1000;m+)i=m/100;j=(m-i*100)/10;k=(m-i*100-j*10)%10;if(m=i*i*i+j*j*j+k*k*k) printf("%d'n",m);/6.3接受用戶輸入的正整數(shù)n,計(jì)算 f(n)=1+1/2!+1/3!+1/n!的值。#include<stdio.h>void main()int n,p=1,i;float sum=0;printf("please input n:");scanf("%d&q

19、uot;,&n);for(i=1;i<=n;i+)p=p*i;sum+=1.0/p;printf("sum=%fn",sum);/6.4接受用戶從鍵盤輸入的年份值與月份值,JT印2009年以后(含)任意月份的日歷,2009年前的拒絕打印。#include<stdio.h>void main()int i;/循環(huán)變量int j,day;/j表示周一的位置,day表示月的天數(shù)int year,month,run;/ 輸入的年,月份,run 為 閏年的標(biāo)識(shí)long x=0,x1=0,x2=0;輸入的年月之前共有多少天,x為總天數(shù),x1是之前年天數(shù),x2是

20、 當(dāng)年前面月天數(shù)printf("Pleaseinputyear:");scanf("%d",&year);輸入年份printf("Pleaseinputmonth:");scanf("%d",&month);/ 輸入月份/求得輸入的年月之前有多少天一x=x1+x2,x1是之前年天數(shù),x2是當(dāng)年前面月 天數(shù)/for(i=2009;i<year;i+)if(i%4=0&&i%100!=0)|(i%400=0)/如果i年是閏年x1=x1+366;elsex1=x1+365;if(ye

21、ar%4=0&&year%100!=0)|(year%400=0)run=1;elserun=0;for(i=1;i<month;i+)if(i=4|i=6|i=9|i=11)x2=x2+30;elseif(i!=2)x2=x2+31;else if(i=2&&run=1)/2月份并且是閏年x2=x2+29;elsex2=x2+28;x=x1+x2;/求得輸入的年月之前有多少天一x,然后下面的事可操作/printf("An");printf(" Su Mo Tu We Th Fr Sa'n");printf(

22、"An");/ 確定 星期一 是第幾個(gè)位置,用前面的天數(shù)余7,然后對(duì)應(yīng)位置,這里假定2009年1月1日是星期4,如果不是switch規(guī)則也要更改switch(x+1)%7)case 0:j=4;break;case 1:j=5;break;case 2:j=6;break;case 3:j=7;break;case 4:j=1;break;case 5:j=2;break;case 6:j=3;break;/定輸入的月份有多少天if(month=4|month=6|month=9|month=11)day=30;else if(month!=2)day=31;elseif(

23、month=2&&run=1)/2 月份并且是閏年day=29;elseday=28;/ 確定 j 和 day后,開(kāi)始輸出for(i=1;i<j;i+)/將周一放到正確的位置printf(" ");/每個(gè)位置是 4個(gè)空格for(i=1;i<=day;i+) printf("%4d",i);if(i-(7-j+1)%7=0)printf("n");printf("n");/7.1編程實(shí)現(xiàn)用數(shù)組打印Fibonacci數(shù)列的前20項(xiàng)。#include<stdio.h>void ma

24、in()long a30 , i ;a0 = a1 = 0 ;a2 = 1 ;for( i = 3 ; i < 21 ; i + )ai = ai-1 + ai-2 + ai-3;for( i = 0 ; i < 20 ; i + )if( i != 0 && i%5 = 0 )printf("n");printf( "%dt",ai);/7.2編程實(shí)現(xiàn)從鍵盤輸入的一組數(shù)中找出其 中最大值和最小值。#include<stdio.h>void main()int a10,max,min,i;for(i=0;i<

25、10;i+)scanf("%d”,&ai);max=min=a0; /max min 賦初值for(i=0;i<=9;i+)if(max<ai)max=ai;if(min>ai)min=ai;printf("max=%d,min=%dn",max,min);/7.3編程實(shí)現(xiàn)用一、二維數(shù)組分別輸出楊輝三角#include<stdio.h> /用二維數(shù)組輸出楊輝三角形void main()int a1010,i,j;for(i=0;i<10;i+)/將楊輝三角形中值為1的數(shù)輸入aii=1;ai0=1;for(i=2;i<

26、;10;i+)/從第 3 行第 2 列開(kāi)始,計(jì)算2維數(shù)組中的值,外循環(huán)控制行數(shù)for(j=1;j<=i-1;j+)內(nèi)循環(huán)控制列,結(jié)束條件根據(jù)規(guī)律正好是行數(shù)減1aij=ai-1j+ai-1j-1;for(i=0;i<10;i+)/輸出 2 維數(shù)組for(j=0;j<10;j+)printf("%5d",aij);if(i<j+1) 當(dāng)行數(shù)小于列數(shù) +1就回車,這樣后面的0不輸出 printf("n"); break; /*#include<stdio.h>/用一維數(shù)組輸出楊輝三角形void main() int a10=

27、1,b10=1;int i,j;for(i=0;i<10;i+)外層循環(huán),控制輸出行數(shù),確定每行數(shù)是什么(也相當(dāng)于列了),然后輸出。for(j=1;j<=i;j+)確定每行的數(shù)組元素aj=bj+bj-1;for(j=1;j<=i;j+)/ 保存到數(shù)組b中做備份bj=aj;for(j=0;j<=i;j+)輸出這些數(shù)組元素printf("%5d",aj);printf("n");/ 回車*/8.1編程實(shí)現(xiàn)將二維數(shù)組行列元素互換。#include<stdio.h>void main() int a34,b43;int i,j

28、;for(i=0;i<3;i+)/對(duì)數(shù)組 a 賦值for(j=0;j<4;j+)scanf("%d",&aij);for(i=0;i<3;i+)/得到數(shù)組 bfor(j=0;j<4;j+) b皿i=ai皿 for(i=0;i<4;i+)輸出數(shù)組 bfor(j=0;j<3;j+)printf("%4d",bij);printf("n");/8.2編程實(shí)現(xiàn)求二維數(shù)組中最大元素值及其 行號(hào)、列號(hào)。#include<stdio.h>void main()int a34,max,hang,

29、lie;int i,j;for(i=0;i<3;i+)/對(duì)數(shù)組 a賦值for(j=0;j<4;j+)scanf("%d”,&aij);max=a00; hang=0; lie=0; /賦初值for(i=0;i<3;i+)for(j=0;j<4;j+) if(max<aij) max=aij;hang=i;lie=j;printf("max=%dnhang=%dnlie=%dn",ma x,hang,lie);/8.3假設(shè)有一對(duì)兔子,一個(gè)月后成長(zhǎng)為大兔 子,從第二個(gè)月開(kāi)始,每對(duì)大兔子生一對(duì)小 兔子。不考慮兔子的死亡,設(shè)計(jì)算法求第

30、n個(gè)月的兔子總數(shù)。/此題是楊輝三角形的變型題#include<stdio.h>/用一維數(shù)組輸出楊輝三角形void main()int a10=1,b10=1;int i,j,sum=0,n;scanf("%d",&n);for(i=0;i<n;i+)外層循環(huán),控制輸出行數(shù),確定每行數(shù)是什么(也相當(dāng)于列了), 然后輸出。for(j=1;j<=i;j+)確定每行的數(shù)組元素aj=bj+bj-1;for(j=1;j<=i;j+)/ 保存到數(shù)組b中做備份bj=aj;for(i=0;i<n;i+)sum=sum+ai;printf("

31、;%d'n",sum);/9.1編寫一個(gè)函數(shù) max,用于比較兩個(gè)整數(shù) 的大小。#include<stdio.h>int max(int x,int y)return x>y?x:y;void main()int a,b;scanf("%d%d",&a,&b);printf("max=%dn",max(a,b);/9.2編寫一函數(shù)IsPrime ,判斷某個(gè)大于2的正整數(shù)是否為素?cái)?shù)#include<stdio.h>#include<math.h> int IsPrime(int x

32、)int i;for(i=2;i<=sqrt(x);i+)if(x%i=0)return 0;return 1;void main() int x;scanf("%d",&x);if(IsPrime(x)printf("yes'n");elseprintf("no'n");/10.1編寫一函數(shù)gcd,求兩個(gè)正整數(shù)的最大公約數(shù)/分析:用這兩個(gè)數(shù)的乘積再除以它們的最大公約數(shù)就會(huì)得到他們的最小公倍數(shù)。所以問(wèn)題的關(guān)鍵就變成了求兩個(gè)數(shù)的最大公約數(shù)。代碼如下:#include "stdio.h"m

33、ain()int p,r,m,n,temp;printf("Please input two integer:");scanf("%d,%d",&m,&n);if(m>n)/*將 m和n比較大的數(shù)字放在n中*/temp=n;n=m;m=temp;p=m*n;/*計(jì)算兩個(gè)數(shù)的乘積,為了在后面求最小公倍數(shù)*/while(m!=0)/*用循環(huán)和求余數(shù)的方法計(jì)算m和n的最小大公約數(shù),放在 n中*/r=n%m;n=m;m=r;printf("zuidagongyueshu:%dn",n);printf("zuix

34、iaogongbeishu:%dn",p/n);/*輸出最小公倍數(shù)*/10.2使用遞歸的方法實(shí)現(xiàn)求n!的函數(shù)f(n)#include<stdio.h>long fun(long n)long s;if(n=1) return 1;/*遞歸結(jié)束條件為n=1*/elses=n*fun(n-1);return s;void main()int n;printf("Please input n:");scanf("%ld",&n);printf("%d!=%ld",n,fun(n);/11.1編寫通用的排序的函數(shù)

35、,實(shí)現(xiàn)冒泡、選擇排序方法#include<stdio.h>void maopao(int a,int n)冒泡排序函數(shù)int i,j,t;for(i=0;i<=n-1;i+)for (j=0;j<n-i-1;j+) if (aj>aj+1)t=aj;aj=aj+1;aj+1=t;void xuanze(int a,int n)/ 選擇排序函數(shù)int i,j,t;for(i=0;i<n-1;i+)for(j=i+1;j<n;j+) if(ai>aj) t=ai;ai=aj; aj=t;void main()int a10,i;for(i=0;i&l

36、t;10;i+)scanf("%d”,&ai);maopao(a,10);/xuanze(a,10);for(i=0;i<10;i+)printf("%4d",ai);/11.2給定一個(gè)自然數(shù)n,求其各位數(shù)字之和,重復(fù)上一過(guò)程,一直得到19之間的數(shù)。/例如數(shù)1234的各位數(shù)字之和為10,繼續(xù)計(jì)算,得到10的各位數(shù)字之和為1。/沒(méi)有用子函數(shù),而是通過(guò)goto語(yǔ)句來(lái)反復(fù)運(yùn)算/其實(shí)反復(fù)調(diào)用同樣一種算法就是遞歸,即自 己調(diào)用自己,通過(guò) goto的方式了解了這個(gè)原 理以后,再寫成遞歸函數(shù)的形式就容易些了#include<stdio.h>void m

37、ain()long n; /輸入的數(shù)int s; /各位數(shù)之和scanf("%d",&n);L1: s=0;while(n)s+=n%10;n/=10;if(s>=10)n=s;printf("%d'n",s); /輸出每次求得得和,可做驗(yàn)證用goto L1;printf("%d'n",s);/*遞歸方法#include<stdio.h>int fun(long n)int s=0;s=0;while(n)s+=n%10;n/=10;if(s<10)return s;elsereturn

38、 fun(s);void main()long n; /輸入的數(shù) scanf("%d",&n);printf("%d'n",fun(n);*/11.3題目:編寫一擲骰子游戲,首先由計(jì)算 機(jī)生成一個(gè)隨機(jī)數(shù),/然后接受用戶輸入的字符串“g"命令后生成用戶的隨機(jī)數(shù)(模擬用戶擲了一次骰子),/比較它們的大小,如果用戶得到的隨機(jī)數(shù)小 于計(jì)算機(jī)得到的,則輸出用戶輸了,否則輸 出用戶贏了。#include<stdio.h>#include<stdlib.h>#include<time.h>void main

39、()int jsj;/ 計(jì)算機(jī)將生成的隨機(jī)數(shù)int ren;人產(chǎn)生的隨機(jī)數(shù)srand(unsigned)time(NULL);jsj=rand()%11+2;既然是骰子,假設(shè)2顆,點(diǎn)數(shù)就是 2到12,那么 y=12,x=2,即 rand()%(Y-X+1)+X;printf("computer point:%d(go or not?)",jsj);if(getchar()='g')/如果輸入的是字母gren=rand()%11+2;printf("people point:%dn",ren);if(ren>jsj)printf(&q

40、uot;people winn");elseprintf("computer winn");/11.4編寫一函數(shù),返回1-52之間的隨機(jī)數(shù), 模擬發(fā)不含大小王牌的撲克牌,將生成的隨機(jī)數(shù)映射為每張撲克牌。按照花色(梅花、方塊、紅桃、黑桃)和大 小(210、J、Q、K、A)順序進(jìn)行映射。#include<stdio.h>#include<stdlib.h>#include<time.h>int fun()srand(unsigned)time(NULL);return rand()%52+1;/生成隨即機(jī)數(shù)152void main(

41、)int n,p,i,j;n=fun();i=n%4;/余得得數(shù)就是1 2 3 0中得一個(gè)switch(i)/將余得的數(shù)對(duì)應(yīng)成正確得花色對(duì)應(yīng) ASCII碼case 1:i=5;break;/草花case 2:i=4;break;/方片case 3:i=3;break;/紅桃case 0:i=6;/黑桃j=(n-1)/4+2;將1-52映射成撲克牌 2、3、4、5.14p=j;switch(p)將 11、12、13、14映射成J Q K Jcase 11: p='J'break;case 12: p='Q'break;case 13: p='K'b

42、reak;case 14: p='A'printf("%d'n",n);if(j<=10)printf("%c%d'n",i,p);elseprintf("%c%c'n",i,p);/11.5面向小學(xué)12年級(jí)學(xué)生,隨機(jī)選擇兩個(gè) 整數(shù)和加減法形成算式要求學(xué)生解答。/要求(1)只出10道題,每題10分,程序結(jié) 束時(shí)顯示學(xué)生得分;/ ( 2)確保算式?jīng)]有超出12年級(jí)的水平,只允許進(jìn)行50以內(nèi)的加減法,不允許兩數(shù)之和 或之差超出050的范圍,負(fù)數(shù)更是不允許的;/ (3)每道題學(xué)生有三次機(jī)會(huì)輸入答案

43、,當(dāng)學(xué) 生輸入錯(cuò)誤答案時(shí),提醒學(xué)生重新輸入,如 果三次機(jī)會(huì)結(jié)束則輸出正確答案;/ (4)對(duì)于每道題,學(xué)生第一次輸入正確答案得10分,第二次輸入正確答案得7分,第三次輸入正確答案得5分,否則不得分;/ (5)當(dāng)學(xué)生輸入了正確得數(shù)后,隨機(jī)顯示評(píng)價(jià)結(jié)果,例如"Right!"、"Correct!" , "That's the answer"等,/若答案錯(cuò)誤,則按照 "No,the answer is"輸 出答案。#include<stdio.h>#include<stdlib.h>#incl

44、ude<time.h>/fun2: 計(jì)算學(xué)生每題得分/int fun2(int a3)int x; /x為學(xué)生輸入的結(jié)果 scanf("%d",&x);if(x=a3)return 10;elseprintf("wrong,again:");scanf("%d",&x);if(x=a3)return 7;elseprintf("wrong,again:"); scanf("%d",&x);if(x=a3)return 5; elsereturn 0;/funl

45、: 減法以及相應(yīng)標(biāo)準(zhǔn)答案 int fun1(int a1,int a2) int a3;char bln;標(biāo)識(shí)if(rand()%2=1)不妨設(shè)置1為加法, a3=a1+a2; bln='+' else a3=a1-a2; bln='-'確定運(yùn)算是加法還是/標(biāo)準(zhǔn)答案;/加法或減法的/只產(chǎn)生0或1,0為減法printf("%3d%2c%3d=",a1,bln,a2);return fun2(a3);/ / void main()int a1,a2,i,sum=0;/a1 a2 為計(jì)算機(jī)隨機(jī)生成的數(shù),sum為最終學(xué)生得分。srand(unsign

46、ed)time(NULL);/ 做種for(i=1;i<=10;i+)a1=rand()%26;/產(chǎn)生第一個(gè)隨機(jī)數(shù),根據(jù)題目要求,這個(gè)數(shù)要 >=0,<=25a2=rand()%26;while(a1<a2)/ 產(chǎn)生的第二個(gè)隨機(jī)數(shù)要比第一個(gè)數(shù)小,以便做減法 運(yùn)算;a1<a2,不能是a1<=a2,因?yàn)閷懗蒩1<=a2的 話,如果a1=0就進(jìn)行不下去了a2=rand()%26;printf("(%d)”,i);/輸入題目標(biāo)號(hào); sum=sum+fun1(a1,a2);printf("");printf("nYour t

47、otal score is:%4dn",sum);/12.1編寫函數(shù),求包含 n個(gè)元素的整數(shù)數(shù)組 中元素的平均值。要求在函數(shù)內(nèi)部使用指針操縱數(shù)組元素。#include<stdio.h>float fun(int *p) float sum=0;int *q=p;for(;p<q+10;p+)sum=sum+*p;return sum/10;void main()int a10;int i;float ave;for(i=0;i<10;i+)scanf("%d”,&ai);ave=fun(a);/調(diào)用fun函數(shù)計(jì)算平均值,參數(shù)傳遞方式為:數(shù)組名

48、做實(shí)參,傳遞 的是地址printf("%fn",ave);/12.2題目:獨(dú)立實(shí)現(xiàn)標(biāo)7B字符串庫(kù)的 strcmp 函數(shù)。/題意是編寫一個(gè)自定義函數(shù),實(shí)現(xiàn) strcmp函 數(shù)的功能,而不是讓我們?nèi)フ{(diào)用 strcmp函 數(shù)。/那么做題之前就要弄清楚strcmp的原型及含義,查書后附錄的函數(shù)表可找到。#include<stdio.h>int fun(char *p,char *q)int i;for(i=0;(*(p+i)!=''0')|(*(q+i)!='0');i+)if(*(p+i)>*(q+i)return 1;i

49、f(*(p+i)<*(q+i)return -1;return 0;void main()char a100;char b100;int x;printf("please input string a:");gets(a);printf("please input string b:");gets(b);x=fun(a,b);/數(shù)組名做實(shí)參,傳遞的是地址printf("%d'n",x);/13.2接受用戶輸入的整數(shù)n,隨機(jī)生成n個(gè)0100間的整數(shù)使用動(dòng)態(tài)數(shù)組存儲(chǔ)所有元素,分別統(tǒng)計(jì) 059, 6084, 85100之間的元

50、素個(gè)數(shù)。#include<stdio.h>#include<stdlib.h>#include<time.h>#include<malloc.h>int fun(int *p,int n,int x,int y) /參數(shù)分別 是:數(shù)組、元素個(gè)數(shù)、下限、上限int i,num=0;for(i=0;i<n;i+)if(*(p+i)>=x&&*(p+i)<=y)num+;return num;void main()int n,i,num1,num2,num3;int *p=NULL;printf("pleas

51、e input n:");scanf("%d",&n);p=(int *)malloc(sizeof(int)*n);生成動(dòng)態(tài)數(shù)組(生成一段連續(xù)空間,p指向其首地址)srand(unsigned)time(NULL);for(i=0;i<n;i+)/ 對(duì)確定的動(dòng)態(tài)數(shù)組賦值*(p+i)=rand()%101+1;for(i=0;i<n;i+)/輸出10個(gè)數(shù)printf("%4d",*(p+i);num1=fun(p,n,0,59);計(jì)算各區(qū)間數(shù)的個(gè)數(shù)num2=fun(p,n,60,84);num3=fun(p,n,85,100

52、);free(p);/清空分配的內(nèi)存printf("nnum1=%2dnnum2=%2dnnum3= %2dn",num1,num3,num3);/14.1給定字符串s,其內(nèi)容為英語(yǔ)長(zhǎng)句,其 中包含英語(yǔ)單詞、標(biāo)點(diǎn)符號(hào)、空格等內(nèi)容每個(gè)英語(yǔ)單詞使用標(biāo)點(diǎn)符號(hào)、一個(gè)或多個(gè)空 格分隔。將英語(yǔ)長(zhǎng)句分隔成英語(yǔ)單詞序列輸 出,并輸出其單詞數(shù)目。#include<stdio.h>#include<string.h>int fun(char *s)char *p=NULL,*q=NULL; /p 表示每個(gè)單詞的初始位置,q表示每個(gè)單詞的結(jié)束位 置int num=0;p=

53、q=s;while(*p!='0')/p 從字符串s的初始位開(kāi)始,直到 s最后。for(;p<s+strlen(s);p+) /確定 p 的位置,p是每個(gè)單詞第一個(gè)字母位置if(*p>='a'&&*p<='z')|(*p>='A'&&*p<='Z')num+;break;for(q=p;(*q>='a'&&*q<='z')|(*q>='A'&&* q<

54、='Z');q+)/確定q的位置,q是每個(gè)單詞結(jié)束位置for(;p<q;p+)/輸出單詞putchar(*p);putchar('n');return num;void main()char s100;puts("please input article:");gets(s);printf("number of word:%dn",fun(s);/14.2有3個(gè)學(xué)生,每個(gè)學(xué)生的數(shù)據(jù)包括學(xué)號(hào)、三門課的成績(jī),/要求用input函數(shù)實(shí)現(xiàn)從鍵盤輸入學(xué)生數(shù) 據(jù),用average函數(shù)求每個(gè)人的平均分/用output函數(shù)打印學(xué)生數(shù)

55、據(jù)及平均成績(jī)。#include<stdio.h>struct student/定義全局結(jié)構(gòu)體類型studentint number;float score3;float average(struct student p)計(jì)算平均值函數(shù),形參是結(jié)構(gòu)體變量int i;float sum=0;for(i=0;i<3;i+)sum=sum+p.scorei;return sum/3;void output(struct student *stu)輸出結(jié)構(gòu)體函數(shù),形參是結(jié)構(gòu)體指針int i,j;printf("n");for(i=0;i<3;i+)printf

56、("%d:",stui.number);for(j=0;j<3;j+)printf("%6.2f",stui.scorej);printf("ave=%.2fn",average(stui);/ 題目中說(shuō)用output函數(shù)輸出平均值,而平均值又讓編寫成 一個(gè)函數(shù),那么這里采用out中調(diào)用average函數(shù)。printf("n");void input(struct student *stu)/ 對(duì)結(jié)構(gòu)體數(shù)組賦值函數(shù),形參是結(jié)構(gòu)體指針int i,j;for(i=0;i<3;i+)printf("stu%dnnum:",i+1);scanf("%d",&stui.number);printf("score:");for(j=0;j<3;j+)scanf("%f",&(stui.scorej);voi

溫馨提示

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