計(jì)算機(jī)軟件基礎(chǔ)那些題那些答案_第1頁(yè)
計(jì)算機(jī)軟件基礎(chǔ)那些題那些答案_第2頁(yè)
計(jì)算機(jī)軟件基礎(chǔ)那些題那些答案_第3頁(yè)
計(jì)算機(jī)軟件基礎(chǔ)那些題那些答案_第4頁(yè)
計(jì)算機(jī)軟件基礎(chǔ)那些題那些答案_第5頁(yè)
已閱讀5頁(yè),還剩72頁(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)介

計(jì)算機(jī)軟件基礎(chǔ)實(shí)驗(yàn)指導(dǎo)書(shū)參考程序【1-1】在屏幕上顯示你的學(xué)號(hào)、姓名和專(zhuān)業(yè),分別各占一行顯示。#include<stdio.h>main(){printf(M081\n王力\n計(jì)算機(jī)應(yīng)用\n");)[1-2]如何在屏幕上顯示下列圖形?#include<stdio.h>main(){printf(M*****\n**);printf(M***\nn);printf(H*\n,f);}【例2-1】求正方形的面積和周長(zhǎng)源程序:#include<stdio.h>main()inta=6,zhou,mian;zhou=4*a;mian=a*a;/*用類(lèi)型名inta=6,zhou,mian;zhou=4*a;mian=a*a;/*計(jì)算周長(zhǎng)*//*計(jì)算面積*/printf("周長(zhǎng)=%由面積=%d\n",zhou,mian);/*用printf函數(shù)輸出整型數(shù)格式控制為:%d*/)運(yùn)行結(jié)果:周長(zhǎng)=24,面積=36[2-1]求半徑為2.3的圓的周長(zhǎng)和面積。#include<stdio.h>main(){doubler=2.3,l,s,pi=3.142;l=pi*2*r;s=pi*r*r;printf("圓半徑二%lf,周長(zhǎng)二%lf,面積=%lf\n”,r,l,s);)[2-2]任意輸入兩個(gè)基本整型數(shù),其中一個(gè)為正,另一個(gè)為負(fù),分別做被除數(shù)和除數(shù)時(shí),輸出它們的余數(shù)。#include<stdio.h>main(){inta,b;printf("請(qǐng)輸入一個(gè)正整數(shù)和一個(gè)負(fù)整數(shù):”);scanf("%d%d';&a,&b);printf("a=%d,b=%d,a%b=%d\n",a,b,a%b);printf("b=%d,a=%d,b%a=%d\n",b,a,b%a);}c=5x(/-32)【例2-2】任意輸入一個(gè)華氏溫度求對(duì)應(yīng)的攝氏溫度。計(jì)算公式如下: 9 ,式中:C表示攝氏溫度,f表示華氏溫度。源程序:#include<stdio.h>main()doublef,c; /*定義兩個(gè)雙精度的實(shí)型數(shù)*/printf(uEnterf:w);/*輸入提示*//*調(diào)用scanf函數(shù)給雙精度的實(shí)型變量賦值,格式控制為%lf,變量名前要加地址操作符&*/scanf("%ir,&0;c=5*(f-32)/9; 尸根據(jù)公式求攝氏度*/printf("\nf=%f,c=%f\n",f,c);運(yùn)行結(jié)果:Enterf:80f=80.000000,c=26.666667Enterf:100f=100.000000,c=37.777778二、程序改錯(cuò)不允許增加行也不允許刪除行,也不得更改程序的結(jié)構(gòu)。1>已知a=3,b=5,輸出a+b的和值源程序:#include"stdio.h"main(){/********Cund********/inta=3;b=5;sum;sum=a+b;printf("sum=%d\n”,sum);}2、任意輸入兩個(gè)實(shí)型數(shù),輸出它們的積。源程序:#include"stdio.h"main()doublex,y;printf("在鍵盤(pán)上給x.y賦值:");/********found********/scanf( ,x,y);printf( ,x*y?x*y);3、分別輸出234的每一位數(shù)字。源程序:#include"stdio.h"main()intx=234,a,b,c;a=x/100;/********l^und********/b=x%100;/********^jund********/c=x/10;printf(“a=%d,b=%d,c=%d\n”,a,b,c);改錯(cuò)1題:inta=3;b=5;sum;改為inta=3,b=5,sum;改錯(cuò)2題:scanf( ,x,y);改為:scanf("%lf%lf",&x,&y);改錯(cuò)3題:b=x%100;改為:b=x/10%10; c=x/10;改為:c=x%10;【例3-1]輸出a=3,b=9中大的數(shù)。源程序:#include"stdio.h"main()inta=3,b=9,max;/*使用if-else分支結(jié)構(gòu)*/if(a>b)max=a;elsemax=b;printf(Mmax=%d\nn,max);【3-1】任意輸入一個(gè)整數(shù),如果能被3整除,輸出此數(shù);否則,輸出”不是3的倍數(shù)#include<stdio.h>main(){intn;printf("請(qǐng)輸入整數(shù):”);scanf("%d",&n);if(n%3==0)printf("%d\n",n);elseprintf("不是3的倍數(shù)\n");【例3-2】計(jì)算分段函數(shù),(x20)廣?3x3+1 (x<0)源程序:I#include"stdio.h"#include"math.h^^/*程序中調(diào)用了數(shù)學(xué)庫(kù)函數(shù),需包含頭文件malh.h*/main()doublex,y;printf(uEnterx:w);scanf(M%lf\&x);if(x>=0)y=sqrt(x); /*調(diào)用開(kāi)方函數(shù)sqrt()計(jì)算*/elsey=3*pow(x,3)+l; /*調(diào)用塞函數(shù)pow()計(jì)算*/printf(',\nx=%.21f,y=%f\n,,,x,y); /*%.21f保留兩位小數(shù)輸出*/運(yùn)行結(jié)果:Enterx:3x=3.00,y=1.732051Enterx:-4x=-4.00,y=-191.000000【3?2】編寫(xiě)程序,輸入x,利用分段函數(shù),計(jì)算并輸出y值。y=Ixl(xWO)y=ex(x>0)#include<stdio.h>#include<math.h>main(){doublex,y;printf(”請(qǐng)輸入實(shí)數(shù)x:");scanf(n%lf\&x);if(x<=0)y=fabs(x);elsey=exp(x);printf(,,y=%f\n,,,y); /*或printf(My=%lf\nM,y);*/L程序改錯(cuò)不允許增加行也不允許刪除行,也不得更改程序的結(jié)構(gòu)。1、任意輸入一個(gè)數(shù),如果是奇數(shù)輸出“奇數(shù)”,否則,輸出“偶數(shù)”源程序:#include“stdio.h"main()intx;printf(uEnterx:");scanf("%d",&x);/********found********/ifx%2!=0printf(“奇數(shù)”);elseprintf("偶數(shù)”);輸入輸出示例(共運(yùn)行2次)第一次運(yùn)行:Enterx:10偶數(shù)第一次運(yùn)行:Enterx:11奇數(shù)2、輸入x,計(jì)算并輸出下列分段函數(shù)y的值(保留一位小數(shù).1rx(xwo)0 (x=0)源程序:#include“stdio.h"main()intx;doubley;printf(uEnterx:w);scanf("%d”,&x);/********f^)und********/if(x!=0);/********Rjund********/y=l/x;elsey=0;printf(ay=%.lftnn,y);輸入輸出示例(共運(yùn)行2次)第一次運(yùn)行:Enterx:10y=0.1第二次運(yùn)行:Enterx:0y=0.0改錯(cuò)1題:ifx%2!=0改為if(x%2!=0)改錯(cuò)2題:if(x!=0);改為if(x!=0)y=l/x;改為:y=1.0/x;勢(shì)【例4-1]求<=>源程序:#include"stdio.h"main()/*變量sum用來(lái)放累加和,和值從0開(kāi)始;i用來(lái)取1?5中的數(shù),同時(shí)也控制循環(huán)次數(shù)*/inti,sum=O;for(i=l;i<=5;i++) /*循環(huán)體執(zhí)行5次*/sum=sum+i; /*反復(fù)累加5次i的值*/printf(,,sum=%d\n,,,sum);運(yùn)行結(jié)果:sum=15[4-1]求l+2+3+...+n的和。#include<stdio.h>main(){inti,n,sum=O;printf("請(qǐng)輸入n值:”);scanf(M%d,,,&n);for(i=l;i<=n;i++)sum=sum+i;printf(Ml+2+3+...+%d=%d\nM,n,sum);【例4?2】求l?2+3?4+。。。。。。n的值源程序:#include<stdio.h>main()inti,f=l,n,sum=O; /*變量f用來(lái)存放正負(fù)號(hào)*/printf(HEntern:n);scanf("%d",&n);fbr(i=l;i<=n;i++){sum=sum+i*f;f=-f; /*改變正負(fù)號(hào)*/printf(,,\nsum=%d\n,\sum);運(yùn)行結(jié)果:Entern:5sum=3【4?2】求1-1/3+1/5//7+…+l/n的和。#include<stdio.h>main(){inti,n,f=-l;doublesum=O;printf("請(qǐng)輸入n值:”);scanf(n%d'\&n);for(i=l;i<=n;i=i+2){sum=sum+f*1.0/i;/*加數(shù)為f*LO/i*/f=-f; /*求下一個(gè)加數(shù)的符號(hào)值*/printf("結(jié)果為%f\n",sum);【例4-3】求1X2X3X4X5的積。(即求5!)源程序:#include<stdio.h>main()inti,t=l; /*t用來(lái)放階乘值*/fbr(i=l;i<=5;i+4-)printf(M%d!=%d\nH,5,t);l行結(jié)果:5!=120[4-3]任意輸入兩個(gè)正整數(shù)m和n,求m!+n!的值。#include<stdio.h>main(){inti,m,n,tl=l,t2=l,sum;printf("請(qǐng)輸入m和n的值:”);scanf("%d,%d”,&m,&n);for(i=l;i<=m;i+4-)tl=tl*i;for(i=l;iv=n;i++)t2=t2*i;sum=tl+t2;printf(n%d!+%d!=%d\nn,m,n,sum);二、程序改錯(cuò)不允許增加行也不允許刪除行,也不得更改程序的結(jié)構(gòu)。1、改正下列程序中的錯(cuò)誤,計(jì)算表達(dá)式1+2+3+。。。。。+100的值源程序:#include"stdio.h"main()j/********l^und********/

