上海电力学院c语言报告:实验8 指针.doc
下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
2.下载的文档,不会出现我们的网址水印。
3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
文档包含非法信息?点此举报后获取现金奖励!
下载文档到电脑,查找使用更方便
15
积分
还剩页未读,继续阅读
关 键 词:上海电力学院c语言报告:实验8
指针
上海
电力
学院
语言
报告
实验
资源描述:
上海电力学院
实验报告
课程名称 C语言程序设计 实验名称 实验8 指针
姓名 蔡福瑞 学号 20101419 班级 2010027
专业 电气工程及其自动化(供用电技术方向)
同组人姓名 蔡福瑞、黄任凭、龚奕磊、傅庆燕、程旭
指导老师姓名 魏为民 实验日期 2010-12-27
一、实验目的
1、通过实验进一步掌握指标的概念,会定义和使用指针变量。
2、能正确使用数组的指针和指向数组的指针变量。
3、能正确使用字符串的指针和指向字符串的指针变量。
二、实验内容和步骤
1、改错
(1)指出下面程序错误的原因.
main()
{
int x=10,y=5,*px ,*py;
px=py;
px=&x’;
printf (“*px=%d, *py=%d, *px ,*py);
}
图(8-1)
该程序运行的整个过程如图(8-2)所示。
错误的原因:printf(”*px=%d,*py=%d, *px, *py);该行此处少了个引号。
修改后,运行结果如图(8-3)所示:
图(8-2)
图(8-3)
(2)下面的程序试图有如下运行结果:
Which style you want to:
Capital (c) or uncapital (a):c ↙
COMPUTER
Which style you want to:
Capital (c) or uncapital(a):u ↙
图(8-4)
请调试下面的程序,使其有如上执行结果.
#include
main()
{ char s*;
char c;
printf(“which style you want to :ln”);
printf(“capital(c) or uncapital(a):”);
c=getchar();
if(c=’c’) strcpy(s,”COMPUTER”);
else strcpy(s,”computer”);
put(s)
}
图(8-5)
该程序运行的整个过程如图(8-6)所示。
错误的原因:缺少库函数;指针格式错误; 回车的控制符为 \n ; ‘=’为赋值运算符,‘=='才是关系运算符;put只能输出一个字符,puts才能输出字符串。
修改后,运行结果如图(8-7)所示:
图(8-6)
图(8-7)
(3)下面的程序能获得上述运行结果吗?
main()
{
char *S=”COMPUTER”;
char c;
printf(“which style you want to \n”);
printf(“capital(c) or uncapital(U):”);
c=getchar();
if(c=’c’)
put(s);
else
{ s=”computer”;
puts(s);
}
}
图(8-8)
该程序运行的整个过程如图(8-9)所示。
错误的原因:①if(’c=c’)中‘=’为赋值运算符,‘=='才是关系运算符;②put语句只能输出一个字符,puts语句才能输出字符串。
修改后,运行结果如图(8-10)所示:
图(8-9)
图(8-10)
(4)设计一个C程序,用以测试下列各表达式的运算。
1)y=*px++; 2)y=*++py 3)y=(*py)++ 4)y=--*ppx++
图(8-11)
图(8-12)
(5)想使指针变量pt1指向a 和b中的大者,pt2指向小者,一下程序能否实现此目的。
swap(int *p1,int *p2)
{
int *p;
p=p1;p1=p2;p2=p;
}
main()
{ int a,b;
scanf (“%d,%d”,&a,&b);
pt1=&a;pt2=&b;
if(avoid main()
{ int a[10],i,max;
for(___________)
scanf(“%d”,______________);
for ( ___________ )
if ( ) max=a[i];
printf(“MAX=%d\n”,max);
}
图(8-17)
图(8-18)
数组名法:如图(8-19) 与运行结果:如图
#include void main()
{ int a[10],i,max;
for( _________ )
scanf(“%d”,a+i);
for( _________ )
if( _________ ) max=*(a+i);
printf(“MAX=%d\n”,max);
}
图(8-20)
图(8-21)
指针法:图(8-22)
#include void main()
{ int a[10];
int *p,max;
for( ________ )
scanf(“%d”,p);
for( _______ )
图(8-23)
if( _______ ) max=*p;
printf(“MAX=%d\n”,max);
}
图(8-24)
(2)字符串和字符指针。输入一个字符串,将其中的大写字母转换成小写字母,然后输出。
字符数组实现:
#include void main()
{
char s[20];int i;
gets( _________ );
for( __________ );
if( ___________ ) s[i]=s[i]+‘a’-‘A’;
i=0;
while( _________ )
{ printf(“%c”,s[i]);_______________ }
}
图(8-25)
图(8-26)
图(8-27)
提示;scanf()输入是时遇到空格认为字符串结束,用gets()输入时只有遇到回车才认为字符串结束。如键入any boy 并回车,则
scanf(“%s”,s)的结果为:
a
n
y
\0
gets(s)的结果为:
a
n
y
b
o
y
\0
三、编程序并上机调试运行程序(都要求指针处理)。
(1)输入三个整数,按有效到大的顺序输出,然后将程序改为:输入三个字符串,按由小到大顺序输出。
整数输入:图(8-28)
#include main()
{ int n1,n2,n3;
int *p1,*p2,*p3;
printf(“Please enter three numbers:”);
scanf("%d,%d,%d",&n1,&n2,&n3);
p1=&n1;
p2=&n2;
p3=&n3;
if(n1>n2)swap(p1,p2);
if(n1>n3)swap(p1,p3);
if(n2>n3)swap(p2,p3);
printf(“%d,%d,%d\n",*p1,*p2,*p3);
}
swap(int *p1,int *p2)
{ int p;
p=*p1;
*p1=*p2;
*p2=p;
}
图(8-29)
图(8-30)
三、实验结论与体会
(1)指针可以简单地称为“地址”。
(2)在定义指针变量时必须指定类型。
(3)指针变量前面的“*”表示该变量的类型为指针型变量。
(4)整常数只能赋给整型变量,而不能赋给指针变量。
(5)*(p+i)或*(a+i)是p+i或a+i所指向的数组元素,即a[i]。
我从指针是什么开始,到指针变量,我还学习指针引用数组、字符串,并且掌握了指向指针函数,经过老师得谆谆教导,我不仅了解、学会返回指针的函数、指针数组、和多重指针、以及动态内存分配与指向它的指针变量,刚开始时一知半解,完全处于糊涂的状态,经过老师的指点,与自己的琢磨,反复思考,逐渐的了解、弄懂!
只要我们努力学习,一定会有收获!
这段时间感谢老师的教导与帮助,以及对我的关怀!
2010027 蔡福瑞
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:上海电力学院c语言报告:实验8 指针.doc
链接地址:https://www.renrendoc.com/p-45437363.html