




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、實驗8 指針(P148-P158)說明: 完成以下實驗內容后,將本文檔改名為“實驗8_班級_學號_姓名.doc”,并按規定提交。 第一部分:練習題練習題1用一維數組和指針變量作為函數參數,編程打印某班一門課程的最高分數及其學號。程序代碼#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);程序運行截圖練習題2用二維數組和指針變量作為函數參數,編程打印3個班學生的某門課程成績的最高分,并指出具有該最高分成績的學生是第幾個班的第幾個學生。程序代碼#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);程序運行截圖問題解答思考題1能否使用二維數組或者而為數組的行指針作為函數參數進行編程實現呢?可以,兩者都可以作為指針指向函數,從而進行地址傳遞思考題2利用動態內存分配,編寫計算任意m行n列二維數組中最大值的函數。程序代碼#include <stdio.h>#include <stdlib.h>int m;int n;int main() int *p; int *q; print
7、f("輸入行數m列數n: "); scanf("%d %d",&m,&n); p=(int*)calloc(m,n); q=p; printf("輸入數組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;程序運行截圖練習題4編寫返回字符指針函數搜尋一個字符串中第一個字符d,找到返回d的地址,在主函數內用*代替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;程序運行截圖問題解答思考題1若將函數findfirst中while語句改為:while(*s!=d)&&(*s!=0);可以嗎?不可以思考題2修改主程序將字符串中的字符d全部替換為*,應如何編程實現。程序代碼#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;程序運行截圖練習題5編寫函數求從1-n倒數的累加和,要求使用只想函數的指針。程序代碼#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);程序運行截圖問題解答思考題1根據用戶需求選擇求平方累加和、立方累加和或倒數累加和。程序代碼#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("倒數和輸入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;程序運行截圖練習題6輸入三個數利用指針存入臨時動態分配的變量中,并按從小到大的順序輸出。要求不能交換
15、無名變量中的數據,通過改變指針的指向完成排序。程序代碼#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;程序運行截圖第二部分:自測練習自測練習2輸入一個3*4的數組,先找出每一行中的最大元素,在分別除改行中的所有元素,最后輸出數組。要求定義函數形參時,如果把二維數組定義為指針,調用時要用一級指針的地址。程序代碼#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;程序運行截
19、圖自測練習4編程把命令行中的字符串(由數字字符組成)轉換成整數并累加輸出。程序代碼#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;程序運行截圖自測練習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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年農作物種子選擇試題及答案
- 就業能力提升培訓合同(2篇)
- 2024年農作物種子繁育員試題及答案全解析
- 2024年足球裁判員職業生涯的挑戰與機遇試題及答案
- 籃球裁判員資格考試解析及試題及答案
- 分析2024年農業植保員考核機制試題及答案
- 農業植保員實務課程的重要性與學習策略試題及答案
- 足球裁判員行為規范試題及答案分析
- 游泳救生員資格考試的經典試題解析
- 2025年中國LED彩幕市場調查研究報告
- 【超星爾雅學習通】機器的征途:空天科技網課章節答案
- 中國話劇史(本二·下)第二講課件
- GA 255-2022警服長袖制式襯衣
- GB/T 41908-2022人類糞便樣本采集與處理
- GB/T 5202-2008輻射防護儀器α、β和α/β(β能量大于60keV)污染測量儀與監測儀
- GB/T 4937.17-2018半導體器件機械和氣候試驗方法第17部分:中子輻照
- GB/T 3452.4-2020液壓氣動用O形橡膠密封圈第4部分:抗擠壓環(擋環)
- GB/T 28588-2012全球導航衛星系統連續運行基準站網技術規范
- GB/T 20523-2006企業物流成本構成與計算
- 發展心理學(重點回顧)
- 計劃生育協會基礎知識課件
評論
0/150
提交評論