




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)8 指針(P148-P158)說明: 完成以下實(shí)驗(yàn)內(nèi)容后,將本文檔改名為“實(shí)驗(yàn)8_班級_學(xué)號_姓名.doc”,并按規(guī)定提交。 第一部分:練習(xí)題練習(xí)題1用一維數(shù)組和指針變量作為函數(shù)參數(shù),編程打印某班一門課程的最高分?jǐn)?shù)及其學(xué)號。程序代碼#include<stdio.h>#define ARR_SIZE 40int FindMax(int score, long num,int n,long *pMaxNum);void main()int scoreARR_SIZE,maxScore,n,i;long numARR_SIZE,maxNum;printf("Please e
2、nter total number:");scanf("%d",&n);printf("Please enter the number and score:n");for (i=0;i<n;i+)scanf("%ld%d",&numi,&scorei);maxScore=FindMax(score,num,n,&maxNum);printf("maxScore=%d,maxNum=%ldn",maxScore,maxNum);int FindMax(int score
3、,long num,int n,long *pMaxNum)int i;int maxScore;maxScore=score0;*pMaxNum=num0;for (i=1;i<n;i+)if (scorei>maxScore)maxScore=scorei;*pMaxNum=numi;return(maxScore);程序運(yùn)行截圖練習(xí)題2用二維數(shù)組和指針變量作為函數(shù)參數(shù),編程打印3個(gè)班學(xué)生的某門課程成績的最高分,并指出具有該最高分成績的學(xué)生是第幾個(gè)班的第幾個(gè)學(xué)生。程序代碼#include<stdio.h>#define CLASS 3#define STU 10#d
4、efine ARR_SIZE 40int FindMax(int scoreCLASSARR_SIZE, int m,int n,int *pRow,int *pCol);void main()int scoreCLASSARR_SIZE,maxScore,n,i,j,row,col;printf("Please enter student number in a class:");scanf("%d",&n);printf("Please enter score:n");for (i=0;i<CLASS;i+)for(
5、j=0;j<n;j+) scanf("%d",&scoreij); maxScore=FindMax(score,n,CLASS,&row,&col);printf("maxScore=%d,class=%d,number=%dn",maxScore,row+1,col+1);int FindMax(int scoreARR_SIZE,int n,int m,int *pRow,int *pCol) int i,j,maxScore;maxScore=score00;*pRow=0;*pCol=0;for (i=0;i<
6、;m;i+)for(j=0;j<n;j+)if(scoreij>maxScore)maxScore=scoreij;*pRow=i;*pCol=j;return(maxScore);程序運(yùn)行截圖問題解答思考題1能否使用二維數(shù)組或者而為數(shù)組的行指針作為函數(shù)參數(shù)進(jìn)行編程實(shí)現(xiàn)呢?可以,兩者都可以作為指針指向函數(shù),從而進(jìn)行地址傳遞思考題2利用動(dòng)態(tài)內(nèi)存分配,編寫計(jì)算任意m行n列二維數(shù)組中最大值的函數(shù)。程序代碼#include <stdio.h>#include <stdlib.h>int m;int n;int main() int *p; int *q; print
7、f("輸入行數(shù)m列數(shù)n: "); scanf("%d %d",&m,&n); p=(int*)calloc(m,n); q=p; printf("輸入數(shù)組n"); for(int i=0;i<m;i+) for(int j=0;j<n;j+) scanf("%d",p+); int max =*q; for(int k=0;k<m*n;k+) if(*(q+k)>max) max=*(q+k); printf("max=%dn",max); return
8、0;程序運(yùn)行截圖練習(xí)題4編寫返回字符指針函數(shù)搜尋一個(gè)字符串中第一個(gè)字符d,找到返回d的地址,在主函數(shù)內(nèi)用*代替d,然后打印該字符串。程序代碼#include <stdio.h>#define EMPTY 0char* findfirst(char *, char);int main() char string="do you study math today?" char *ptr; printf("%sn",string); ptr=EMPTY; ptr=findfirst(string, 'd'); if(ptr!=EMP
9、TY) *ptr='*' printf("%sn",string); return 0;char *findfirst(char *s,char d) while(*s!=d)&&(*s!='0') s+; if(*s=d) return s; else return EMPTY;程序運(yùn)行截圖問題解答思考題1若將函數(shù)findfirst中while語句改為:while(*s!=d)&&(*s!=0);可以嗎?不可以思考題2修改主程序?qū)⒆址械淖址鹍全部替換為*,應(yīng)如何編程實(shí)現(xiàn)。程序代碼#include <
10、stdio.h>#define EMPTY 0char* find(char *, char);int main() char string="do you study math today?" char *ptr; printf("%sn",string); ptr=EMPTY; do ptr=find(string, 'd'); if(ptr!=EMPTY) *ptr='*' while(ptr!=0); printf("%sn",string); return 0;char *find(ch
11、ar *s,char d) while(*s!=d)&&(*s!='0') s+; if(*s=d) return s; else return EMPTY;程序運(yùn)行截圖練習(xí)題5編寫函數(shù)求從1-n倒數(shù)的累加和,要求使用只想函數(shù)的指針。程序代碼#include <stdio.h>double sur(double);double sqrt(double);double cube(double);double sum(int,double(*p)(double);void main()double(*ptr)(double );int s=0;ptr=s
12、ur;printf("sum=%.2lfn",sum(4,ptr);double sum(int n,double(*p)(double)double s=0;int k;for(k=1;k<=n;k+)s+=(*p)(k);return s;double sur(double x)return(1.0/x);程序運(yùn)行截圖問題解答思考題1根據(jù)用戶需求選擇求平方累加和、立方累加和或倒數(shù)累加和。程序代碼#include <stdio.h>double x(double);double pf(double);double lf(double);double su
13、m(int,double(*p)(double);int main() double(*p)(double); int l; printf("倒數(shù)和輸入1,平方和輸入2,立方和輸入3:"); scanf("%d",&l); switch(l) case 1: p = x;break; case 2: p = pf;break; case 3: p = lf;break; default: break; int n; printf("輸入n:"); scanf("%d",&n); printf(&qu
14、ot;sum = %.2lfn",sum(n,p); return 0;double x(double i) return 1/i;double pf(double i) return (i*i);double lf(double i) return (i*i*i);double sum(int n, double(*p)(double) double s = 0; for(int k = 1; k <= n; k+) s += (*p)(double)k); return s;程序運(yùn)行截圖練習(xí)題6輸入三個(gè)數(shù)利用指針存入臨時(shí)動(dòng)態(tài)分配的變量中,并按從小到大的順序輸出。要求不能交換
15、無名變量中的數(shù)據(jù),通過改變指針的指向完成排序。程序代碼#include <stdio.h>#include <stdlib.h>int main() float *pa; float *pb; float *pc; float *pt; if(pa=(float*)malloc(sizeof(float) scanf("%f",pa); else printf("malloc for pa is failed!n"); if(pb=(float*)malloc(sizeof(float) scanf("%f",
16、pb); else printf("malloc for pb is failed!n"); if(pc=(float*)malloc(sizeof(float) scanf("%f",pc); else printf("malloc for pc is failed!n"); if(*pa>*pb) pt=pa; pa=pb; pb=pt; if(*pa>*pc) pt=pa; pa=pc; pc=pt; if(*pb>*pc) pt=pb; pb=pc; pc=pt; printf("%.2f %.2f
17、 %.2fn",*pa,*pb,*pc); return 0;程序運(yùn)行截圖第二部分:自測練習(xí)自測練習(xí)2輸入一個(gè)3*4的數(shù)組,先找出每一行中的最大元素,在分別除改行中的所有元素,最后輸出數(shù)組。要求定義函數(shù)形參時(shí),如果把二維數(shù)組定義為指針,調(diào)用時(shí)要用一級指針的地址。程序代碼#include <stdio.h>#include <string.h>float* func(float s134,float *p1)int m,n;float st;for(m=0;m<3;m+)for(n=0;n<4;n+)if(*p1>s1mn);elsep1=&a
18、mp;s1mn;st=*p1;p1=&s1m+10;for(n=0;n<4;n+)s1mn=s1mn/st;return &s100;int main(void)float s34,*p,*q;int i,j,k;for(i=0;i<12;i+)scanf("%d",&si/4i%4);p=&s00;q=func(s,p);for(j=0;j<3;j+)for(k=0;k<4;k+)printf("%0.2f ",*q);q+;printf("n");return 0;程序運(yùn)行截
19、圖自測練習(xí)4編程把命令行中的字符串(由數(shù)字字符組成)轉(zhuǎn)換成整數(shù)并累加輸出。程序代碼#include <stdio.h>#include <string.h>#include <math.h>#define N 100int main(void)char sN,*p=NULL;int i,j,k,len,sum,numN;j=0,k=0,sum=0;for(i=0;i<N;i+)numi=0;gets(s);len=strlen(s);p=&sN-1;for(i=0;i<N;i+)if(*p>='0')&(*p
20、<='9')numj+=(pow(10,k)*(*p)-'0');k+;if(*p=' ')j+;k=0;p-; for(i=0;i<N;i+)sum+=numi;printf("%dn",sum);return 0;程序運(yùn)行截圖自測練習(xí)5程序代碼#include <stdio.h>float matrix(float (*a)3,int n)int i,j;float sum=0;for(i=0;i<3;i+)for(j=0;j<3;j+)if(i=j)sum=sum+*(*(a+i)+j);if(j=2-i && i!=j)sum=sum+*(*
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年植物生長調(diào)節(jié)劑合作協(xié)議書
- 2025版權(quán)轉(zhuǎn)讓協(xié)議合同
- 2025年個(gè)人借款合同英文版
- 2025標(biāo)準(zhǔn)裝修合同模板
- 2025房屋租賃合同范文匯編
- 2025年ZRO2陶瓷磨介合作協(xié)議書
- 2025年特種氯乙烯共聚物項(xiàng)目建議書
- 2025年板臥式電除塵器項(xiàng)目建議書
- 2025年植物促生菌劑合作協(xié)議書
- 2025年單晶生產(chǎn)爐合作協(xié)議書
- GA 255-2022警服長袖制式襯衣
- GB/T 5202-2008輻射防護(hù)儀器α、β和α/β(β能量大于60keV)污染測量儀與監(jiān)測儀
- GB/T 39560.4-2021電子電氣產(chǎn)品中某些物質(zhì)的測定第4部分:CV-AAS、CV-AFS、ICP-OES和ICP-MS測定聚合物、金屬和電子件中的汞
- GB/T 3452.4-2020液壓氣動(dòng)用O形橡膠密封圈第4部分:抗擠壓環(huán)(擋環(huán))
- 計(jì)劃生育協(xié)會(huì)基礎(chǔ)知識(shí)課件
- 【教材解讀】語篇研讀-Sailing the oceans
- 抗腫瘤藥物過敏反應(yīng)和過敏性休克
- 排水管道非開挖預(yù)防性修復(fù)可行性研究報(bào)告
- 交通工程基礎(chǔ)習(xí)習(xí)題及參考答案
- 線路送出工程質(zhì)量創(chuàng)優(yōu)項(xiàng)目策劃書
- 100T汽車吊性能表
評論
0/150
提交評論