来自匿名的C语言程序设计实验指导书 实验12
更新时间:2023-12-28 22:37:01 阅读量: 教育文库 文档下载
玉林师范学院 数学与信息科学学院 C语言上机实验
实验12 指针应用
班级
学号
姓名
学时
4
一、 实验目的
1. 重点掌握指针变量的定义和赋值; 2. 掌握指针变量的引用;
3. 初步掌握指向数组的指针的定义和使用;
4.掌握数组与指针的关系并能够利用指针解决数组的相关问题。 二、 实验内容
阅读程序
1. #include
{ int *p,a=15,b=5; p=&a; a=*p+b;
printf(\return 0; }
分析结果 将指针指向a,将指针和b相加,赋值给a,得a=a+b=20. 运行结果
2. #include
for( i=0;i<5;i++) { k= sub(&i);
printf(\}
return 0; }
int sub(int *p) { static int t=0; t=*p +t ; return t; }
1
2016年春季
玉林师范学院 数学与信息科学学院 C语言上机实验
编写一个指针静态局部变量,输出第一次的k=0 分析结果 第二输出时指针的值为2,k=1+0;同理k=3,6,10. 运行结果 3. #include
{ int a[ ]={1,2,3,4,5,6}; int *p ,i ; p=a;
*(p+4)+=3;
printf(\ return 0; }
分析结果 将指针指向a[0],又将指针*(p+4)=*(p+4)+4,那么输出指针p的值为1,*(p+3)=4. 运行结果 4. #include
{ int a[ ]={2,4,6,8,10}; int *p=a;
printf(\ printf(\ printf(\ printf(\ return 0; }
第一个输出的只是指针p的值;第二个先执行分析结果 p=a[1],再执行++p,得*(p+3);第三P=a[2] ++p得p=a[3] ;第四个输出*(p+3)。 运行结果 2
2016年春季
玉林师范学院 数学与信息科学学院 C语言上机实验
5.以下程序的输出结果是: #include
{ char b1[8]=\while (--pb>=b1)
{strcpy(b2,pb);puts(b2);} printf(\ return 0; }
第一次循环由于d>a,输出def,第二循环c>a 分析结果 输出b2=cedf;第三循环输出,b>a输出b2=bcdef 第四次循环;输出b2=abcdef,输出“abccdef”字符串的长度。 运行结果
完成程序
要求:依据题目要求,分析已给出的语句,填写空白?但是不要增行或删行,改动程序的结构? 1.以下程序通过指针实现求a数组中各元素的和,请在___填写正确内容并运行程序。 #include
{ int a[6]={2,4,6,8,10,12}; int s, i,*p ; s=0; p=a;
for (i=0;i<6;i++)
s=+*(p+i)//求各元素的和。
printf(“s=%d\\n”,s); return 0; }
运行结果:
2.下面程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串。
#include
{ char str[61],*p; int i;
for (i=0;i<60;i++)
3
2016年春季
玉林师范学院 数学与信息科学学院 C语言上机实验
{ str[i]=getchar();
if(str[i]=='\\n') break; }
str[i]='\\0'; p=str; while(*p)
putchar(*p++);//输出p指向单元的内容,并使得p指针指向下一下单元。 return 0; }
4
运行结果:
调试程序
要求:分析下列程序是否正确,如有错,错在哪儿?应如何改正?如正确,运行结果如何?上机调试之。
行号 #include
2. { int a , b ; 3. int *p ,*q ;
4. printf(\请输入两个整数:\5. scanf(\6. printf(\7. printf(\8. return 0; 9. }
错误行数:6
应改正为:第三行下面加入p=&a,q=&b;
运行结果:
2.以下程序实现求数组中的元素的和。 行号#include
1 { int a[10]={1,2,3,4,5,6,7,8,9,0}; 2 int sum ,*p ; 3 sum=0; 4 p=&a;
5 while( p
7 printf(“sum=%d\\n”,sum); 8 return 0; 9 }
2016年春季
玉林师范学院 数学与信息科学学院 C语言上机实验
错误行数:4,5,6.
应改正为:4:p=a;5while(p<(a+10).6sum+=*(p++);
运行结果:
3.以下程序的功能是:输入三个字符串,按由小到大的顺序输出; 行号#include
5 printf(\ enter three string:\\n\6 gets(str1); gets(str2);gets(str3);
7 if (strcmp(str1,str2)>0) swap(str1,str2); 8 if (strcmp(str1,str3)>0) swap(str1,str3); 9 if (strcmp(str2,str3)>0) swap(str2,str3); 10 printf(\
11 printf(\ 12 return 0; 13 }
14 void swap(char *p1,char *p2) 15 { char *p;
16 p=p1;p1=p2;p2=p; 17 }
错误行数:4,15,16.
应改正为:4: void swap(char *p1,char *p2);15: char p; 16:p=*p1;*p1=*p2;*p2=p;
5
运行结果:
编写程序
1. 一个数组中的15个值已经按升序排列存放,输入1个数,编程查找是否有该数,有显示其所在
的位置,没有,显示“No Found”,通过指针实现。 #include
int a[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,16}; int *p,b,i;
printf(\ scanf(\
2016年春季
玉林师范学院 数学与信息科学学院 C语言上机实验
p=a;
for(i=0;i<15;i++) {
if(*p++==b) {printf(\ break;} } if(i==15)
printf(\}
2. 编程实现教材P291第6题. #include
char a[20]; char *p=a; int i=0; gets(a); p=a;
while(*p++!='\\0') i++;
printf(\ return 0;
}
3. 编程实现教材P291第10题. #include
int sb(int *); int a[5][5],i,j,*p; p=&a[0][0]; for(i=0;i<5;i++) for(j=0;j<5;j++)
scanf(\ sb(p);
for(i=0;i<5;i++) {
for(j=0;j<5;j++)
printf(\ printf(\ }
6
2016年春季
玉林师范学院 数学与信息科学学院 C语言上机实验
}
int sb(int *q) {
int i,j,*qmax,*qmin,t; qmax=q; qmin=q;
for(i=0;i<5;i++) for(j=0;j<5;j++) {
if(*qmax<*(q+5*i+j)) qmax=q+5*i+j; if(*qmin>*(q+5*i+j)) qmin=q+5*i+j; }
t=*(q+12);
*(q+12)=*qmax; *qmax=t; t=*q;
*q=*qmin; *qmin=t; qmin=(q+1); for(i=0;i<5;i++) for(j=0;j<5;j++)
if((q+5*i+j)!=q&&*qmin>*(q+5*i+j)) qmin=q+5*i+j; t=*(q+4);
*(q+4)=*qmin; *qmin=t; qmin=(q+1); for(i=0;i<5;i++)
for(j=0;j<5;j++)
if((q+5*i+j)!=q&&(q+5*i+j)!=(q+4)&&*qmin>*(q+5*i+j)) qmin=(q+5*i+j);
t=*(q+20);
*(q+20)=*qmin; *qmin=t;
qmin=(q+1); for(i=0;i<5;i++) for(j=0;j<5;j++)
if((q+5*i+j)!=q&&(q+5*i+j)!=(q+4)&&(q+5*i+j)!=(q+20)&&*qmin>*(q+5*i+j)) qmin=(q+5*i+j); t=*(q+24);
7
2016年春季
玉林师范学院 数学与信息科学学院 C语言上机实验
*(q+24)=*qmin; *qmin=t; return 0; }
三.实验总结
这次试验为了提高我们对指针的了解程度,和运用静态局部变量的用法。 如何使用数组指针。
8
2016年春季
正在阅读:
新课程标准下高中英语教学的生活化——读陶行知生活教育理论有感09-02
产业经济学专业研究生中文参考资料选录11-07
《小学语文名师教学艺术》读后感05-07
读《平凡的世界》有感1000字-推荐word版(4页)06-27
2020年税务稽查年度总结范文12-02
走进高中作文04-01
软件工程复习的几个知识点和例题02-28
国家开放大学理工英语3单元自测1试题04-29
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 实验
- 指导书
- 程序设计
- 来自
- 匿名
- 语言
- 护栏现场质量施工记录表
- 园林建筑设计1 - 图文
- 2019高考化学二轮复习第一部分专题一物质结构元素周期律专题强化练
- 2010年高一物理教案全套(第三章)
- 锅炉型号和参数
- 大学生对马克思主义和中国共产党认识的调查问卷及总结报告
- 加快西津渡文化旅游产业发展 - 打造镇江特色博物馆群
- 高中数学教学论文:浅谈二次函数在高中阶段的应用-word范文(3页)
- 教科版六年级下册科学《物质发生了什么变化2》教学设计
- 经理培训心得3篇
- 单片机,摇摆,LED显示,时钟,电赛,电子大赛,报告 - 图文
- 国际专利技术许可合同样本
- 会计(2016) 第25章 企业合并 课后作业
- 大学生应为建设文化强国而努力
- 2012河南省初中学业水平暨高级中等学校招生考试试卷
- 高中化学翻转课堂中学习任务单的设计探讨
- 新人教版六年级数学下册第6单元《整理与复习》试题(1)、小升初数学试卷
- 农业推广理论与实践问题及答案
- 教师技能大赛新闻稿
- 三年级数学一到三单元测试题 doc