C-上機(jī)程序答案_第1頁
C-上機(jī)程序答案_第2頁
C-上機(jī)程序答案_第3頁
C-上機(jī)程序答案_第4頁
已閱讀5頁,還剩167頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

如何調(diào)試程序:編譯好程序F10就可以進(jìn)行調(diào)試,也可以F5開始debug程序不過最好是先設(shè)置斷點(diǎn),設(shè)置斷點(diǎn)用F9,取消斷點(diǎn)就在斷點(diǎn)位置按F9,取消全部斷點(diǎn)ctrl+shift+F9;碰到函數(shù)調(diào)用,要進(jìn)入函數(shù)體調(diào)試,就在調(diào)用的時(shí)候按F11,F11也稱為単步調(diào)試;結(jié)束調(diào)試就按shift+F5Lab1SequenceStructure上機(jī)前的預(yù)習(xí)在實(shí)驗(yàn)預(yù)習(xí)報(bào)告上畫好流程圖,并編寫好源程序及運(yùn)行程序所需的典型數(shù)據(jù)。.在自己的系統(tǒng)上運(yùn)行"Hell。,World",再讓程序遺漏ー些部分,觀察出現(xiàn)的錯(cuò)誤信息。#include<stdio.h>voidmain(){printf("hello,world\n');).調(diào)試并改正下列程序中的錯(cuò)誤。該程序能夠計(jì)算某個(gè)數(shù)x的平方,并賦值給y,且分別以"y=x*x"和"x*x=y"的形式輸出x和y的值。要求記錄錯(cuò)誤信息,說明錯(cuò)誤原因和改正方法,最后寫正確的程序。#include<stdio>voidmain(void)intx,y;x*xprintf("%d=%d*%d",x);printf("d*%d=%d,y);)正確答案:#include<stdio.h>voidmain()(intx,y;scanf("%d"z&x);y=x*x;printf("%d=%d*%d\n",y,x,x);printf("%d*%d=%d\n"/x/x,y);}.輸入兩個(gè)數(shù),交換它們的值。#include"stdio.h"voidmain()(inta;b,c;scanf("%d%d",&a/&b);c=a;a=b;b=c;printf("%d,%d\n",a,b);).求攝氏溫度26て對(duì)應(yīng)的華氏溫度.計(jì)算公式為,其中,c表示攝氏溫度;f表示華氏溫度。#include<stdio.h>voidmain()|inta;floatb;scanf("%d",&a);b=9.0/5.〇?a+32;/*b=9/5*a+32; 9/5得到的結(jié)果總是1,最后的結(jié)果總是58。而正確的結(jié)果應(yīng)該是78.8ソprintf("%f\n",b);}注意類型轉(zhuǎn)化:ソ’這個(gè)是除法,但是有一點(diǎn)注意,兩邊操作數(shù)全為整數(shù)時(shí),值是取整的。.輸入某員エ的基本工資(以元為單位,エ資為整數(shù)值),如果他的住房補(bǔ)貼是基本工資的20%,崗位補(bǔ)貼是基本工資的40%,計(jì)算該員エ的總エ資。#include<stdio.h>voidmain()floatb,c,e;scanf("%d",&a);b=a*0.2;c=a*0.4;e=a+b+c;printf("%f\n",b);printf("%f\n',c);printf("%f\n",e);Lab2SelectionStructure上機(jī)前的預(yù)習(xí)在實(shí)驗(yàn)預(yù)習(xí)報(bào)告上畫好流程圖,并編寫好源程序及運(yùn)行程序所需的典型數(shù)據(jù)。1.輸入一個(gè)年份,判斷其是否為閏年。#include"stdio.h"voidmain()(inta;scanf("%d",&a);if(a%100!=0)printf("%d年為閏年、n",a);)else(if(a%400==0)(printf("%d年為閏年、n",a);)else(printf("%d年不為閏年、n”,a);)))elseif(a%400==0)printf("%d年為閏年、n",a);)else(printf("%d年不為閏年、n”,a);))else(printf("%d年不為閏年、n”,a);)*/printf("%d年不為閏年”,a);)}2.假設(shè)現(xiàn)在90號(hào)汽油6.95元/升、93號(hào)汽油7.44元/升、97號(hào)汽油7.93元/升。為吸引顧客,某自動(dòng)加油站推出了“自助服務(wù)"和"協(xié)助服務(wù)"兩個(gè)服務(wù)等級(jí),分別可得到5%和3%的折扣.請(qǐng)編寫萌,輸入顧客的加油量a,汽油品種b(90、93或97)和服務(wù)類型c(m為自助服務(wù),e為協(xié)助服務(wù)),計(jì)算并輸出應(yīng)付款(保留小數(shù)點(diǎn)后2位)。方法一:intmain()(intb;charc;doublepay,a;printf("輸入您想加多少油量:");scanf("%lfn,&a);pay=0;printf("l:gas90\n2:gas93\n3:gas97\n");printf("輸入您想加的汽油品種:”);scanf("%dn,&b);switch(b)(casel:pay=6.95*a;break;case2:pay=7.44*a;break;case3:pay=7.93*a;break;default:printf("操作錯(cuò)誤!!\n");break;printf(”m:自助服務(wù)、ne:協(xié)助服務(wù)\n");p「intf("輸入您選擇服務(wù)的代碼:)fflush(stdin);/?清除鍵盤緩沖區(qū)的字符★/scanf(”%c”,&c);if(c=='m')pay=0.95*pay;elseif(c=='e')pay=0.97*pay;printf("您應(yīng)支付%.2lf\n”,pay);return0;}方法二:#include"stdio.h"intmain()(floata;intb;charc;floatsum;floatpay;printf(”請(qǐng)輸入加油量:');scanf("%f",&a);printfCW90、93和97?請(qǐng)輸入油品種:");scanf("%d",&b);printf("m為自助服務(wù),e為協(xié)助服務(wù)?請(qǐng)輸入服務(wù)類型:");fflush(stdin);/*將鍵盤緩沖區(qū)字符清除?/scanf(n%c",&c);switch(b)(case90:sum=a*6.95;break;case93:sum=a*7.44;break;case97:sum=a*7.93;break;defaultprintfCerrorlXn');)switch(c)(case'm':pay=sum*0.05;break;case'e':pay=sum*0.03;break;default:printf("error2\n');printf("您應(yīng)付款金額為:%f\n",pay);return0;)注意事項(xiàng):scant()函數(shù)是從鍵盤緩沖區(qū)取數(shù)據(jù),而不是直白的理解為我按ー個(gè)鍵它才取走,因?yàn)槟惆聪碌逆I都被存入緩沖區(qū),也就是說。你的這個(gè)函數(shù)沒有起作用是因?yàn)槟愕慕”P緩沖區(qū)還有字符,于是scanf()就不等你按下鍵,直接從緩沖區(qū)取走了。記住scanf()不是直接和你打交道,你和scanf()之冋還有個(gè)健盤緩沖區(qū)這樣的中間代理人。所以你的程序會(huì)出現(xiàn)沒等你輸入就直接結(jié)束了。解決辦法:在scanf()前加入fflush(stdin);語句,你先不必觀這個(gè)函數(shù)怎么來的,你只需要知道,你這樣做了,鍵盤緩沖區(qū)就被清空。以上是針對(duì)scanf()來說的。但就你的程序目的來說。你用scanf()來讓程序暫停很不好!解決辦法:調(diào)用dos命令:把scanf()語句換成system("pause");就可以讓程序暫停了。這個(gè)語句是所有編譯器都支持的。而且很安全。不過這樣做調(diào)用的是dos操作系統(tǒng)命令,只在win系統(tǒng)下用。.給ー個(gè)不多于5位的正整數(shù),求出它是幾位數(shù),并計(jì)算組成該整數(shù)的每位上的數(shù)字的和。include"stdio.h"voidmain()(unsignedlongm;intn;inta,b,c,d,e;

