Bootstrap

上海电力大学c语言评分标准,上海电力学院c语言报告:实验8 指针.doc

上海电力学院c语言报告:实验8 指针

上海电力学院

实验报告

课程名称 C语言程序设计 实验名称 实验8 指针

姓名 蔡福瑞 学号 班级 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(a

ptintf(“%d,%d\n”,*pt1,pt2);

图(8-14)

图(8-15)

二、程序填空:

(1)一位数组和指针。分别采用下标法,数组名法和指针发访问数组元素,求出10个数中的最大值。

下标法:如图(8-16)

#include

void main()

{ int a[10],i,max;

for(___________)

scanf(“%d”,______________);

for ( __________

;