inti,sum;for(i=l,i<=100,i++)sum=sum+i;printf(asum=%d\nff,sum);2行結(jié)果(改正后程序的運(yùn)行結(jié)果)sum=50502、輸出三位數(shù)中能夠被300整除的數(shù)。源程序:#include<stdio.h>main()inti;/********f^)und********/for(i=100;i<=999;i++);if(i%300==0)printf(H%5dM,i);運(yùn)行結(jié)果:300600900改錯(cuò)1題:(1)inti,sum;改為:inti,sum=0;(2)for(i=14<=100,i++)改為for(i=l;i<=100;i++)改錯(cuò)2題:for(i=100;i<=999;i++);改為:for(i=100;i<=999;i++)【例5?1】任意輸入一個(gè)字符,如果是小寫(xiě)字母字母以大寫(xiě)字母輸出,是大寫(xiě)字母以小寫(xiě)字母輸出;否則,按原樣輸出。源程序:#include<stdio.h>charch;printf(charch;printf(,,Enterch:n);ch=getchar();if(ch>='a,&&ch<='z,)putchar(ch-32);/*調(diào)用字符輸入函數(shù)getchaK)從鍵盤(pán)輸入一個(gè)字符*//*判斷ch變量?jī)?nèi)容是否是小寫(xiě)字母刃/*輸出存放在變量ch中的字符*/elseif(ch>=A&&chv=Z)/*判斷ch變量?jī)?nèi)容是否是大寫(xiě)字母號(hào)putchar(ch+32);elseputchar(ch);}【5.1】任意輸入一個(gè)字符,如果是數(shù)字字符,則輸出相應(yīng)的數(shù)字,是空格輸出它的ASCII碼值;否則,原樣輸出。提示:例:5;。=5#include<stdio.h>main(){charch;ch=getchar();if(ch>=,0,&&ch<=,9')printf("%d\n”,ch?O);elseif(ch=='')printf(n%d\n",ch);elseprintf(M%c\n",ch);/*putchar(ch);*/【例5-2】輸入十個(gè)字符,統(tǒng)計(jì)其中的空格、回車(chē)和其它字符個(gè)數(shù)。源程序:#include<stdio.h>main()charch;inti,numl=O,num2=O,num3=O;for(i=l;i<=10;i++){ch=getchar(); /*循環(huán)一次給變量ch賦值"次if(ch=='')numl=numl+l;/*統(tǒng)計(jì)空格個(gè)數(shù)*/elseif(ch=='\n')num2=num2+];/*統(tǒng)計(jì)回車(chē)個(gè)數(shù)*/elsenum3=num3+l;/*統(tǒng)計(jì)其它字符個(gè)數(shù)*/printf("空格二%&回車(chē)=%d,其它=%d\n”,numl,num2,num3);[5-2]輸入n個(gè)字符統(tǒng)計(jì)其中數(shù)字字符、*號(hào)和字母的個(gè)數(shù)。#include<stdio.h>main(){charch; /*定義字符型變量*/inti,n,numl=O,num2=O,num3=O;/*i計(jì)數(shù)變量,其它變量計(jì)各類(lèi)字符的個(gè)數(shù)*/printf(”請(qǐng)輸入要統(tǒng)計(jì)的字符的個(gè)數(shù)n的值:”);scanf(n%d'\&n); /*給n賦值*/for(i=l;i<=10;i++) /*for循環(huán)控制函數(shù)體執(zhí)行n次*/{ch=getchar(); /*循環(huán)一次給變量ch賦值一次*/if(ch>=,0'&&ch<=,9')numl=numl+l;/*統(tǒng)計(jì)數(shù)字個(gè)數(shù)*/elseif(ch==**)num2=num2+l;/*統(tǒng)計(jì)*號(hào)個(gè)數(shù)*/elseif((ch>=,a'&&ch<=,z,)II(ch>=,A,&&ch<=,Z,))num3=num3+l;/*統(tǒng)計(jì)字母?jìng)€(gè)數(shù)*/printf("共輸入%d個(gè)字符\n",n);printf("數(shù)字%(1個(gè),*號(hào)%(1個(gè),字母%出11”,1111015111112,1111013);/*輸出統(tǒng)計(jì)結(jié)果*/【例5-3】輸入x,計(jì)算并輸出下列分段函數(shù)y的值。x3C0<x<5)y=Inx(5Wxv10)IxlVx<0)源程卜:#include<stdio.h>#include<math.h>main()floatx,y; /*定義兩個(gè)單精度的實(shí)型變量*/printf(HEnterx:M);scanf(M%r,&x); /*給單精度變量賦值,格式控制為:%f*/if(x>0&&x<5) /*不能表示為:0vx<5*/y=pow(x,3);elseif(x>=5&&x<10)y=log(x);elseif(x<0)y=fabs(x);printf(,,\nx=%f,y=%f\nM,x,y);[5-3]輸入x,計(jì)算并輸出分段函數(shù)y的值。當(dāng)x<0時(shí)y=0當(dāng)OWxvlO時(shí)y=9x/2當(dāng)x210時(shí)y=4.5x-8.5x#include<stdio.h>#include<math.h>main(){floatx,y; /*定義兩個(gè)單精度的實(shí)型變量*/printf("Enterx:M);scanf(H%r,&x); /*給單精度變量賦值,格式控制為:%f)7if(x<0)y=0;elseif(x<10)y=9*x/2;elsey=4.5*x-8.5*x;printf(,'\nx=%f,y=%f\n,,,x,y);【例5-4】任意輸入year,判斷是否是閏年,判斷閏年的條件:能被4整除但不能被100整除,或者能被400整除。源程序:#include<stdio.h>main()intyear;printf(uEnteryear:'1);scanf("%d”,&year);if(year%4==0&&year%100!=0llyear%400=0)printf("yesM);elseprintf("noH);【5-4】任意輸入一個(gè)數(shù),判斷是否是偶數(shù),是,輸出“yes”;否則,輸出“n?!?。#include<stdio.h>main(){intn;/*定義變量*/printf("請(qǐng)輸入n的值:");scanf("%d",&n); /*給變量n賦值*/if(n%2==0)printf("yes\n");/*偶數(shù)輸出“yes”*/elseprintf("no\n");/*不是偶數(shù)輸出“no”*/【例5-5】任意輸入一個(gè)人的成績(jī),輸出相應(yīng)的成績(jī)等級(jí)。100-90:等級(jí)A、89-80:等級(jí)B、79-70:等級(jí)C、69-60:等級(jí)D,其它等級(jí)E源程序:#include<stdio.h>main()(intx;printf('Enterx:H);scanf(M%dM,&x);switch(x/10) /*成績(jī)除以10取整數(shù)*/(case10:case9:printf("A");break;/*br6ak語(yǔ)句:提前退出switch語(yǔ)句*/case8:printf(uBn);break;case7:printf(HC°);break;case6:printf(',DH);break;default:printf(,TET,);【5-5】輸入10個(gè)字符,分別統(tǒng)計(jì)空格、回車(chē)和其它字符出現(xiàn)的次數(shù)。#include<stdio.h>main(){charch;inti,nl=0,n2=0,n3=0;/*i循環(huán)變量,其它變量用來(lái)計(jì)數(shù)*/printf("請(qǐng)輸入10個(gè)字符:");for(i=l;i<=10;i++){scanf("%c",&ch);/*給ch賦值*/switch(ch) /*判斷字符類(lèi)型計(jì)數(shù)*/{casenl=nl+l;break;/*是空格*/case\n':n2=n2+l;break;/*是回車(chē)*/default:n3=n3+l;})}【例5-6]任意輸入三角形的三條邊判斷能否構(gòu)成三角形(1)能,再判斷能否構(gòu)成等邊三角形,能輸出面積;否則,不輸出任何信息。提示:三角形面積公式:a+b+c和area=Js(s—a)(s—b)(s-c)(2)不能構(gòu)成三角形,輸出“NO”。源程序:#include<stdio.h>#include<math.h>main(){intx,y,z;doubles,area;printf(nEnterx,y,z:");scanf(n%d%d%dM,&x,&y,&z);if(x+y>z&&x+z>y&&y+z>x){if(x==y&&y==z&&x=z){s=1.0/(x+y+z);area=sqrt(s*(s-x)*(s-y)*(s-z));printf("面積=%f\n",area);}}elseprintfCNO”);[5-6]任意輸入一個(gè)數(shù),判斷是否是2~100之間的數(shù):(1)是,判斷是否是3的倍數(shù),是,輸出此數(shù);否則,不輸出。(2)不是,輸出”輸入錯(cuò)誤,#include<stdio.h>main(){intn;/*定義變量n為int類(lèi)型*/printf("請(qǐng)輸入一個(gè)數(shù)n:");scanf("%d",&n); /*給n賦值*/if(n>=2&&n<=100)/*判斷n在2~100之間*/{if(n%3==0)printf("%d\n",n);}/*再判斷n是否能被3整除*/elseprintf("輸入錯(cuò)誤\n");/*n不在2~100之間輸出“輸入錯(cuò)誤”*/}二、程序改錯(cuò)不允許增加行也不允許刪除行,也不得更改程序的結(jié)構(gòu)。1、計(jì)算下面分段函數(shù)的值r+5 (x<0)f(x)=[x2-x+3(0^x<10)4x-7 (x210)源程序:main()intx,y;/********fQund********/scanf("%d”,x);if(x<0)y=x+5;/********^Qund********/elseif(x<10)y=xA2-x+3;/********Cund********/elsey=4x-7;printf(“y=%d",y)2、給變量b和c賦值,然后輸出它們的值。源程序:main()inta=2,b,c;if(a>l)/******* nd********/b=l;c=3;elseb=2;printf("%d,%d\n”,b,c);改錯(cuò)1題(I)scanf("%d”,x);改為:scanf("%d",&x);elseif(x<10)y=xA2-x+3;改為elseif(xvlO)y=x*x?x+3;elsey=4x-7;改為:elsey=4*x-7;改錯(cuò)2題:b=l;c=3;改為:{b=l;c=3;}【例6?1】求1+2+3+4+5的和。源程序:#include"stdio.h"main()inti=l,sum=0; /*變量賦初值*/while(i<=5) /*循環(huán)的終止條件,每次進(jìn)入循環(huán)體先判斷*/

