Lab7 指针.docx
- 文档编号:23218349
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:17
- 大小:105.85KB
Lab7 指针.docx
《Lab7 指针.docx》由会员分享,可在线阅读,更多相关《Lab7 指针.docx(17页珍藏版)》请在冰豆网上搜索。
Lab7指针
姓名
学号
班级
说明:
1.本次实验内容分两次上机完成;
2.完成以下实验内容后,将本文档改名为“学号_姓名_班级_Lab7.doc”;
3.在15周上机课时提交。
实验内容和实验要求(实验指导P148)
1.练习题一
运行结果截图:
2.练习题二
运行结果截图:
思考题及问题:
1答案:
不能
因为函数中需要用指针来改变主函数中的变量值,如果使用二维数组或行指针则只能返还最大值,无法改变主调函数中的变量值。
2案:
函数文本(修改部分红色字体标注)
#include
#include
intFindMax(int*p,intm,intn,int*pRow,int*pCol);
voidmain()
{
int*pScore,i,j,m,n,maxScore,row,col;
printf("Pleaseenterarraysizem,n:
");
scanf("%d,%d",&m,&n);
pScore=(int*)calloc(m*n,sizeof(int));
if(pScore==NULL)
{
printf("Noenoughmemory!
\n");
exit(0);
}
printf("Pleaseenterthescore:
\n");
for(i=0;i { for(j=0;j { scanf("%d",&pScore[i*n+j]); } } maxScore=FindMax(pScore,3,4,&row,&col); printf("maxScore=%d,class=%d,number=%d\n", maxScore,row+1,col+1); free(pScore); } intFindMax(int*p,intm,intn,int*pRow,int*pCol) { inti,j,max; max=p[0]; *pRow=0; *pCol=0; for(i=0;i { for(j=0;j { if(p[i*n+j]>max) { max=p[i*n+j]; *pRow=i; *pCol=j; } } } return(max); } 运行结果截图: 3.练习题三 运行结果截图: 思考题及问题: 1答案: 系统会报错,程序无法运行 2案: 试编写strcmp函数,源程序文本: #include intstrcmp(char*s1,char*s2) { intret,i=0; if(! s1||! s2) returns1-s2; while (1) { ret=s1[i]-s2[i]; if(ret||! s1[i]) returnret; i++; } } voidmain() { chara[10],b[10]; gets(a); gets(b); printf("%d\n",strcmp(a,b)); } 运行结果截图: 4.练习题四 运行结果截图: 思考题及问题: 1答案: 不可以 因为只有当while语句满足的条件成立时s的值才加1,更改后,无论条件成不成立,s的值都加1,所以不能改。 2案: 源程序文本(修改部分红色字体标注) #include voidfindfirst(char*s,chard) { while(*s) { if(*s==d)*s='*'; s++; } } intmain() { charstring[]="Oh! dayafterday."; printf("%s\n",string); findfirst(string,'d'); printf("%s\n",string); } 运行结果截图: 5.练习题五 运行结果截图: 思考题及问题: 1案: 源程序文本(修改部分红色字体标注) #include doublecube(double); doublecubee(double); doublecubeee(double); doublesum(int,double(*p)(double)); voidmain() { double(*ptr)(double); inti; printf("请输入编号: "); scanf("%d",&i); if(i==0) ptr=cube; else if(i=1) ptr=cubee; else if(i=2) ptr=cubeee; printf("sum=%.2lf\n",sum(4,ptr)); } doublesum(intn,double(*p)(double)) { doubles=0; intk; for(k=1;k<=n;k++) s+=(*p)(1.0/k); returns; } doublecube(doublex) { return(x*x*x); } doublecubee(doublex) { return(x*x); } doublecubeee(doublex) { return(1/x); } 运行结果截图: 6.练习题六 运行结果截图: 思考题及问题: 1案: 源程序文本(修改部分红色字体标注) #include #include voidmain() { float*pa,*pb,*pc,a,b,c; if(pa=(float*)malloc(sizeof(float))) scanf("%f",pa); else printf("mallocforpaisfailed! \n"); if(pb=(float*)malloc(sizeof(float))) scanf("%f",pb); else printf("mallocforpbisfailed! \n"); if(pc=(float*)malloc(sizeof(float))) scanf("%f",pc); else printf("mallocforpcisfailed! \n"); if(*pa>*pb) a=*pb; else a=*pa; if(a>*pc) a=*pc; if(*pa>*pb) b=*pa; else b=*pb; if(b<*pc) b=*pc; if(b>*pa&&*pa>a) c=*pa; else {if(b>*pb&&*pb>a) c=*pb; else c=*pc;}; printf("%.2f%.2f%.2f\n",a,c,b); } 运行结果截图: 2案: 源程序文本(修改部分红色字体标注) #include #include voidmain() { float*p,*head,temp; intn,i,j; printf("请输入要排序的整数的个数: \n"); scanf("%d",&n);head=(float*)calloc(n,2); printf("请输入%d个待排序的整数: \n",n); for(p=head;p scanf("%f",p); for(j=0;j for(i=0;i if(*(head+i)>*(head+i+1)) { temp=*(head+i); *(head+i)=*(head+i+1); *(head+i+1)=temp; } for(p=head;p printf("%.2f",*p);printf("\n"); } 运行结果截图: 自测练习 1.自测练习一 源程序文本: #include #include main() { inta[4]={3,11,8,22}; longs=1; int*p=a; for(inti=0;i<4;i++) { s=s*(*(p+i)); } printf("各元素之积为%ld\n",s); } 运行结果截图: 2.自测练习二 源程序文本: #include #include voidinput(floata[3][4]) { inti,j; for(i=0;i<3;i++) for(j=0;j<4;j++) { scanf("%f",&a[i][j]); } } voiddiv(floata[3][4],floatmax_number[3]) { inti,j; for(i=0;i<3;i++) { for(j=0;j<4;j++) { a[i][j]/=max_number[i]; } } } voidoutput(floata[3][4]) { inti,j; for(i=0;i<3;i++) { for(j=0;j<4;j++) { printf("%.2f\t",a[i][j]); } printf("\n"); } } voidoutput1(floata[3][4]) { inti,j; for(i=0;i<3;i++) { for(j=0;j<4;j++) { printf("%.2f\t",a[i][j]); } printf("\n"); } } voidmain() { floata[3][4]; inti,j; floatmax_number[3]; printf("输入3*4数组\n"); input(a); for(i=0;i<3;i++) { for(j=0;j<4;j++) {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Lab7 指针
![提示](https://static.bdocx.com/images/bang_tan.gif)