c語言程序設計習題答案_第1頁
c語言程序設計習題答案_第2頁
c語言程序設計習題答案_第3頁
c語言程序設計習題答案_第4頁
c語言程序設計習題答案_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

50866710088060508077080705noscore1score296score4score3P157_10假設有3個學生的全局信息,存放在二維數(shù)組s中,形成學生成績表。S的每一行存儲一位學生的有關信息,其中每行的第一列存放學生的學號。#defineN3ints[N][5]={{5,70,80,96,70},{7,80,50,60,80},{8,100,67,86,50}};從指定的成績單中找指定學號的成績表。函數(shù)返回找到的那位學生的成績表(可以不包括學號)的指針。在主調(diào)函數(shù)中輸出相關的數(shù)據(jù).分析:程序的功能及操作如下:根據(jù)題意,可以設計函數(shù)int*score(int(*p)[5],intm,intno)用于尋找指定學號的學生,函數(shù)score比較每一行中的第一個元素(學號),如果與輸入的學號匹配,返回該學生成績表的指針,否則返回空指針。函數(shù)score參數(shù)介紹:形參p是指向數(shù)組的指針,它所指數(shù)組有5個int型元素,形參m是學生數(shù);no是待找學生的學號。主函數(shù)按以下格式調(diào)用:p=score(s,N,num);其中,實參s為成績單首行數(shù)組的指針,N為成績單行數(shù),即學生人數(shù),num為某學生的學號,p為int型的指針,接收函數(shù)的返回值。int*score(int(*p)[5],intm,intno){int(*ap)[5];//ap與p同類型指針

for(ap=p;ap<p+m;ap++)if(**ap==no)return*ap+1;//返回找到的那位學生的成績表的指針。

returnNULL;//找不到,返回空地址}voidmain(){int*p,i,num;

while(1){ printf("請輸入要查找成績的學生的學號:\n"); scanf("%d",&num);//輸入學號

p=score(s,N,num); if(p==NULL){printf("學號%d不存在\n",num);return;} for(i=0;i<5;i++)

printf("%d\t",p[i]);//找到,輸出該同學的信息

printf("\n");} }2.已知某個學生表,輸出學生學號和成績。根據(jù)題意,可以設計函數(shù)search(int(*p)[5],intm,intno)

用于尋找指定學號的學生,并輸出該學生的各門課成績,其中,形參p是指向數(shù)組的指針,它所指數(shù)組有5個int型元素,形參m是學生數(shù);no是待找學生的學號。主函數(shù)按以下格式調(diào)用:search(s,N,n);

其中s為成績單首行數(shù)組的指針,N為成績單行數(shù),即學生人數(shù),n為某學生的學號。調(diào)用函數(shù)search,比較每一行中的第一個元素(學號),如果與輸入的學號匹配,則輸出其成績,否則打印出錯信息。2a.方案A:采用數(shù)組指針設計函數(shù)search(習題要求)voidsearch(int(*p)[5],intm,intno)/*數(shù)組指針的長度5不能省略*/{int(*ap)[5],/*ap與p為同類型指針*/*pp;//pp用于指向一位學生的信息數(shù)組中成分

for(ap=p;ap<p+m;ap++)//ap為行地址

if(**ap==no)//**ap為行中第0個元素的值(學號){printf("學號:%d\t成績:",no);for(pp=*ap+1;pp<*ap+5;pp++)//*ap+1等價于&ap[i][1]printf("%4d\t",*pp);/*用pp遍歷行中元素ap[i][j]*/printf("\n");return;}printf("學號%d不存在\n",no);}voidmain(){ int*p,i; search(s,N,7); search(s,N,5); search(s,N,2); search(s,N,8);}2b.方案B:采用二維可調(diào)數(shù)組設計函數(shù)searchvoidsearch(intp[][5],intm,intno){inti,j;for(i=0;i<m;i++)if(p[i][0]==no){printf("學號:%d\t成績:",no); for(j=1;j<5;j++) printf("%4d\t",p[i][j]); printf("\n");return; }printf("學號%d不存在\n",no);}

/*p157_13函數(shù)指針.cpp函數(shù)指針變量應用示例 */#include<stdio.h>intadd(intx,inty)/*定義實現(xiàn)加法的函數(shù)add*/{returnx+y;}intsub(intx,inty)/*定義實現(xiàn)減法的函數(shù)sub*/{returnx-y;}intmul(intx,inty)/*定義實現(xiàn)乘法的函數(shù)mul*/{returnx*y;}intdiv(intx,inty)/*定義實現(xiàn)整除的函數(shù)div*/{returnx/y;}intexecute(intx,inty,int(*p)(int,int)){ /*函數(shù)指針p作為execute函數(shù)的參數(shù)*/ intn; n=(*p)(x,y);/*通過函數(shù)指針變量p調(diào)用函數(shù)*/returnn; }intmenu(void)/*顯示菜單*/{intc;while(1){printf("1:計算兩個整數(shù)的和.\n"); printf("2:計算兩個整數(shù)的差.\n"); printf("3:計算兩個整數(shù)的積.\n"); printf("4:計算兩個整數(shù)的商.\n"); printf("0:或任意字符:quit!\n"); printf("Enteryourselect.\n"); if(scanf("%d",&c)!=1)break;/*輸入非法字符,退出*/ if(c>=0&&c<5)returnc; printf("Error!tryagain.\n");}}voidmain(){ inta,b,c,result;int(*fpt[])(int,int)={add,sub,mul,div};//函數(shù)指針數(shù)組

charop[4]={'+','-','*','/'};printf("歡迎進入小學生數(shù)學運算系統(tǒng),版本號v0.01\n");while(1){c=menu();if(c==0)break;/*結(jié)束程序執(zhí)行*/ printf("pleaseinputaandb\n"); scanf("%d%d",&a,&b); /*switch(c) {case1:result=execute(a,b,add);break; case2:result=execute(a,b,sub);break; case3:result=execute(a,b,mul);break; case4:result=execute(a,b,div);break; }*/ result=execute(a,b,fpt[c-1]);//用函數(shù)的指針數(shù)組

printf("計算的結(jié)果為:%d%c%d=%d\n",a,op[c-1],b,result);}}//p157_16#include<stdio.h>#include<time.h>#include<stdlib.h>#defineN10intx[N];voidinput(int*p[],intn){inti; longnow; srand(time(&now)); for(i=0;i<n;i++) { x[i]=rand()/100;//輸入<100的隨機數(shù)

p[i]=&x[i];//賦數(shù)組x的地址到指針數(shù)組p }}voidoutput(int*p[],intn){inti;printf("輸出輸入序列\(zhòng)n");for(i=0;i<n;i++)printf("%d\t",*p[i]);printf("\n\n");}voidsort(int*p[],intn){inti,j,t;for(i=0;i<N-1;i++)for(j=N-1;j>i;j--) if(*p[j]<*p[j-1]){t=*p[j];*p[j]=*p[j-1];*p[j-1]=t;}//交換}voidmain(){int*p[N],i;input(p,N);output(p,N);sort(p,N);printf("輸出排好的序列\(zhòng)n");for(i=0;i<N;i++) printf("%d\t",*p[i]);pri

溫馨提示

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

最新文檔

評論

0/150

提交評論