sum+=i;i++; /*循環(huán)變量增量*/)printf("i=%d,sum=%d\n'\i,sum);}運(yùn)行結(jié)果:i=6,sum=!5[6-1]求1-2+3-4+5的和。#include<stdio.h>main(){intf=l,sum=O,i=l;while(i<=5){sum+=i*f;f=-f;i++; )printf("l-2+3-4+5=%d\n",sum);【例6-2】輸入一個(gè)正實(shí)數(shù)eps,計(jì)算并輸出下式的值,直到最后一項(xiàng)的絕對(duì)值小于eps。4710(例如程序運(yùn)行后,eps被輸入0.0001)。源程序:#include"stdio.h"#include"math.h"main(){doubleeps,sum=0,f=1,t=1;intn=1;printf(uEntereps:M);scanf(H%lf;&eps); /*輸入一個(gè)特別小的數(shù)*/while(fabs(t)>=eps)sum=sum+t;f=-fsum=sum+t;f=-f;/*正負(fù)號(hào)轉(zhuǎn)變*/n=n+3; /*控制分母*/t=f7n;)printf(',\nsum=%f\n,,,sum);運(yùn)行結(jié)果:Entereps:le-4sum=0.835599【6-2】輸入一個(gè)正實(shí)數(shù)eps,計(jì)算并輸出下式的值,直到最后一項(xiàng)小于eps。1 3 5s= 1 1x2 2x3 3x4#include<stdio.h>#include<math.h>main(){doublet=1.0/2,a=I,b=1,c=1,d=2,eps,s=0;scanf(H%lfn,&eps);while(fabs(t)>=eps){s=s+t;a=-a;b=b+2;c=c+l;d=d+l;t=a*b/(c*d);}printf(w%ir,s);【例6?3】從鍵盤(pán)輸入一批學(xué)生的成績(jī)(以負(fù)數(shù)為結(jié)束標(biāo)志),計(jì)算平均分,并統(tǒng)計(jì)不及格成績(jī)的個(gè)數(shù)。源程序:#include<stdio.h>main()floatgrade,ave=O; /*變量ave用來(lái)存放總成績(jī)和平均分*/intn=0,m=0;printf('Entergrade:u);scanf("%fgrade); /*輸入第一個(gè)成績(jī)*/while(grade>=0) /*輸入數(shù)據(jù)大于等于0時(shí),執(zhí)行循環(huán)*/ave=ave+grade;n++; /*統(tǒng)計(jì)學(xué)生人數(shù)*/if(grade<60)m++; /*統(tǒng)計(jì)不及格人數(shù)*/scanf(n%f\&grade); /*輸入一個(gè)新數(shù)據(jù)為下一次循環(huán)做準(zhǔn)備*/ave=ave/n;printf("平均分=%f,不及格人數(shù)=%d\n”,ave,m);[6-3]讀入一批正整數(shù)(以零或負(fù)數(shù)為結(jié)束標(biāo)志),求其中的奇數(shù)和。#include<stdio.h>main(){inta,s=O;printf(*'Enternumber:");scanf(H%dn,&a); /*輸入第一個(gè)數(shù)*/while(a>0) /*輸入數(shù)據(jù)大于0時(shí),執(zhí)行循環(huán)*/{ if(a%2!=0) /*如果輸入數(shù)據(jù)為奇數(shù),求和*/s=s+a;scanf("%d”,&a);/*輸入一個(gè)新數(shù)據(jù)為下一次循環(huán)做準(zhǔn)備"printf("奇數(shù)和二%d\n”,s);二、程序改錯(cuò)不允許增加行也不允許刪除行,也不得更改程序的結(jié)構(gòu)。1、下述程序按由大到小的順序輸出10以內(nèi)的正整數(shù)。源程序:main()intk=10;while(k>0)/********^jund********/printf(a%d,n,k);k=k-l;2、修改下列程序,使之能夠正確輸出1?20之間的數(shù)的和(輸出一次和值)。源程序:main()inti=l,sum=0;/******他und******/while(i<=20);{sum+=i;i++;printf("%d\n,",sum);改錯(cuò)1題:printf(M%d,M,k);k=k-1;改為:{printf(*'%d,M,k);k=k-1;}或printf(M%d,n,k),k=k?l;或prinlf("%d,”,k--);改錯(cuò)2題:while(i<=20);改為:while(i<=20)三、程序填空注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1、從鍵盤(pán)上輸入若干學(xué)生的成績(jī),統(tǒng)計(jì)并輸出最高成績(jī)和最低成績(jī),當(dāng)輸入負(fù)數(shù)時(shí)結(jié)束輸入。源程序:main()floatx,amax,amin;scanf(n%f;&x);amax=x;amin=x;while([1] ){if(x>amax)amax=x;if([2] )amin=x;scanf(”%f”,&x);printf(,'\nmax=%f\nmin=%f\n'\amax,amin);2、從鍵盤(pán)輸入多個(gè)字符,直到遇到回車(chē)換行符為止,分別統(tǒng)計(jì)其中字母、數(shù)字字符和其他字符的個(gè)數(shù)。源程序:#include<stdio.h>main(){charch;intletter=0,digit=0,other=0;while([1] )if((ch>='a,&&ch<=,zf)ll(ch>='A'&&ch<=2))letter++;elseif(ch>='0'&&ch<=,9,)digit++;elseother++;printf("letter=%d,digit=%d,other=%d,',letter,digit,other);3、輸入?個(gè)實(shí)數(shù)x,計(jì)算并輸出下式的值,直到最后?項(xiàng)的小于10?5(保留兩位小數(shù))。源程序:#include"stdio.h"main()floatx,t,s=O;inti=l;scanf(M%f\&x);t=x;while(t>=le-5)s=s+t;i++;t=t*x/i;printf(us=%.2f',s);填空1題(1)x>=0 (2)x<amin填空2題:(ch=getchar())!=’\nf【例求l+3+5+7+oooooo+n的和。源程序:#include"stdio.h"main()inti=l,n,sum=0;printf("Entern:M);scanf(H%dn,&n);dosum+=i;i++;}while(i<=n); /*先執(zhí)行一次循環(huán)體,在判斷循環(huán)終止條件*/printf(,,sum=%d,i=%d\n,,,sumj);運(yùn)行結(jié)果:sum=15,i=6【7-1】求357〃的值#include"stdio.hMmain()inti=l,n,f=l;doublesum=0;printf("Entern:M);scanf(M%d*',&n);do{ sum+=f*1.0/i;i=i+2;f=-f;}while(iv=n);/*先執(zhí)行一次循環(huán)體,在判斷循環(huán)終止條件*/printf("sum=%f,i=%d\nn,sum,i);【例7?2】輸入一個(gè)整數(shù),求它的位數(shù)。例如,123的位數(shù)是3。源程序:#include"stdio.h"main()inti=O,n;printf(uEntern:H);scanf(M%dM,&n);don=n/10;i++; /*i用來(lái)統(tǒng)計(jì)位數(shù)*/)while(n); /*while(n)等價(jià)于while(n!=0)*/printf(,,i=%d\n,,,i);【7?2】輸入一個(gè)整數(shù),求它的位數(shù)以及各位數(shù)字之和。例如,345的位數(shù)是3,各位數(shù)字之和是12#include"stdio.h"main(){inti=0,n,s=0,j;printf(',Entern:n);scanf("%d”,&n);do{j=n%10;s=s+j;n=n/10;i++;/*i用來(lái)統(tǒng)計(jì)位數(shù)*/}while(n); /*while(n)等價(jià)于while(n!=0)*/printf(,,i=%d,s=%d\n,\i,s);二、程序改錯(cuò)不允許增加行也不允許刪除行,也不得更改程序的結(jié)構(gòu)。1、輸入一個(gè)正整數(shù)n,再輸入n個(gè)整數(shù),輸出最小值。源程序:#includeHstdio.hnmain()inti=l,n,min,x;printf(nEntern:M);scanf(M%dM,&n);scanf(M%dM,&x);min=x;do/********found********/if(min<x)min=x;scanf(u%d';&x);i++;/********^jund********/}while(i>n);printf(,'min=%d\n,',min);2、從輸入的正整數(shù)中選5個(gè)數(shù)進(jìn)行輸出,要求這些數(shù)都是5的倍數(shù)源程序:main()inta,i=0;scanf("%d”,&a);do?/********tound********/if(i!=5&&a%5=0){printf("%d\nu,a);i++;}scanf(,'%d,,,&a);/********f^Qund********/}while(i>0);三、程序填空注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1、根據(jù)下述公式求乃值^/2=1+(1/3)+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+(1/3)*(2/5)*(3/7)*(4/9)+……直到最后一項(xiàng)的值小于任意一個(gè)小數(shù)為止。源程序:#include<math.h>#include<stdio.h>main()doubles=0.0,t=l.0,eps;intn=l;scanf(n%lfM,&eps);do{s=s+t;t=[I] ;n++;}while(t>=eps);printf(,'\n%lf',s*2);}2、下面程序的功能是計(jì)算正整數(shù)2345的各位數(shù)字之和。源程序:main()(intn=2345,sum=0;do{sum=sum+[1] ;n=n/10;}while(n);printf(,,sum=%d\n,',sum);3、從低位開(kāi)始取出長(zhǎng)整型變量s奇數(shù)位上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在t中。例如:當(dāng)s中的數(shù)為:7654321時(shí),t中的數(shù)為:7531.源程序:main()longs,a,i=l,t=O;scanf("%ld”,&s);do{a=s%10;s=[1];t=a*i+t;i=[2];}while(s)printfC%kT,t);改錯(cuò)1題(1)min<x改為x<min(2)While(i>n);改為:while(i<=n);改錯(cuò)1題2題:(1)if(i!=5&&a%5=0)改為if(i!=5&&a%5==0)(2)while(i>0);改為:while(i<5);填空1題:伊n/(2*n+l);填空2題:n%10填空3題(l)s/100(2)10*i思考題:程序1結(jié)果為sum=0,i=6 循環(huán)體一次也沒(méi)有執(zhí)行程序2結(jié)果為sum=6,i=7執(zhí)行了一次循環(huán)體【例8-1】輸出三位數(shù)中的所有水仙花數(shù)。水仙花數(shù)是指各位數(shù)字的立方和等于其自身的數(shù)。例如,153的各位數(shù)字的立方和是13+53+33=153源程序:#include"stdio.hn#include"math.h"main()inti,a,b,c;for(i=100;i<=999;i++)a=i/100;b=i/10%10;c=i%10;if(pow(a,3)+pow(b,3)+pow(c,3)=i)/*或if(a*a*a+b*b*b+c*c*c==i)第二行命令行去掉*/printf("%5d”,i);#include<stdio.h>main(){inti;for(i=100;i<=999;i++)if(i%5==0)printf("%5d”,i);【例8?2】求Sn=a+aa+aaa+aaaa+…其中a是一個(gè)數(shù)字,n由鍵盤(pán)輸入。例,a為2,n為5時(shí)Sn=2+22+222+2222+22222。源程序:#include"stdio.h"main()longi,a,n,sum=O,t;scanf(n%ld%ld';&a,&n);t=a; /*用t來(lái)取每一項(xiàng)*/fbr(i=l;i<=n;i+4-)sum+=t;t=t*10+a;printf(nsum=%ld\n[sum);,1111+—+—+.….+—【8-2】求2!3!加的和。#include,,stdio.hMmain(){doublei,sum=0,t=l,n;scanf(H%ir,&n);for(i=l;i<=n;i++){t=t*i;sum=sum+1.0/t;}printf(,'sum=%f\n,,,sum);【例8?3】輸入一個(gè)正整數(shù),判斷是否為素?cái)?shù)。源程序:#include<stdio.h>#include<math.h>main()intx,k;scanf("%d",&x);k=sqrt(x);for(i=2;i<=k;i++)if(x%i==O)break;if(i>k)printf(”%d是素?cái)?shù)”,x);elseprintff'no'*);[8-3]求1+2+3+4+5+ 硒110為止。用break語(yǔ)句編寫(xiě)程序#include<stdio.h>main(){intx,s=0;for(x=l;;x++) /*表達(dá)式2省略表示永遠(yuǎn)為真*/{s=s+x;if(s>10)break;}printf("%dn,s);二、程序改錯(cuò)不允許增加行也不允許刪除行,也不得更改程序的結(jié)構(gòu)。1、求fibonacci數(shù)列的前30個(gè)數(shù)之和,已知此數(shù)列的前2項(xiàng)分別為1。源程序:main()longfl=l,f2=l,n,s=0;/********於und********/for(n=l;n<=30;n++);{s=s+fl+f2;fl=fl+f2;f2=f2+fl;printf(,,\n%ld,',s);2、輸入n個(gè)數(shù),求這n個(gè)數(shù)中偶數(shù)的平均值源程序:main()inti,n,m,a=O;floats=0;scanf(H%dM,&n);/********j^Qund********/for(i=l;i<=n){scanfC%d”,&m);if(m%2==0){a=a+1;s=s+m;}i++;printf(M%f',s/a);}3、找出2至99之間的全部同構(gòu)數(shù)。同構(gòu)數(shù)是這樣一組數(shù):它出現(xiàn)在其平方數(shù)的右邊,例如,5是25右邊的數(shù),25是625右邊的數(shù),5和25都是同構(gòu)數(shù)。源程序:main(){inti;fbr(i=2;i<100;i++)/********found********/if(i==(i*i)%10&&i==(i*i)%100)printf("%5d”,i);三、程序填空注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1、下面程序功能是:輸出100?200之間不能被3整除的數(shù)。源程序:main()intn;for(n=100;n<=200;n++){if([11 )continue;printf("%5d”,n);2、輸入一個(gè)正整數(shù)n,輸出2/1+3/2+5/3+ 的前20項(xiàng)之和,保留2位小數(shù)(該序列從第二項(xiàng)起,每一項(xiàng)的分子是前一項(xiàng)的分子與分母之和,分母是前一項(xiàng)的分子。)源程序:#include"stdio.h"main()floatm=2,n=l,sum=0,t;inti=l;for(;i<=20;i-H-)sum+=[1];t=m;m=m+n;n=t;printf("%f”,sum);}改錯(cuò)1題:for(n=l;n<=30;n++);改為:for(n=1;n<=15;n++)改錯(cuò)2題:for(i=l;i<=n)改為for(i=l;iv=n;)改錯(cuò)3題:if(i==(i*i)%10&&i==(i*i)%100)改為:if(i==(i*i)%10lli==(i*i)%100)填空1題:n%3==0填空2題:m/n思考題3題:結(jié)果為:隨機(jī)數(shù),11思考題4題:100101;將break改為continue后結(jié)果為:輸出100到999之間不能被3整除的數(shù)【例9?1】運(yùn)行下列程序使之輸出圖形源程序:#include"stdio.h"main()inti,j,k;

for(i=l;i<=4;i++){ for(j=l;j<=i-l;j++)for(i=l;i<=4;i++){ for(j=l;j<=i-l;j++)printf("");for(k-1;k<=5;k++)printf("*");printf("\n");/*控制空格*//*控制*號(hào)*//*一行輸出完畢輸出回車(chē)來(lái)控制換行*/[9-1]運(yùn)行下列程序使之輸出圖形#includenstdio.hMmain(){intij;for(i=l;i<=4;i++){ for(j=l;j<=4-i;j++)printf("");for(j=1;j<=2*i-1;j++)printf(M*n);printf(H\nn);))【例9-2】輸出100?200之間的所有素?cái)?shù)的平方和。源程序:#include"stdio.h"main(){inti,j,sum=0;for(i=100;i<=200;i++){ for(j=2;j<i;j++)if(i%j==O)break;if(j==i)sum+=i*i;)printf(?%d”,sum);[9-2]輸出100?200之間的所有非素?cái)?shù)的開(kāi)方和。#include"stdio.h"#include"math.h"main(){inti,j;doublesum=0;for(i=100;i<=200;i++)for(j=2;j<i;j++)if(i%j==0){sum+=sqrt(i);break;}printf(H%f,,sum);一、程序改錯(cuò)不允許增加行也不允許刪除行,也不得更改程序的結(jié)構(gòu)。1、按順序讀入8名學(xué)生5門(mén)課程的成績(jī),計(jì)算出每位學(xué)生的平均分并輸出源程序:main()intn,k;floatscore,ave;/**************/for(n=1;n<=8;n++;){ave=0.0;for(k=1;kv=5;k++)/********found********/scanf("%f\&score);ave+=score;printf(,'NO%d:%f\n,',n,ave);2、運(yùn)行下列程序使之輸出圖形源程序:main()inti,j;for(i=l;i<=4;i++){/**************/for(j=l;j<=l(Hi;j++)printf("");/********fQund********/for(j=1;j<=2*i+1;j++)printf(printf(u\nM);三、程序填空注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1、找出1000以內(nèi)的所有“完數(shù)二所謂完數(shù),就是它所有因子之和等于它本身。如6=1+2+3,則6是完數(shù)。源程序:#include<stdio.h>voidmain()intn,i,s;for(n=2;n<=1000;n++){(Il;fbr(i=1;i<=n-1;i++)if(n%i==0)s+=i;if(s==n)printf("%?6d”,n);2、在下列程序中,找出一個(gè)大于給定整數(shù)m且緊隨m的素?cái)?shù)源程序:main()intm,i,k;scanf(,,%d,,,&m);for(i=[1];;i++){for(k=2;k<= [2] ;k++)if(i%k=O)break;if(k>=i){printf(M%d0,i);break;}

)改錯(cuò)1題:for(n=1;n<=8;n++;)改為:for(n=1;n<=8;n-4-+)scanf(n%fM,&score);ave+=score;printf("NO%d:%f\nH,n,ave);改為:{scanf("%f”,&score);ave+=score;}printf(',NO%d:%f\nM,n,ave/5);改錯(cuò)2題(1)for(j=l;jv=10+i;j++)改為:for(j=l;jv=10?i;j++)(2)for(j=1;jv=2*i+l;j++)改為:for(j=l;j<=5;j++)填空1題:s=0 填空2題:(1)m+1 (2)i-1【例10-1】輸出如下圖形hello源程序:#include"stdio.h"main()star();ftin();star();intstar()/*定義函數(shù)*/prjntf(***********\n,)intfun()/*定義函數(shù)*/printf(Mhello\nn);)[10-1]輸出如下圖形hello#include"stdio.h"voidvoidvoidstar();fun();voidvoidvoidmain(){star();star();fun();star();star();}voidstar()/*定義函數(shù)*/?”*********|voidfun()/*定義函數(shù)*/{printf(nhello\nH);}【例10?2】在函數(shù)fun中求1+2+3+4+5的和值,在main()函數(shù)中輸出和值。源程序:#include"stdio.h"main()inti=5,sum;sum=fun(i);printf("sum=%d\nM,sum);intfun(intn)/*定義函數(shù)*/inti=l,sum=0;fbr(;i<=n;i-H-)sum+=i;returnsum;/*通過(guò)return語(yǔ)句向main。返回值*/[10-2]從鍵盤(pán)輸入一個(gè)正整數(shù)n,計(jì)算n!的值。要求定義和調(diào)用函數(shù)fac(n),計(jì)算n!。#includenstdio.h"intfac(intm);intfac(intn){intt=l,i;for(i=l;i<=m;i++)returnt;}main(){intn;doublef;printf(Hinputn:n);scanf(M%d'\&n);f^fac(n);printf(,,%d!=%f\n,,,n,f);【例10?3】輸入x,輸出相應(yīng)的y值。要求定義和調(diào)用函數(shù)fun,實(shí)現(xiàn)下面的分段函數(shù)。O (x=0)y=Jsin(x)(x>0)Jxl (x<0)源程序:#include“stdio.h"#include"math.h"floatfun(floatx) /*在自定義函數(shù)體中可以有若干個(gè)return語(yǔ)句,但只有一個(gè)起作用*/if(x=0)return0;elseif(x<0)returnfabs(x);elsereturnsin(x);main()floatx,y;printf("Enterx:*');scanf(H%f,,&x);printfCAn11);y=fun(x);printf("y=%f\n",y);【10-3】輸入x,輸出相應(yīng)的y值。要求定義和調(diào)用函數(shù)ftm,實(shí)現(xiàn)下面的分段函數(shù)。<2x-l (x=0)y= (x>0)xos(x)(x<0)#include"stdio.h"#include"math.h"floatfun(floatx)/*在自定義函數(shù)體中可以有若干個(gè)return語(yǔ)句,但只有一個(gè)起作用*/{if(x==0)return2*x-l;elseif(x>0)returnsqrt(x);elsereturncos(x);main(){floatx,y;printf("Enterx:n);scanf(M%f,,&x);printf("\n");y=fun(x);printf(My=%f\nM,y);【例10-4】任意輸入兩個(gè)實(shí)型數(shù),輸出最小值。源程序:#include"stdio.h*'doublemax(doublex,doubley);/*函數(shù)說(shuō)明*/main()doublea,b;printf("Entera,b:n);scanf(M%lf,%lf;&a,&b);printf("最大者=%.2f\n”,max(a?b));doublemax(doublex,doubley)/*對(duì)形參分別定義doublemax;if(x>y)max=x;elsemax=y;returnmax;【10-4】任意輸入三個(gè)實(shí)型數(shù),在自定義函數(shù)fun中求它們的和值,在主函數(shù)中輸出和值#include"stdio.h"doublemax(doublex,doubley,doublez);/*函數(shù)說(shuō)明*/voidmain(){doublea,b,c;printf("Entera,b,c:H);scanf(M%lf,%lf,%lf\&a,&b,&c);printf(Mhe=%.2f\nw,max(a,b,c));doublemax(doublex,doubley,doublez)/*對(duì)形參分別定義*/{doublesum;sum=x+y+z;returnsum;}二、程序改錯(cuò)不允許增加行也不允許刪除行,也不得更改程序的結(jié)構(gòu)。1、下列給定程序中,函數(shù)fun的功能是:根據(jù)整型形參m,計(jì)算如下公式的值。丫=1+1/(2X2)+1/(3X3)+1/(4x4)+-+1/(mXm)例如,若m中的值為5,則應(yīng)輸出:1.463611。源程序:#include<conio.h>#include<stdio.h>/********^Qund********/intfun(intm)doubley=1.0;inti;/********f^)und********/for(i=2;i<m;i++)/********found********/y+=l/(i*i);return(y);main()intn=5;/********砧und********/printf(M\nTheresultis%lf\nu,fun(intn));2、輸入三個(gè)實(shí)型數(shù),輸出其中的最大數(shù)。要求定義和調(diào)用函數(shù)max,找出并返回最大數(shù)源程序:#include"stdio.h"/********於und********/intmax(doublex,doubley,doublez); /*函數(shù)說(shuō)明*/main()doublea,b,c;printf(uEntera,b,c:");printf("最大者=%.2f\n”,max(a?b,c));/********found********/doublemax(doublex,y,z)doublemax;if(x>y)max=x;elsemax=y;if(max<z)max=z;returnmax;三、程序填空注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1、讀入一個(gè)整數(shù),統(tǒng)計(jì)并輸出該數(shù)中數(shù)字'2'的個(gè)數(shù)。定義并調(diào)用函數(shù)countdigit(number,digit),它的功能是統(tǒng)計(jì)整數(shù)number中數(shù)字digit的個(gè)數(shù)。例如,countdigit(12929,2)的返回值是2。源程序:#include"stdio.h"countdigit(longnumber,inta);main()longnumber;printf(uEnternumber:");scanf("%kT,&number);printf("%d\n';[1]);countdigit([2])intn=0;while(number)if(number%10=a)n++;number=number/10;[3];2,下列給定程序中,fijn函數(shù)的功能是:傳入一個(gè)整數(shù)m,計(jì)算如下公式的值。t=l-l/2-l/3- -1/m例如,若輸入5,則應(yīng)輸出-0.2833330源程序:#include<stdio.h>main()intm;printf(uEnterm:n);scanf(w%dM,&m);printf(uTheresultis%lf\nv,fun(m));fun(intm)doublet=I.O;inti;fbr(i=2;iv=m;i++)t=1.0-l/i;[3];改錯(cuò)1題:intfun(intm)改為:doublefun(intm)for(i=2;i<m;i++)改為:for(i=2;i<=m;i++)y+=l/(i*i);改為:y+=1.0/(i*i);printf(u\nTheresultis%lf\n",fun(intn));改為:printf("\nTheresultis%lf\nM,fun(n));改錯(cuò)2題:intmax(doublex,doubley,doublez);改為:doublemax(doublex,doubley,doublez);doublemax(doublex,y,z)改為:doublemax(doublex,doubley,doublez)填空1題(1)countdigit(number,2); (2)longnumber,inta(3)returnn;填空2題(1)doublefun(intm); (2)double(3)returnt;【例11?1】編寫(xiě)函數(shù)fun,函數(shù)的功能是:根據(jù)以下公式計(jì)算s,計(jì)算結(jié)果作為函數(shù)值返回;n通過(guò)形參傳入。111 1 F...H 1+21+2+3 1+2+3+...+〃S=l+例如:若n的值為11時(shí),函數(shù)的值為1.833333。源程序:#include<conio.h>#include<stdio.h>#include<string.h>floatfun(intn)floatsum=0;inti,t=0;for(i=l;i<=n;i++){t=t+i;sum=sum+L/t;main()intn;floats;printf(u\nPleaseentern:n);scanf("%d",&n);s=fun(n);printf('Theresultis:%f\n'*,s);【11-1】請(qǐng)編寫(xiě)函數(shù)fun,其功能是:計(jì)算并輸出下列多項(xiàng)式值#include<stdio.h>doublefun(intn){inti;doublet=O,s=O,f=l;fbr(i=l;i<=n;i++){t=1.0/(2*i-l)-1.0/(2*i);s=s+f*t;f="f;}returns;}main(){intn;doubles;printf(K\n!nputn:");scanf("%d",&n);s=fun(n);printf(,,\ns=%ftn,\s);【例11?2】輸入兩個(gè)正整數(shù)m和n(1Wm,nW500),統(tǒng)計(jì)并輸出m和n之間的素?cái)?shù)的個(gè)數(shù)以及這些素?cái)?shù)的和。要求定義并調(diào)用函數(shù),是素?cái)?shù)返回1,否則,返回0。源程序:#include"stdio.h"fun(intnum);main()intm,n,i,count=0,sum=0;printf(MEnterscanf(M%d%d*,,&m,&n);for(i=m;i<=n;i++)if(fun(i)){sum+=i;count++;printf(,,sum=%d,couiit=%d\nM,sum,count);fun(intnum)inti;fbr(i=2;i<num;i4-+)if(num%i==0)break;if(i==num)return1;elsereturn0;[11-2]輸入兩個(gè)正整數(shù)m和n(l《m,n^lOOO),輸出m?n之間的所有滿足各位數(shù)字的立方和等于它本身的數(shù)。要求定義并調(diào)用函數(shù)fun,判斷m~n之間每個(gè)數(shù)字的立方和是否等于它本身。includenstdio.hMintfun(intnum);main(){inti,m,n;scanf(H%d%dM,&m,&n);for(i=m;i<=n;i++)if(fun(i))printf(M%5dM,i);intfun(intnum){intn=num,a,s=O;while(n){a=n%10;s=s+a*a*a;n=n/10;}if(s==num)return1;elsereturn0;【例11-3]輸入一批正整數(shù)(以零或負(fù)數(shù)作為結(jié)束標(biāo)志),求其中的奇數(shù)和。要求定義和調(diào)用函數(shù)fun,,當(dāng)n為偶數(shù)時(shí)返回1,否則返回0。源程序:#include"stdio.h"fun(intx)if(x%2)return0;elsereturn1;main()intx,sum=0;printf(nEnterx:1*);scanf("%cT,&x);while(x>0)if(fun(x)==0)sum+=x;printf(uEnterx:H);scanf(M%dM,&x);printf(,,suin=%d\n,,,sum);【11?3】輸入一批正整數(shù)(以零或負(fù)數(shù)作為結(jié)束標(biāo)志),求其中的偶數(shù)和。要求定義和調(diào)用函數(shù)fun,,當(dāng)n為偶數(shù)時(shí)返回1,否則返回0。#include"stdio.h"intfun(intx)if(x%2)return0;elsereturn1;main(){intx,sum=0;printf("Enterx:n);scanf("%dn,&x);while(x>0){if(fun(x)==1)sum+=x;printf("Enterx:H);scanf(H%dn,&x);}printf(Msum=%d\nM,sum);二、程序改錯(cuò)不允許增加行也不允許刪除行,也不得更改程序的結(jié)構(gòu)。1、請(qǐng)編寫(xiě)函數(shù)fun,其功能是:計(jì)算并輸出下列多項(xiàng)式值:Sn=l+l/l!+l/2!+l/3!+l/4!+ +l/n!例如,若主函數(shù)從鍵盤(pán)給n輸入15,則輸出為s=2.718282。注意:n值要求大于3,但不大于100。源程序:#include<stdio.h>doublefun(intn)/********fiQurid********/doublesum=0,t=l;inti;/********治un(j********/for(i=0;i<=n;i++)t=t*i;sum=sum+l/t;returnsum;main()intn;doubles;printf(Inputn:");scanf(M%d",&n);s=fun(n);printf("s=%An”,s);2、已知一個(gè)數(shù)列從第0項(xiàng)開(kāi)始的前三項(xiàng)分別為0、0、1,以后的各項(xiàng)都是其相鄰的前三項(xiàng)之和。下列給定程序中,函數(shù)fun的功能是:計(jì)算并輸出該數(shù)列前n項(xiàng)的平方根之和sun。n的值通過(guò)形參傳入。例如,當(dāng)n=10n寸,程序輸出結(jié)果應(yīng)為23.197745。源程序:#include<stdio.h>#include<math.h>/********found********/fun(intn)doublesum,sO,si,s2,s;intk;sum=1.0;if(n<=2)sum=0.0;s0=0.0;si=0.0;s2=1.0;for(k=4;k<=n;k++){s=sO+sl+s2;sum+=sqrt(s);sO=sl;sl=s2;s2=s;/********f^ound********/returnsummain(){intn;printf(Hinputn=n);scanf(M%dM,&n);printf("%f\n”,ftm(n));三、程序填空注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1、給定程序中,函數(shù)fun的功能是根據(jù)形參i的值返回某個(gè)函數(shù)的值。當(dāng)調(diào)用正確時(shí),程序輸出:x1=5.000000,x2=3.000000,xl*xl+xl*x2=40.000000請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。源程序:#include<stdio.h>doublefl(doublex){returnx*x;}doublef2(doublex,doubley){returnx*y;}_[1]fun(inti,doublex,doubley)if(i==l)return_[2]_(x);elsereturn[3]_(x,y);main()doublex1=5,x2=3,r;r=fun(l,xl,x2);r+=fun(2,xl,x2);printf(H\nxl=%f,x2=%f,x1*x1+x1*x2=%f\n\nH,x1,x2,r);2,給定程序中,函數(shù)fun的功能是:輸出100?999之間(含100和999)所有整數(shù)中各位上數(shù)字之和為x(x為一正整數(shù))的整數(shù),并統(tǒng)計(jì)符合條件的整數(shù)個(gè)數(shù)作為函數(shù)值返回。例如,當(dāng)x值為5時(shí),100?999之間各位上數(shù)字之和為5的整數(shù)有:104、113、122、131、140、203、212>221、230、302、31k320、401>410、500。共有15個(gè)。當(dāng)x值為27時(shí),各位數(shù)字之和為27的整數(shù)是:9990只有1個(gè)。源程序:#include<stdio.h>fun(intx)intn=0,sl,s2,s3,t;t=100;while(t<=_[1])sl=t%10;s2=(_[2]_)%10;s3=t/100;if(sl+s2+s3==_【3】_){printf(H%d\t);n++;t++;[4]main()intx=-l;while(x<0){printf("Pleaseinput(x>0):");scanf("%d,,,&x);printf(H\nTheresultis:%d\nM,fun(x));改錯(cuò)1題:(1)doublesum=0,t=l;改為:doublesum=l,t=l;(2)for(i=0;iv=n;i++)改為:for(i=l;i<=n;i++)改錯(cuò)2題:(1)fun(intn)改為:doublefun(intn)填空1題:此題刪除(1)double (2)fl (填空2題:(1)999 (2)t/10 (3)x【例12-1】輸出Fibonacci數(shù)列前20項(xiàng)中的偶數(shù)之和.三項(xiàng)開(kāi)始后一項(xiàng)是前兩項(xiàng)之和。源程序:(2)returnsum改為:returnsum;f2)returnn;已知前兩項(xiàng)的值分別為1,1。從第#include"stdio.h"main()(longf[20]={1,1},i,sum=0;/*定義一個(gè)一維數(shù)組*/for(i=2;i<=19;i++)f[i]=f[i-l]+f[i-2];printf("輸出Fibonacci數(shù)列前20項(xiàng):”);for(i=0;i<=19;i++)printf(H%5dr;f[i]);for(i=0;i<=19;i++)if(f[i]%2==0)sum+=f[i];printf(,r\nsum=%ld\nn,sum);}[12-1]Fibonacci數(shù)列前20項(xiàng)中下標(biāo)奇數(shù)的元素之和(10945)#include"stdio.h"main()(longf[20]={I,l};printf(n%ldu,fun(f,20));)longfun(longf[],longn){inti,s=0;for(i=2;i<n;i++)f[i]=f[i-l]+f[i-2];for(i=0;i<n;i++)if(i%2!=0)s=s+f[i];returns;)【例12-2】任意輸入10個(gè)數(shù),輸出其中的最大數(shù);最大數(shù)與第1位置上的數(shù)互換后,輸出10個(gè)數(shù)。源程序:#include"stdio.h"main()inta[10],max,i,t,p;/*p用來(lái)存放最大數(shù)的位置刃printf("輸入10個(gè)數(shù)An");for(i=0;i<10;i++)scanf(M%dw,&a[i]);fbr(i=0;i<10;i++)printf(M%dH,a[i]);printf(H\nH);max=a[0];p=0;/*10個(gè)數(shù)中的任意一個(gè)數(shù)都可以假設(shè)是最大數(shù),記下最大數(shù)的下標(biāo)*/for(i=l;i<10;i++)if(max<a[i]){max=a[i];p=i;}t=a[0];a[0]=a[p];a[p]=t;/*最大數(shù)與第1位置上的數(shù)互換*/printf(',max=%d\n,',max);printf("輸出調(diào)換之后的數(shù)組:”);fbr(i=0;i<10;i++)printf(n%dM,a[i]);【12?2】任意輸入10個(gè)數(shù),輸出其中的最小數(shù);最小數(shù)與最后面的數(shù)互換后,輸出10個(gè)數(shù)。#include"stdio.h"main()inta[10],k,i;for(i=0;i<10;i++)scanf(n%d';&a[i]);k=fun(a,10);printf(,'max=%d\n,,,k);intfun(inta[],intn)inti,min;min=a[0];fbr(i=l;i<n;i++)if(min>a[i])min=a[i];returnmin;【例12-3】用選擇法排序:任意輸入5個(gè)數(shù),從大到小輸出。源程序:#include"stdio.h"main()inta[5],i,j,t,p;/*p用來(lái)存放最小數(shù)的位置*/printf("輸入5個(gè)數(shù):\n");for(i=0;i<=4;i++)scanf(H%dw,&a[i]);printf("輸出5個(gè)元素值\n");fbr(i=0;i<5;i++)printf(H%dM,a[i]);printf(n\nM);for(i=0;i<=3;i++)/*i控制比較的輪次,同時(shí)也控制下標(biāo)*/p=i; /*假設(shè)i位置上的元素值最小,用p存放最小值的位置*/for(j=i+l;j<5;j++)/*用p位置上元素值和它后面的元素值比較,一直比到最后一個(gè)數(shù)*/if(a[p]>a[j])p=j;if(p!=i){t=a[i];a[i]=a[p];a[pj=t;}prinlf("輸出排好序的5個(gè)數(shù)\n");for(i=0;i<5;i++)printf(M%d\a[i]);任意輸入10個(gè)數(shù),輸出其中的最小數(shù);最小數(shù)與最后面的數(shù)互換后,輸出10個(gè)數(shù)。#include,,stdio.h,,voidfun(inta[],intn){intmin=a[0],p=0,i,t;/*p用來(lái)存放最大數(shù)的位置*/for(i=l;i<10;i-H-)if(min>a[i]){min=a[i];p=i;}t=a[n-l];a[n?l]=a[p];a[p]=t;/*最大數(shù)與最后位置上的數(shù)互換*/main()inta[10],k,i;printf("輸入10個(gè)數(shù)NT);fbr(i=0;i<10;i++)scanf(H%dM,&a[i]);for(i=0;i<10;i++)printf(n%dprintf(M\nH);fun(a,10);printf("輸出調(diào)換之后的數(shù)組:”);for(i=0;i<10;i++)printf(

溫馨提示

  • 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)論