C语言程序设计试验八

更新时间:2023-10-06 04:56:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验八 指针

(验证性实验、综合性实验 2学时)

(一)、实验目的

1.掌握指针的概念、会定义和使用指针变量

2.掌握指针与一维数组、二维数组、字符数组的关系

(二)、实验内容

1.写出下列程序的运行结果 (1)#include

void fun(int * a,int * b) {

int k;

k=*a;*a=*b;*b=k; }

void main( ) {

int a=3,b=6; fun(&a,&b);

printf(“%d,%d”,a,b); } 运行结果及分析:运行结果为:函数将两数互换。

(2)#include

void fun(int * a,int * b) {

int *k;

k=a;a=b;b=k; }

void main( ) {

int a=3,b=6,*x=&a,*y=&b; fun(x,y);

printf(“%d,%d”,a,b); }

运行结果及分析:运行结果为:

程序将两个内存位置交换了,a,b,变量的值没有改变。 (3)#include

void main( ) {

int a[ ]={1,2,3,4,5,6,7,8,9,0},*p; p=a;

printf(“\\n%d”,*p+9);

}

运行结果及分析:运行结果为:

输出了数组第一项1+9的值,即10. (4)#include

fun(int *s,int n1,int n2) {

int i,j,t;

i=n1;j=n2; while(i

t=*(s+i);*(s+i)=*(s+j);*(s+j)=t; i++;j--; } }

void main() {

int a[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a;

fun(p,0,3);fun(p,4,9);fun(p,0,9);

for(i=0;i<10;i++) printf(\}

运行结果及分析:运行结果为: 交换N次后的结果。 2.程序填空

(1)下面函数用来求出两个整数之和,并通过形参传回两数相加之和值,填空。 #include

int add(int x,int y,_②_____z); void main() {

int a=3,b=4,c; add(_____①_________); printf(“%d\\n”,c); }

int add(int x,int y,_②_____z) {

_③_____=x+y; }

填空①:int *z 填空②:a,b,&c 填空③:*z 程序分析:

(2)下面的程序通过函数average计算数组中各元素的平均值,请填空。

#include

float average(int *pa,int n) { int i;

float avg=0.0; for(i=0;i

avg=avg+_¢ù______; avg=__¢ú_____; return avg; }

void main() {

int i,a[5]={2,4,6,8,10}; float m;

m=average(a,5);

printf(\}

填空①:*(pa + i) 填空②:avg/n 程序分析: 3.程序改错

写出有错误语句的行号,及改正后的语句全行。(每行语句前的序号只标注行号,非程序本身的内容)

(1)将两个整数值进行交换。 ① #include ② swap(int *p,*q);

{

③ int *t,a; ④ t=&a; ⑤ *t = *p; ⑥ *p = *q; ⑦ *q = *t; }

⑧ void main() {

⑨ int a =10,b=20; ⑩ swap(&a,&b);

⑾ printf(“%d%d\\n”,a,b);

}

错误语句的行号:②

改正后的语句全行:②swap(int *p,int *q) ⑾printf(\错误分析:

(2)写出程序运行结果:2010 ① #include ″stdio.h″

② main() {

③ int a[]={1,2,3,4,5,6,7,8,9,10,11,12}; ④ int *p=a+5; ⑤ int *q=null; ⑥ q=p+5;

⑦ printf(“%d %d”,*p,*q); }

错误语句的行号:①⑤⑦

改正后的语句全行:①#include \ ⑤int *q=NULL;

⑦printf(\ 错误分析:

4、编程题(选做题)

利用函数把字符数组b,连接到字符数组a的后面,并返回字符数组a中新的长度。

程序清单:

#include

int strcon(char *ptr1,char *ptr2); main() {

char a[20],b[10];

char *p1 = a,*p2 = b; int length;

printf(\ gets(p1);

printf(\ gets(p2);

length = strcon(p1,p2);

printf(\}

int strcon(char *ptr1, char *ptr2) {

char *n; n = ptr1;

while(*n != '\\0') n++; puts(ptr1);

while(*ptr2 != '\\0') *n++ = *ptr2++; *n='\\0';

return (n - ptr1); }编程注意事项:

实验七 数组(二) (验证性实验 2学时)

(一)、实验目的

1.掌握字符数组的定义、赋值和引用 2.字符串函数的使用。

(二)、预习内容

1.预习数组的定义、赋值及输入输出方法,以及典型的算法。 2.熟练循环语句与数组处理语句结合的方法。

(三)、实验内容

1.写出下列程序的运行结果 (1)#include

void main() {

char a[10]= \a[3]=’\\0’; b[3]=0;

printf(\printf(\} 运行结果及分析:运行结果为:

sizeof(),输出变量占存储空间大小,a为10;b为8;程序中两个赋值语句将a,b的第四位都变为了空字符,故字符串长度都为3。 (2)#include

void main() {

char ch[2][5]={\int i,j,s=0;

for(i=0;i<2;i++)

for(j=0;ch[i][j]>'\\0'&&ch[i][j]<='9';j+=2)

s=10*s+ch[i][j]-'0';

printf(\} 运行结果及分析:运行结果为:

S的值变化:6,63,638,6385. (3)下列程序的输出结果是: #include void main( ) {

char p1[20]=\strcpy(str+2,strcat(p1+2,p2+1));

本文来源:https://www.bwwdw.com/article/0sgd.html

Top