C语言程序设计实验报告(第八章 指针)

您所在的位置:网站首页 c语言实验报告答案 C语言程序设计实验报告(第八章 指针)

C语言程序设计实验报告(第八章 指针)

2024-06-10 14:49| 来源: 网络整理| 查看: 265

C程序设计实验报告 姓名:黄静微  实验地点:宿舍  实验时间:2020.06.02 实验项目

8.3.1 指针基础及指针运算 8.3.2 数据交换 8.3.3 字符串反转及字符串连接 8.3.4 数组元素奇偶排列

一、实验目的与要求 加强对指针数列的理解 熟悉指针的定义、通过指针间接访问变量的方法 理解指针类型作为函数传递的方法 熟悉对字符指针及将指针作为函数打返回类型的操作 加强对使用指针对数组进行操作的理解 二、实验内容

1、实验练习:8.3.1 指针基础及指针运算 问题的简单描述: (1)定义一个整型指针变量p,使它指向一个整型变量a,定义一个浮点型指针q,使它指向一个浮点型变量b,同时定义另外一个整型变量c并赋初值3. (2)使用指针变量,并调用函数scanf()函数分别输入a和b的值。 (3)通过指针间接访问并输出a,b的值。 (4)按十六进制方式输出p,q的值及a,b的地址。 (5)将p指向c,通过p间接访问c的值并输出 (6)输出p的值及c的地址,并与上面的结果进行比较。 实验代码:

#include int main() { int *p,a,c=3; float *q,b; p=&a; q=&b; printf("Please Input the Value of a,b:"); scanf("%d,%f",p,q); printf("Result:\n"); printf("%d,%f\n",a,b); printf("%d,%f\n",*p,*q); printf("The Address of a,b:%p,%p\n",&a,&b); printf("The Address of a,b:%p,%p\n",p,q); p=&c; printf("c=%d\n",*p); printf("The Adress of c:%x,%x\n",p,&c); }

问题分析: 这个问题主要是要熟悉指针的定义和通过指针间接访问变量的方法,了解了基本的知识就没什么问题,注意一下不要犯小错误,很顺利地完成了这个实验。 运行结果:

2、实验练习:8.3.2 数据交换 问题的简单描述: (1)定义两个函数,分别为void swap1(int a,int b)和void swap2(int *a, int *b),用于交换a,b的值。 (2)从主函数中分别输入两个整形变量a、b。 (3)从主函数中分别调用上述两个交换函数,并打印输出变换后a,b的结果。 实验代码:

#include void swap1(int x,int y); void swap2(int *x,int *y); int main() { int a,b; printf("Please Input a=:"); scanf("%d",&a); printf("\nb=:"); scanf("%d",&b); swap1(a,b); printf("\nAfter Call swap1:a=%d b=%d\n",a,b); swap2(&a,&b); /*实参传递*/ printf("\nAfter Call swap2:a=%d b=%d\n",a,b); return 0; } void swap1(int x,int y) { int temp; temp=x; x=y; y=temp; } void swap2(int *x,int *y) { int temp; temp=*x; *x=*y; *y=temp; /*交换x,y地址上的值*/ }

问题分析:在填swap2的时候出现了问题,swap2的实参传递是a,b的地址,不是a,b,刚开始填的时候直接填a,b就不行,实验指导书上有说当使用指针作为形参时,实参必须是地址,也应是数组名。还有一点老师在上理论课的时候有说*x和*y交换的时候temp前面不需要加*,加了*表示的是地址交换,就不是值传递,这点在实验的时候也需要注意。 运行结果:

3、实验练习:8.3.3 字符串反转及字符串连接 问题的简单描述: (1)定义两个字符指针。 (2)定义一个函数char *reverse(char *str),通过指针移动方式将字符串反转。 (3)定义一个函数char link(charstr1,char *str2),通过指针移动方式将两个字符串连接起来。 (4)从主函数中分别调用上述函数,输入字符串并打印输出结果。 实验代码:

#include char *reverse(char *str); char *link(char *str1, char *str2); main() { char str[30], str1[30], *str2; printf("input reversing character string:"); gets(str); str2=reverse(str); printf("\noutput reversed character string:"); puts(str); printf("input string1:"); gets(str); printf("input string2:"); gets(str1); str2=link(str,str1); puts(str2); return 0; } char *reverse(char *str) { char *p,*q,temp; p=str, q=str; while(*p !='\0') //判断是否是最后一个数值 p++; p--; while(q


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3