scanf("%d",&m);if(m>9999)(n=5;)elseif(m>999)(n=4;)elseif(m>99)(n=3;)elseif(m>9)(n=2;)else(n=l;)printf("它是%d位數(shù)ハrT,n);a=m/10000;b=(m-a*10000)/1000;c=(m-a*10000-b*1000)/100;d=(m-a*10000-b*1000-c*100)/10;e=(m-a*10000-b*1000-c*100-d*10)/l;n=a+b+c+d+e;printf("%d\n",n);}.輸入三角形的三邊a,b,c,若能構(gòu)成三角形,輸出YES,否則輸出N0。#include"stdio.h"voidmain()(floata,b,c;intleap;scanf("%f%f%f",&a,&b,&c);if(a+b>c)(if(a+c>b)(if(b+c>a)leap=l;)/*elseif(a+c>b)(leap=l;)elseif(b+c>a)(leap=l;)*/elseleap=0;if(leap)(printf("YES\n");)elseprintf(nNO\n");)5.輸入某學(xué)生語文課程的成績,輸出該成績的等級(jí)。判斷規(guī)則為:如果成績?cè)?0-100的范圍內(nèi),則等級(jí)為A;若成績?cè)?0-89的范圍內(nèi),則等級(jí)為B;若成績?cè)?0-79的范圍內(nèi),則等級(jí)為C;若成績?cè)?0-69的范圍內(nèi),則等級(jí)為D;若少于60分,則等級(jí)為F。(要求:用switch語句實(shí)現(xiàn)。)include"stdio.h"voidmain()(charb;floata;scanf("%f",&a);while(a<0||a>100)(printf("輸入有誤,請(qǐng)重新輸入:");scanf("%f",&a);)switch((int)(a/10))(case10:case9:printf("等級(jí)為A\n");break;case8:printf("等級(jí)為B\n");break;case7:printf("等級(jí)為C\n");break;case6:printf("等級(jí)為D\n");break;case5:case4:case3:case2:case1:case〇:printf("等級(jí)為E\n");break;))Lab3RepetitionStructure上機(jī)前的預(yù)習(xí)在實(shí)驗(yàn)預(yù)習(xí)報(bào)告上畫好流程圖,并編寫好源程序及運(yùn)行程序所需的典型數(shù)據(jù)。.從500開始,求被3、5、7除余數(shù)均為2的前50個(gè)數(shù)。方法一:#include"stdio.h1'voidmain()(inti=500,k=0;printf(”所求整數(shù)為:\n");while(k<=49)if(i%3==2&&i%5==2&&i%7==2)printf("%d\n",i);k++;)i++;)}方法二:#include"stdio.h"voidmain()(inti=500;intsum=0;printf("被3、5、7除余均為2的前50個(gè)數(shù)是:\n");do(if(i%3==2&&i%5==2&&i%7==2)(printf("%d\n",i);sum++;i++;}while(sum<=49);)注意:兩個(gè)都是49(道理也是相同的。方法三:#include<stdio.h>voidmain()(inti=0,k=0;for(i=500;;i++)(if(i%3==2&&i%5==2&&i%7==2)(printf("%d\n',i);k++;if(k==5O)(break;))注意:省略表達(dá)式2說明一直在執(zhí)行while(1);所以要用break;.打印形狀為正方形和直角三角形的乘法九九表。打印直角三角形:(兩種方式)include"stdio.h"voidmain()(inti,j,sum;for(i=l,j=l;i<=j;i++) 〃〃/方;A(sum=i*j;printf(*%d*%d=%d",i,j,sum);)printf('\n");for(i=l,j=2;i<=j;i++){sum=i*j;printf("%d*%d=%d",i,j,sum);)printf("\n");for(i=l,j=3;i<=j;i++)(sum=i*j;)printf('\n");for(i=l,j=4;i<=j;i++)(sum=i*j;printf("%d*%d=%d",i,j,sum);)printf("\n");for(i=l,j=5;i<=j;i++)(sum=i*j;printf("%d*%d=%d",i,j,sum);)printf(ヘバ);for(i=l,j=6;i<=j;i++)(sum=i*j;printf("%d*%d=%d",i,j,sum);)printf("\n");for(i=l,j=7;i<=j;i++)sum=i*j;printf("%d*%d=%d ソ,j,sum);)printf('\n");for(i=l,j=8;i<=j;i++)(sum=i*j;printf("%d*%d=%d",i,j,sum);)printf("\n");for(i=l,j=9;i<=j;i++)(sum=i*j;printf("%d*%d=%d",i,j,sum);)printf("\n");for(i=l;i<=9;i++) 〃〃/方法二for(j=l;j<=ij++)sum=i*j;printf("%d*%d=%d ソ,j,sum);)printf("\n");)return0;)3.由鍵盤輸入ー個(gè)正整數(shù),判斷它是否為素?cái)?shù)(只能被1和自身整除的數(shù)).#include<stdio.h>voidmain()(inti,n;printf("請(qǐng)輸入n:");scanf("%d",&n);i=2;while(i<n)(if(n%i==O)break;i++;)if(i==n)printf("%disprime\n",n);elseprintf("%disnoprime\n",n);4.輸入一個(gè)正整數(shù)n,輸出 47101316 的前n項(xiàng)和之和,保留小數(shù)點(diǎn)2位。#include"stdio.h"#include"math.h"intmain()(unsignedintn;unsignedinti;doublesum,flag,temp;sum=0;flag=l;temp=l;printf("inputanint:");scanf("%d",&n);for(i=l;i<=n;i++)(sum十=flag*1.00/temp;flag=-flag;temp+=3;printf("%.2An",sum);return0;)sum十=flag*1.0(ytemp;還是疑問,ヌ寸比Lab14的demo;.將一筆零錢(大于8分,小于1元,精確到分)換算成1分、2分和5分的硬幣組合。輸入金額,輸出共有多少種換法及換算的方案。#include"stdio.h"intmain()(intn;intx,y,z;intnum=0;printf("inputyournumbern(8<n<100):");scanf("%dnz&n);for(x=l;x<n;x++)(for(y=l;y<n/2;y++)if(l*x+2*y+5*z==n)printf("%d個(gè)].分,%d個(gè)2分,%d個(gè)5分、n",x,y,z);num++;})))printf("一共有%d種方法、n",num);return0;}注意事項(xiàng):除法"/"兩邊都是整數(shù),如果有余數(shù)時(shí),去掉小數(shù),保留整數(shù)。對(duì)(大于8分,小于1元)這個(gè)范圍判斷,并重新輸入錢數(shù)操作變成不清楚。.編寫程序輸出以下的圖形:ABCDEFGHIJ#include"stdio.h"intmain()a=4;for(i=l;i<=a;i++)(for。=5旬>=1;戶)〃用づ時(shí),得到的結(jié)果ー樣.(printf("*");)printfC\nn);)return0;}注意:設(shè)置變量a=4;這樣方便在大型編程項(xiàng)目中的修改。方法二:#include"stdio.h"intmain()(intij,n,k;n=4;k=0;chara[]={,A7B7C7D7E7F7G7H7F;J,};for(j=0;j<n;j++)printf("%c",a[k]);k++;}printf(M\n");n-;)return0;}Lab4Function(PartI)上機(jī)前的預(yù)習(xí)在實(shí)驗(yàn)預(yù)習(xí)報(bào)告上畫好流程圖,并編寫好源程序及運(yùn)行程序所需的典型數(shù)據(jù)。要求:從本次實(shí)驗(yàn)開始,每ー個(gè)功能模塊都必須用ー個(gè)函數(shù)來實(shí)現(xiàn)。1.輸入ー批正整數(shù)(以〇或負(fù)數(shù)為結(jié)束標(biāo)志),求其中所有奇數(shù)的和。要求:定義和調(diào)用函數(shù)even(n)判斷整數(shù)的奇偶性,當(dāng)n為偶數(shù)時(shí)返回1,否則返回〇〇方法一:#include"stdio.h"inteven(intn);intmain()inti,flag,sum;b=0;sum=O;unsignedinta[10]={0};/*unsignedinta[10];a[10]=0;*/printf("input9intnumber:");for(i=0;i<9;i++)(scanf("%d"/&a[i]);)for(i=0;i<=9;i++)(flag=even(a[i]);if(flag==0)(sum+=a[i];})printf("totalintnumber=%d\n",sum);return0;inteven(intn)intx,y;x=0;y二Lif(n%2==l)returnx;elsereturny;}注意事項(xiàng):使用數(shù)組要記敏組的初始化,不然會(huì)報(bào)錯(cuò);比如如果使用 "unsignedinta[10];a[10]=0;*/時(shí),系統(tǒng)就可能會(huì)出現(xiàn)錯(cuò)誤,因?yàn)槟惝?dāng)把需要的值賦予數(shù)組時(shí),并不能保證數(shù)組內(nèi)存中的系統(tǒng)隨機(jī)指與你的ー樣占相同的內(nèi)存空間.(我就出現(xiàn)這樣的問題,第一次系統(tǒng)報(bào)錯(cuò),初始化后運(yùn)行正常,之后再改為第一次運(yùn)行出錯(cuò)時(shí),運(yùn)行又正常了。)數(shù)組單個(gè)賦值格式類似為:a[10]=0;intmain(void)(intn,b,a=0;inteven(intn);printf("n:w);do{scanf("%d;&n);b=even(n)ル這句放在scanf之后,不然n沒有初始化if(b==O){a=a+n;}}while(n>0);printf("%d\n'\a);return0;)inteven(intn){intm;if(n%2==0)m=l;elsem=0;return(m);)2.輸入兩個(gè)正整數(shù)m和n(14m,n<1000),輸出m?n之間的所有滿足各位數(shù)字的立方和等于它本身的數(shù)(如153=13+53+33).要求定義并調(diào)用函數(shù)isnumber(number)判斷number的各位數(shù)字之立方和是否等于它本身。方法一:include"stdio.h"include"math.h"intisnumber(intnumber);intmain()(unsignedintm,n,i;printf("inputunsignedintmn(l<=m,n<=1000):");scanf("%d,%d",&m,&n);if(l<=m,n<=1000)(if(m>n)(inttemp;temp=m;m=n;n=temp;for(i=m;i<=n;i++)(intnum;num=isnumber(i);if(num==l)(printf("%d\n",i);)))else(printf("pleaserepeat!\n");printf("inputunsignedintmn(l<=m,n<=1000):");scanf("%d,%d,,&m,&n);}return0;}intisnumber(intnumber)intflag;inta,b,c;a=number/100;b=number%100/10;c=number%100%10;if(number==pow(a,3)+pow(b,3)+pow(cx3)){flag=l;)elseflag=O;returnflag;)注意事項(xiàng):還是7寸輸錯(cuò)后,重新輸入這個(gè)問題實(shí)現(xiàn)不了。3.隨機(jī)產(chǎn)生50個(gè)200至500之間的整數(shù),輸出所有的整數(shù),判斷每個(gè)整數(shù)是否為素?cái)?shù);若是素?cái)?shù),則在輸出整數(shù)時(shí),用★標(biāo)記。要求每行輸出10個(gè)數(shù)。要求:判斷ー個(gè)整數(shù)是否為素?cái)?shù),必須用自定義的函數(shù)實(shí)現(xiàn)。#include"stdio.h"#include"time.h"#include"stdlib.hvoidprime(intx);intmain()(inti,k;srand(time(NULL));/?初始化隨機(jī)數(shù)種子?/for(i=0;i<50;i++)(1<=200+両イ()%301;/?生成一個(gè)[200,500]區(qū)間內(nèi)的整數(shù)?/prime(k);)printf("\n");return0;)voidprime(intx){inti;boolisPrime=true;for(i=2;i<x;i++)〃判斷是否為素?cái)?shù)if(x%i==0)(isPrime=false;break;))if(isPrime)(printf("*%d*\t",x);)else(printf("%d\t",x);))注意事項(xiàng):?選中所要對(duì)齊的代碼,按Alt+F8;?if的條件判斷可以直接為true或者false;判斷素?cái)?shù)的邏輯問題;x%i==O是只有一個(gè)數(shù)被判斷出它除余為〇,就說明它不是素?cái)?shù)!x%i!=0是指ー個(gè)數(shù)被判斷出它除余不為〇,并不能說明它就是宿舍。兩者是不一樣的,這是邏輯問題;srand(time(NULL));和k=200+rand()%301;是成對(duì)的;\t輸出是四個(gè)空格。方法二:#include<stdio.h>#include<time.h>#include<stdlib.h>voidprime(intm);voidmain()(inti,k;srand(time(NULL));for(i=l;i<=50;i++){k=200+rand()%301;prime(k);if(i%10==0)printf("\n");voidprime(intm)(inti;for(i=2;i<m;i++)(if(m%i==0)(printf("%d\t',m);break;)}if(i==m)printf("*%d*\tn,m);}4.給定平面任意兩點(diǎn)坐標(biāo)(xl,yl)和(x2,y2),求這兩點(diǎn)之間的距離(保留2位小數(shù))。要求:定義和調(diào)用函數(shù)dist(xl,yl,x2,y2滸算兩點(diǎn)間的距離。方法一:#include<stdio.h>#include<math.h>floatdist(intxljntyljntx2Jnty2);voidmain()intxl,x2,yl,y2;floatdistance;scanf(M%d%d%d%dM/&xl/&yl,&x2/&y2);distance=dist(xLyl,x2,y2);printf(”%.2f\n",distance);floatdistantxljntyljntx2Jnty2)floatx;x=pow((xl-x2),2);x+=pow((yl-y2)z2);x=sqrt(x);returnx;方法二:include"stdio.h"include"math.h"voiddist(floatxl,floatyl,floatx2,floaty2);intmain()(floatx,y,i,j;printf("input(x,y)(i,j)scanf("%f%f%f%f",&x,&y,&i,&j);dist(x,y,i,j);return0;}voiddist(floatxl,floatyl,floatx2,floaty2)(floatsum;floattemp;temp=(float)(pow((x2-xl),2)+pow((y2-yl),2));sum=sqrt(temp);printf("%.2f\n",sum);注意事項(xiàng):可以對(duì)比兩種方法中的計(jì)算過程;主調(diào)函數(shù)和被調(diào)函數(shù)可以參數(shù)一樣,可以仔細(xì)對(duì)比ー下。5.輸入兩個(gè)正整數(shù),求其最大公約數(shù)和最小公倍數(shù)。要求:求最小公約數(shù)必須用自定義的函數(shù)實(shí)現(xiàn)。方法一:include"stdio.h"intHCF(intxl,intx2);intmain(){unsignedintm,n;inti,j;printf("inputunsignedintmnscanf("%u%u",&m,&n);if(m>n)(unsignedinttemp;temp=m;m=n;n=temp;i=HCF(m,n);j=m*n/i;printf(wThesmallestLCM:%d\n"j);return0;)intHCF(intxl,intx2){intflagj;for(i=l;i<=xl;i++)(if(xl%i==0&&x2%i==0)(flag=i;)}printf("ThebiggestHCF:%d\n",flag);returnflag;注意事項(xiàng)?被調(diào)函數(shù)的函數(shù)參數(shù)名稱是可以重復(fù)的。因?yàn)楸徽{(diào)函數(shù)在這個(gè)函數(shù)周期內(nèi)是有效的,運(yùn)行過去就會(huì)被銷毀,隨意可以重復(fù)。注意主調(diào)函數(shù)和被調(diào)函數(shù)之間的參數(shù)問題,一般被調(diào)函數(shù)可以用函數(shù)返回值,保留下來。(不過我還是有疑問。)解答疑問:主函數(shù)的定義變量也只在主函數(shù)中有效,主函數(shù)也不能使用其他函數(shù)中定義的變量;不不同函數(shù)中可以使用相同名字的變量。在ー個(gè)函數(shù)內(nèi)部定義的變量是內(nèi)部變量,它只在本函數(shù)范圍內(nèi)有效,也就是說只有在本函數(shù)內(nèi)才能使用他們,在此函數(shù)之外是不能使用這些變量的。就是所謂的“局部變量"。全局變量的作用范圍和起始點(diǎn)也是有關(guān)系的。方法二:include"stdio.h"intmin(intxljntx2);intHCF(intxljntx2);intmain()(unsignedintm,n;intsum,flag;printf("inputunsignedintmn:");scanf("%d%d"/&m/&n);sum=HCF(mzn);flag=m*n/sum;printf(wThesmallestLCN%d\n\flag);return0;)intmin(intxljntx2){intz;z=xl>x2?x2:xl;return(z);}intHCF(intxljntx2)(intzjj;z=min(xl,x2);for(i=l;i<=z;i++)if(xl%i==0&&x2%i==0)j=i;))printf("ThebiggestHCF:%d\n",j);returnj;)注意事項(xiàng):z=xl>x2?x2:xl;是判斷輸出最小值,每次輸出x2位置的數(shù),等于z=xl<x2?x2:xl;z=xl>x2?xl:x2;是判斷輸出最大值,每次輸出xl位置的數(shù),等于z=xl<x2?xl:x2;考察的函數(shù)嵌套,嵌套不僅發(fā)生在主函數(shù),也發(fā)生在子函數(shù)中,但運(yùn)行流程都是ー樣的。可以看C語言書的嵌套流程圖。(注意參數(shù)問題,這也是方法一我不明白的地方,就是對(duì)嵌套沒有考慮)。Lab5Function(Partロ).編程計(jì)算Xn(要求:用遞歸函數(shù))。#include"stdio.h"floatfac(floatxl,intyl);intmain()intn;floatx,y;printf("intputx,n:");scanf("%f%d;&x,&n);y=fac(xzn);printf("output:%f\n;y);return0;)floatfac(floatxl,intyl)(floatf;if(yl==l)(f=xl;)elsef=fac(xLyl?l)》lス完成遞歸。returnf;)注意事項(xiàng):fac(xl/yl-l)*xl;.編程計(jì)算Ackermann函數(shù)Ack(m,n)(要求:用遞歸函數(shù))。對(duì)于mNO,n>0,Ack(m,n)定義如下:Ack(O,n)=n+lAck(m,0)=Ack(m-1/1)Ack(m,n)=Ack((m-1)/Ack(m,n-1))include"stdio.h"unsignedlongintAck(unsignedintm,unsignedintn);intmain()(unsignedintm,n;unsignedlongintnum;printf("inputunsignedintm,nscanf("%d%d\&m,&n);num=Ack(m/n);printf("output:ack(%d,%d)=%d\n"/m/n/num);)unsignedlongintAck(unsignedintm,unsignedintn)(unsignedlongintsum;if(m==0)(sum=n+l;}elseif(n==0)(sum=Ack(m-l,l);)else{sum=Ack(m-l,Ack(m,n-l));}returnsum;

)注意事項(xiàng):歷史上一個(gè)著名的遞歸函數(shù)!具體的資料大家可以到/wiki/Ackermann_function去看,懶得看英文的看,那幾個(gè)表格就行Valuesof4(.a)01234n00+11+12+13+14+1n+11A(0,1)A(0,A(1,0))a(o,a(i,D)A(0,A(l,2))A(0,A(l,3))n+2=2+(九+3)—32A(1,1)A(l,A(2,0))A(1,A(2,1))A(1,A(2,2))A(1,A(2,3))2n+3=2?(n+3)—33A(2,1)A(2,A(3,O))A(2,A(3,1))A(2,A(3,2))A(2,A(3,3))2(n+3)_34A(3,1)A(3,A(4,0))A(3,A(4,1))A(3,A(4,2))A(3,A(4,3))222-3n+35A(4,1)A(4,A(5,0))A(4,A(5,1))A(4,A(5,2))A(4,A(5,3))4(4,J(5,n-1))6A(5,1)A(5,A(6,0))A(5,A(6,1))A(5,A(6,2))A(5,A(6,3))N(5,A(69n-l)).4(1,2)=,4(0,,4(1,1))=.4(0,』(0,工(1,0)))=.4(0,,4(0,.4(0,1)))=.4(0,.4(0,2))=,4(0,3)=4..4(4,3)=.4(3,,4(4,2))=.4(3,.4(3,.4(4,1)))=.4(3,.4(3..4(3..4(4,0))))=.4(3,.4(3,.4(3,.4(3,1))))=.4(3,.4(3,.4(3,.4(2,.4(3,0)))))=.4(3,.4(3..4(3..4(2..4(2.1)))))=.4(3,.4(3,.4(3..4(2..4(1,.4(2,0))))))=.4(3,.4(3,.4(3,.4(2..4(1,.4(1,1))))))=.4(3,.4(3,.4(3,.4(2..4(1,.4(0,.4(1,0)))))))=.4(3,.4(3,.4(3..4(2..4(1,.4(0,.4(0,1)))))))=.4(3,.4(3,.4(3,.4(2,.4(1,.4(0,2))))))=.4(3,.4(3,.4(3,.4(2..4(1,3)))))=.4(3,.4(3,.4(3,.4(2..4(0,.4(1,2))))))=.4(3,.4(3,.4(3,.4(2..4(0,.4(0,.4(1,1)))))))=.4(3,.4(3,.4(3,.4(2,.4(0..4(0,.4(0,.4(1,0))))))))=.4(3,.4(3,.4(3,.4(2,.4(0,.4(0,.4(0,.4(0.1))))))))=.4(3,.4(3,.4(3,.4(2..4(0,.4(0,.4(0⑵))))))=.4(3,.4(3..4(3,.4(2,.4(0,.4(0,3))))))=.4(3,.4(3,.4(3,.4(2,.4(0,4)))))=.4(3,.4(3,.4(3,.4(2,5))))=.4(3,.4(3,.4(3,13)))=.4(3,.4(3,65533))=.4(3,265536-3)=???=22 -3..寫出下列程序的輸出結(jié)果Q)include"stdio.h"intxl=30/x2=40;voidsub(intxjnty)(xl=x;x=y;y=xl;)intmain()(intx3=10/x4=20;sub(x3/x4);sub(x2/xl);printf("x3=%d,\nx4=%d,\nxl=%d,\nx2=%d,\n\x3,x4,xl,x2);return0;}x3=10,x4=20,xl=40,x2=40,Pressanykeytocontinue注意事項(xiàng):如果在同一個(gè)源文件中,外部變量與局部變量同名,則在局部變量的作用范圍內(nèi),外部變量被"屏蔽",即不起作用。注意事項(xiàng):sub(x3,x4)中x3和x4值不改變的原因是他們兩個(gè)只負(fù)責(zé)將指?jìng)鹘o形參x和y,但是他們本身的指并不改變,然后在子函數(shù)中涉及到賦值操作改變了全局變量xl的值;sub(x2,xl)的操作也是ー樣的。(2)include"stdio.h"intx=3;voidincre()(staticintx=l;x*=x+l;printf("x=%d\n",x);}intmain(void)(inti;for(i=l;i<x;i++)increQ;return0;Lab6Array(PartI)1.產(chǎn)生1000—5000之間的100個(gè)隨機(jī)整數(shù),找出其中的素?cái)?shù),用冒泡法對(duì)找出的素?cái)?shù)進(jìn)行排序。請(qǐng)將產(chǎn)生的隨機(jī)數(shù)、找出的素?cái)?shù)和排序后的素?cái)?shù)分別輸出。include"stdio.h"include"time.h"include"stdlib.h"intprime(intx);voidsort(inta[100],intn);intmain()(inti,j=0,a[100],b[100];srand(time(NULL));/?初始化隨機(jī)數(shù)種子?/printf("Therandnumberis:\n');for(i=0;i<100;i++)2口]=1000+、時(shí))%4001;/?生成一^[200,500]區(qū)間內(nèi)的整數(shù)?/if(i%10==0)printf('\n");printf("%5d",a[i]);)//printf("\nn);//printf("\n");//printf("\n");printf("\nThePrimeis:\n");for(i=0;i<100;i++){if(prime(a[i])==l)(b[j]=a[i];ifG%10==0)(printf('\n");}printfC%5d',b[j]);j++;}////printf("\n");//printf("\n");//printf("\n");printf("\nThesortednumber:\n");sort(b,j);for(i=0;i<j;i++)(if(i%10==0)(printf("\n");}printf('%5d",b[i]);}printf("\n");return0;intprime(intx)inti;for(i=2;i<x;i++)//判斷是否為素?cái)?shù)(if(x%i==0)(break;))if(i==x)(return1;}}voidsort(inta[100],intn)inti,j;for(i=0;i<n-l-j;i++)(if(a[i]>a[i+l])(inttemp;temp=a[i];a[i]=a[i+l];a[i+l]=temp;)))}注意事項(xiàng):?起泡法,被調(diào)用函數(shù)中,數(shù)組是在子函數(shù)中改變整個(gè)數(shù)組都改變。.有一個(gè)按非遞增排列好的數(shù)組,今輸入ー個(gè)數(shù),要求按原來排序的規(guī)律將它插入到數(shù)組中。include"stdio.h"#defineSIZE11voidinsertdata(inta[SIZE],intdata);intmain()(intarray[SIZE],i,data;printf("intput10number:\n");for(i=0;i<SIZE-l;i++)(scanf("%d',&array[i]);)printf("inputinserdatanumber:\n");scanf("%d",&data);insertdata(array,data);printf("output11numberfor(i=0;i<SIZE;i++)printf("%d,',array[i]);return0;)voidinsertdata(inta[SIZE],intdata)(inti,j;for(i=0;i<SIZE-l;i++)(if(a[i]<data)(for(j=10;j>i;j-)(ag]=ag-l];)a[i]=data;break;注意事項(xiàng):?宏定義可以在整個(gè)源文件中使用;使用for循環(huán)時(shí)注意i的作用域和i的值,還有break是跳出當(dāng)前的循環(huán),而不是跳出所有循環(huán)。?還是數(shù)組在子函數(shù)中的調(diào)用和改變問題。.計(jì)算以下整數(shù)的標(biāo)準(zhǔn)差和平均值。-6,-12,8,13,11,6,7,2,-6,-9,-10,11,10,9,2其中,標(biāo)準(zhǔn)差的計(jì)算公式為: "方法一:#include"stdio.h"#include"math.h"floataverage(intarray[15]Jntn);voidstdvation(intarray[15],floatnljntn2);intmain()intarray[15]={-6,-12,8,13,ll,6,7,2,-6,-9,-10,ll,10,9,2};floatavnum;avnum=average(array/15);stdvation(array,avnum,15);return0;)floataverage(intarray[15]Jntn)(inti;floatav,sum=0;for(i=0;i<=14;i++)(sum+=array[i];)av=sum/n;printf("Thearrayaverageis%f\n"zav);returnav;voidstdvation(intarray[15],floatnljntn2)inti;doubleb[15];doubledeviation=0/sum=0;for(i=0;i<=14;i++)b[i]=pow(array[i]-nl/2);for(i=0;i<=14;i++)sum+=b[i];deviation=sqrt(sum)/n2;printf("Thestandarddeviationis%f\n",deviation);方法二:#include"stdio.h"#include"math.h#defineSIZE15voidaverage(intarray[SIZE]);intmain()(intarray[SIZE]={-6,-12,8,13,ll,6,7,2,-6,-9,-10,H,10,9,2};// inti;//// printf("input15intnumber:\n");//// for(i=0;i<SIZE;i++)// {//scanf(n%d",&array[i]);// )average(array);return0;voidaverage(intarray[SIZE])inti;floatav,suml=0;doublesum2=0,deviation;for(i=0;i<SIZE;i++)(suml+=array[i];)av=suml/SIZE;printf("Theaveragenumberis:%f\n",av);for(i=0;i<SIZE;i++)(sum2+=pow(array[i]-av,2);//運(yùn)算的類型轉(zhuǎn)換問題(最后都是轉(zhuǎn)換成double類型,所以不會(huì)出現(xiàn)警告)}deviation=sqrt(sum2)/SIZE;printf("Thestandarddeviationis:%f\n",deviation);}注意事項(xiàng):?宏定義可以用在整個(gè)源文件中,同時(shí)for循環(huán)的判定條件中也可以加上賦值運(yùn)算.4.輸入數(shù)組x的全部10個(gè)元素,求出數(shù)組x中各相鄰兩個(gè)元素的和并依次存放到a數(shù)組中,然后輸出a數(shù)組的所有元素。方法一:include"stdio.h"#defineSIZE10voidsumarray(intarray[SIZE]);intmain()(intx[SIZE]={-6,-12,8,13,11,6,7,2,-6,-9};// inti;// printf("input10intnumber// for(i=0;i<10;i++)// {// scanf("%d",&x[i]);// )sumarray(x);return0;voidsumarray(intarray[SIZE])inti;inta[SIZE/2];for(i=0;i<10;i++)a[(i+2)/2-l]=array[i]+array[i+l];i++;printf("outputthearrayis:");for(i=0;i<SIZE/2;i++)printf("%d,",a[i]);printf("\n");方法二:voidmain(){intx[10]={-6,-12,8,13/ll/6,7,2,-6,-9};inti,a[9];// clrscr();// for(i=0;i<10;i++)//// scanf("%d",&x[i]);for(i=0;i<9;i++)a[i]=x[i]+x[i+l];for(i=0;i<9;i++)printf("%4d",a[i]);printf('\n");.有!5個(gè)已經(jīng)排序好的數(shù)存放在ー個(gè)數(shù)組中,輸入一個(gè)數(shù),要求用折半查找法找出該數(shù)是數(shù)組中第幾個(gè)元素的值。如果該數(shù)不在數(shù)組中,則打印出"n。found"。方法一:intbin_search(intkey[]Jntlow,inthighjntk)(intmid;if(low>high)(return-1;}else(mid=(low+high)/2;if(key[mid]==k)returnmid;if(k>key[mid])returnbin_search(key/mid+l/high/k); //在序列的后半部分查找ッelsereturnbin_search(key,Iow,mid-1,k); /*在序列的前半部分查找?/intmain()intn,i,addr;intA[15]={2,3,5,7,8,10,12,15,19,21,33,45,60,66,99};printf("ThecontentsoftheArrayA[15]are\n");for(i=0;i<15;i++)printf("%d",A[i]); /*顯示數(shù)組A中的內(nèi)容?/printf("\nPleaseinputaintergerforsearch\n");scanf("%d",&n); /*輸入待査找的元素?/addr=bin_search(A,0,15,n);if(-l!=addr)/?查找成功?/(printf("%disatthe%dthunitisarrayA\n",n,addr);)else(printf("Thereisno%dinarrayA\n",n); /?査找失敗ッ)//getchar();return0;)注意事項(xiàng):這里用的函數(shù)的遞歸調(diào)用;方法二:/*#include<conio.h>*/#include<windows.h>voidmain()(ints[15]=億15,18,20,34,35,40,50,51,57,60,63,68,72,74};intc,low=0,high=14,mid;system("CLSM);scanf("%d",&c);while(low<=high)(mid=(low+high)/2;if(c==s[mid]){printf("%dand%d\n",s[mid],mid+l);break;}elseif(c>s[mid])Iow=mid+1;elsehigh=mid-l;)if(low>high)printf("nofound");)注意事項(xiàng):這里運(yùn)用則是while循環(huán)。?使用系統(tǒng)清屏system(てLSう函數(shù);要用頭文件#include"windows.h"clrscr();ffl#include<conio.h>,不過貌似老師報(bào)錯(cuò),并且還不知道清屏的作用。.輸入字符串(以回車結(jié)束),統(tǒng)計(jì)該字符串中元音字母(‘a(chǎn)'e'i'0’,'u')的個(gè)數(shù)。include"stdio.h"include"string.h"intmain()(charstring[81];inti,num,n=0;printf("inputsomechar:\n");gets(string);/*scanf("%s',string);*/for(i=O;i<strlen(string);i++)(if(string[i]=='a'||string[i]=='e'||string[i]=='i'||string[i]=='o'||string[i]=='u')(n++;))printf("outputtherequiredcharis:\n");printf("%d\n",n);return0;}注意事項(xiàng):?gets(string);不考慮輸入其中是否有空格,會(huì)直接輸入空格;如inputsonechai*:aeiouaiiououtputtherequiredcharis:10Pressanykeytocontinueinputsonechai*:aeiouaiiououtputtherequiredcharis:10Pressanykeytocontinue.?scanf("%s”,string);貝懦要注意輸入時(shí)的空格問題。如:inputsonechar:aeiouaeiououtputtherequiredcharis:5Pressanykeytocontinue.inputsonechar:aeiouaiiououtputtherequiredcharis:10PressanykeytocontinueLab6注意事項(xiàng),數(shù)組子函數(shù)的調(diào)用時(shí),數(shù)組的參數(shù)應(yīng)該是確定的數(shù)值,而不應(yīng)該是變量,(請(qǐng)參考數(shù)組的定義注意事項(xiàng))??!!同樣的二維數(shù)組和多維數(shù)組也是ー樣的道理,不過是數(shù)組參數(shù)還是子函數(shù)的調(diào)用時(shí),數(shù)組改變了,主函數(shù)中的數(shù)組也會(huì)改變。(應(yīng)參考Lab7關(guān)于二維數(shù)組)Lab7Array(PartH)上機(jī)前的預(yù)習(xí)在實(shí)驗(yàn)預(yù)習(xí)報(bào)告上畫好流程圖,并編寫好源程序及運(yùn)行程序所需的典型數(shù)據(jù)。1.將N行N列(N不超過5)的二維數(shù)組中每一行的元素逬行排序,第〇行從小到大排序,第1行從大到小排序,第2行從小到大排序,第3行從大到小排序 以此類推。方法一:include"stdio.h"#defineN3voidsortedup(intarray[][N],intn);voidsorteddown(intarray[][N],intn);intmain()(inti,j,flag;intarray[N][N]={{11,20,3},{1,2,3},{3,2,1});// intarray[N][N];// printf("inputthearrays:\n");// for(i=0;i<N;i++)// {// for(j=0;j<N;j++)// {//scanf("%3d",&array[i][j]);//////)flag=l;for(i=0;i<N;i++)(if(flag==l){sortedup(array,i);//flag=0;)else(sorteddown(array,i);//flag=l;)flag=-flag;}printf("thesortedarray:\n°);for(i=0;i<N;i++)for(j=O;j<N;j++)printf("%5d",array[i][j]);)printfC\n");}return0;}voidsortedup(intarray[N][N],intn)(inti,j;for(i=0;i<N-l;i++)(for(j=O;j<N-l-i;j++)(if(array[n][j]>array[n]0+1])(inttemp;temp=array[n]O];array[n]O]=array[n]O+l];array[n][j+1]=temp;))}voidsorteddown(intarray[N][N],intn)(intij;for(i=0;i<N-l;i++)(for(j=O;j<N-l-i;j++)(if(array[n][j]<array[n][j+l])(inttemp;temp=array[n][j];array[n][j]=array[n][j+l];array[n][j+l]=temp;注意事項(xiàng):使用的起泡法排序;值得學(xué)習(xí)的是整個(gè)編程算法很清晰,結(jié)構(gòu)也很合理,容易讓人理解。方法二:#include<stdio.h>#defineN3voidzheng(inta[][N],intk);voidfu(inta[][N]Jntk);voidmain()(inta[N][NLkjj;for(i=0;i<N;i++)for(j=0;j<N;j++)scanf(n%d';&a[i]g]);k=l;for(i=0;i<N;i++)if(k==l)zheng(aj);elsefu(aj);k=-k;)}voidzheng(inta[][N]Jnti){intmjn,temp;for(m=0;m<N;m++)for(n=m+l;n<N;n++)if(a[i][n]<a[i][m])(temp=a[i][m];a[i][m]=a[i][n];a[i][n]=temp;)for(j=0;j<N;j++)printf("%3d;a[i]g]);voidfu(inta[][N],inti)(intm,j,n,temp;for(m=0;m<N;m++)for(n=m+l;n<N;n++)if(a[i][n]>a[i][m]){temp=a[i][m];a[i][m]=a[i][n];a[i][n]=temp;)printf("\n");}注意事項(xiàng):完成排序的另ー種算法,其中值得注意的是踏實(shí)ス各每一行排好之后就輸出,這樣可以看出來輸出有錯(cuò)時(shí)是一子函數(shù)出現(xiàn)了問題式我們可以稍微借鑒ー下這樣的編程思路);2.用遞推法打印楊輝三角形(提示:利用二維數(shù)組).include"stdio.h"#defineSIZE10voidtriangle(intarray[][SIZE]);intmain()(inti,j;intarray[SIZE][SIZE];for(i=0;i<SIZE;i++)array[i][O]=array[i][i]=l;for(i=2;i<SIZE;i++)(for(j=l;j<i;j++)(array[i][j]=array[i-l]|j-l]+array[i-l]|j];)}printf("Theyanghuitriangle:\n");triangle(array);printf('\n");return0;}voidtriangle(intarray[][SIZE])(inti,j;for(i=0;i<SIZE;i++)for(j=O;j<i+lj++)printf("%5d",array。皿);printf("\n");}}注意事項(xiàng):for循環(huán)都是根據(jù)所要求的本身特性進(jìn)行設(shè)定的,我們需要信心觀察。3.找出ニ維數(shù)組中的鞍點(diǎn),即該位置上的元素在該行上最大,在該列上最小。也可能沒有鞍點(diǎn)。#include<stdio.h>#defineA3#defineB2voidfun(inta[][B],intf,intc);voidmain()|intij;inta[A][B]={{l,2},{0,6},{2,9}};// for(i=0;i<A;i++)//for(j=0;j<B;j++)// scanf("%d",&a[i][j]);fun(a,A,B);}voidfun(inta[][B],intm,intn)(intflag=0,i,j,k,colun,max;for(i=0;i<m;i++) 〃從i行開始查詢;(max=a[i][0];colun=0;for(j=0;j<n;j++) 〃從j列開始查詢;if(a[i][j]>max)(max=a[i]Q];colun=j; 〃記錄最大i,j;)flag=l;for(k=0;k<m;k++) 〃定j,在i中查找;if(max>a[k][colun])flag=O;continue;)if(flag==l)(printf("thepointisa[%d][%d]=%d\n",i,colun,max);break;)if(flag==0)printf("itisnotinthearray!\n");4.編程找出ー個(gè)二維數(shù)組中值最大和值最小的元素,并告知所在行號(hào)和列號(hào)。#include"stdio.h"#defineSIZE3voidmaxs(inta[][SIZE]Jntmjntn);voidmins(inta[][SIZE],intm,intn);intmain()(intij;intarray[][SIZE]={{7,0,8},{6,0,8},{7,2,3));// intarray[SIZE][SIZE];// for(i=0;i<SIZE;i++)//for(j=0;j<SIZE;j++)// scanf(n%d",&a[i]g]);maxs(array,SIZE,SIZE);mins(array,SIZE,SIZE);return0;voidmaxs(inta[][SIZE],intm,intn)intij,max,row,colum;max=a[0][0];row=0;colum=0;for(i=0;i<SIZE;i++)(for(j=O;j<SIZE;j++)(if(max>=a[i][j])(continue;}else(max=a[i][j];row=i;colum=j;))}printf("Thearraymaxnumberisa[%d][%d]=%d\n",row,colum,max);voidmins(inta[][SIZE],intm,intn){inti,j,min,row,colum;min=a[0][0];row=0;colum=0;for(i=0;i<SIZE;i++)(for(j=0;j<SIZE;j++)(if(min<=a[i][j])(continue;)else(min=a[i][j];row=i;colum=j;)printf("Thearrayminnumberisa[%d][%d]=%d\n",row,colum,min);}注意事項(xiàng):?continue的用法是結(jié)束本次循環(huán),及不執(zhí)行continue一下的語句,即時(shí)這些語句是在這個(gè)循環(huán)中也不再執(zhí)。include"stdio.h"#defineSIZE3voidmaxs(inta[][SIZE],intm,intn);voidmins(inta[][SIZE],intm,intn);intmain()(inti,j;intarrayO[SIZE]={{8,0,7},{6,0,8},{7,2,3});// intarray[SIZE][SIZE];//for(i=0;i<SIZE;i++)//for(j=0;j<SIZE;j++)// scanf(”%d”,&a[i][j]);maxs(array,SIZE,SIZE);mins(array,SIZE,SIZE);return0;}voidmaxs(inta[][SIZE],intm,intn)(intij,max,row,colum;max=a[0][0];// row=0;// colum=0;for(i=0;i<SIZE;i++)for(j=O;j<SIZE;j++)continue;row=0;colum=0;)else(max=a[i][j];row=i;colum=j;)})printf("Thearraymaxnumberisa[%d][%d]=%d\n"/row/colum/max);)voidmins(inta[][SIZE]Jntmjntn)intij,min,row,colum;min=a[O][O];// row=0;// colum=0;for(i=0;i<SIZE;i++)(for(j=0;j<SIZE;j++)(if(min<=a[i][j])(continue;row=0;colum=0;)else(min=a[i][j];row=i;colum=j;)printf("Thearrayminnumberisa[%d][%d]=%d\nM/row/colum/min);如果這樣寫時(shí):當(dāng)最大值最小值在第一排第一個(gè)時(shí)就會(huì)出現(xiàn)亂碼Chearraymaxnumberisa[-858993460][-8589934601=8rhearrayminnumberisa[01[11=0Pressanykeytocontinue方法二:(簡(jiǎn)單粗暴)#include<stdio.h>#defineA4#defineB5voidmax(inta[][B]);voidmin(inta[][B]);voidmain()inta[][B]={{21,54,15,32,64},{11,15,14,96,13},{15,17,20,23,1},{85,65,21,22,17}};max(a);min(a);voidmax(inta[][B])intijma,r,c;ma=a[O][O];for(i=0;i<4;i++)for(j=0;j<5;j++)if(a[i][j]>ma)(ma=a[i][j];r=i;c=j;}printf("ma=%d,row=%d,colun=%d\n",ma,r,c);)voidmin(inta[][B])(intij,mi,r,c;mi=a[0][0];for(i=0;i<4;i++)for(j=0;j<5;j++)mi=a[i][j];r=i;c=j;)printf("mi=%d,row=%d,colun=%d\n"/mi,r,c);)5.輸入兩個(gè)正整數(shù)m和n(m“,n?6),然后輸入該m行n列二維數(shù)組a中的元素,將該二維數(shù)組a中的每個(gè)元素向右移一列,最后一列換到第一列,移動(dòng)后的數(shù)組存到另ー個(gè)二維數(shù)組b中,按矩陣形式輸出b數(shù)組。include"stdio.h"#defineA4#defineB5voidexchagea(intarrayQ[B]);voidexchageb(intarray[][B]);intmain()intaO[B]={{21,54,15,32,64),{11,15,14,96,13},{15,17,20,23,-1},{85,65,21,22,17));//inti,j;// intaロ囘;〃printf("inputThearray:\n");〃 for(i=0;i<A;i++)//forQ=OJ<B;j++)// scanf("%d",&a[i][j]);exchagea(a);return0;)voidexchagea(intarray[][B])(//列在數(shù)組array中移動(dòng);inti,j;intb[A];for(i=0;i<A;i++)b[i]=array[i][B-l];for(i=0;i<A;i++)(array[i][j]=array[i][j-l];))for(i=0;i<A;i++)(array[i][O]=b[i];)printf("outputtherequireda:\n");for(i=0;i<A;i++)(for(j=0;j<B;j++)(printf('%-5d",array[i][j]);printfCXn");〃將array移動(dòng)到二維數(shù)組b中;exchageb(array);)voidexchageb(intarray[][B])(intb[A][B];inti,j;for(i=0;i<A;i++)(for(j=0;j<B;j++)(b[i](j]=array[i]Q];)}printf("outputtherequiredb:\n");for(i=0;i<A;i++)for(j=O;j<B;j++)printf("\n");))注意事項(xiàng):函數(shù)的嵌套時(shí),子函數(shù)完成函數(shù)的嵌套一定代入的形參,而是實(shí)參。stdio.hSTDIO.HIJ2015-3-3111:01,6.7KBLab8Pointers上機(jī)前的預(yù)習(xí)在實(shí)驗(yàn)預(yù)習(xí)報(bào)告上畫好流程圖,并編寫好源程序及運(yùn)行程序所需的典型數(shù)據(jù)。要求:本次實(shí)驗(yàn)的所有題目要求用指針來實(shí)現(xiàn)。.輸入10個(gè)整數(shù),將其中最大的數(shù)與第一個(gè)數(shù)ヌ撿,把最小的數(shù)與最后ー個(gè)數(shù)對(duì)換。要求:輸入、處理和輸出分別用ー個(gè)函數(shù)實(shí)現(xiàn)。方法一:include"stdio.h"#defineSIZE10//voidinput(int*p);voidmax_min_func(int*pjntn);//voidouput();intmain()(intarray[SIZE]={-1,-1,32,64,11,15,14,96,23,15};//input(array);max_min_func(array,SIZE);return0;)//voidinput(int*p)//{//inti;//printf("input10intnumber:\n");//for(i=0;i<SIZE;i++)//{〃 scanf("%d",p++);//)//printf("\n");//)

溫馨提示

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