c语言程序实验————实验报告十一
- 实验项目名称: 实验报告11 指针的基本使用
- 实验项目类型:验证性
- 实验日期:2024 年 5 月 23 日
一、实验目的
1.掌握指针变量的定义格式,会定义和使用指针变量
2.能正确建立指针变量与数组(包括一维、两维和字符串数组)的联系,并正确使用指针变量访问数组元素
3.掌握通过指针在函数间传递数组的各种方法
4.进一步学习程序调试
二、实验硬、软件环境
Windows计算机、Dev c 6.0
实验内容:
(1)已知两个变量a、b,利用指针法交换两个值并输出。
(2)定义一个有10个元素的数组a,利用指针法输入输出数组各元素。
(3)使用指针法,自定义函数计算某个整型数组的各元素之和。
(4)在一维数组中存入10个整数并排序,其中数组数据的输入、排序和输出功能用自定义函数实现。
三、实验步骤:
项目一
解题思路
int声明变量a,b,t和指针p1,p2;scanf调用&a,&b;p2指向b的地址&b;p1指向a的地址&a;输入定义式t=p2;p2=p1;p1=t;printf输出(a,b交换后的值p1,p2。
核心代码
#include<stdio.h>
int main()
{
int a,b,t,p1,p2;
printf("请输入两个值:\n");
scanf("%d%d",&a,&b);
p2=&b;
p1=&a;
t=p2;
p2=p1;
p1=t;
printf("a=%d,b=%d\n",p1,p2);
printf("31韩翔-项目1");
}
实验截图
项目二
解题思路
int声明数组a[10],变量i和指针p=a;for函数定义i=0;i<=9;i++,scanf定义,p+i;for函数再次定义i=0;i<=9;i++,printf输出和(p+i);printf("\n");
核心代码
#include<stdio.h>
int main()
{
int a[10],i,p=a;
for(i=0;i<=9;i++)
scanf("%d",p+i);
for(i=0;i<=9;i++)
printf("%2d",(p+i));
printf("\n");
printf("31韩翔-项目2");
}
实验截图
项目三
解题思路
自定义函数int fun(int,int);输入主函数int main(),int声明a[5]={1,2,3,4,5}和变量i;i=fun(a,5);其中调用函数fun并将结果赋值给i,printf输出各个数组元素之和i;int fun(intp,int n),int说明变量b,t=0;for函数定义(b=0;b<n;b++)输入定义是t+=(p+b);return返回t;
核心代码
#include<stdio.h>
int fun(int,int);
int main()
{
int a[5]={1,2,3,4,5},i;
i=fun(a,5);
printf("各个数组元素之和为:%d\n",i);
printf("31韩翔-项目3");
}
int fun(intp,int n)
{
int b,t=0;
for(b=0;b<n;b++)
t+=(p+b);
return t;
}
实验截图
项目四
解题思路
输入头函数#defineN10定义一个N,其值为10,声明了三个函数原型:inputdata用于输入数据,mysort用于排序数组,outdata用于输出排序后的数据。输入int inputdata(int *p,int n)。while函数定义(--n>=0)。scanf函数定义p+n。输入int mysort(int *p,int n),int说明变量i,j,k;for函数定义(i=0;i<n;i++),for函数定义(k=i,j=k+1;j<n;j++),if函数定义(p[k]>p[j]),k=j;if如果(k-i)输入定义式j=p[i],p[i]=p[k],p[k]=j;。输入int outdata(int *p,int n),while当(n>0),printf输出p[10-n--];输入int main(int argc,char *argv[]),int定义一个整数数组a,其大小为N(即10).调用inputdata函数,调用mysort函数,对数组a进行排序。调用outdata函数,输出排序后的数组元素。return返回0。
核心代码
#include <stdio.h>
#define N 10
int inputdata(int *p,int n){
printf("输入十个元素\n");
while(--n>=0)
scanf("%d",p+n);
}
int mysort(int *p,int n){
int i,j,k;
printf("\n");
for(i=0;i<n;i++){
for(k=i,j=k+1;j<n;j++)
if(p[k]>p[j])
k=j;
if(k-i)
j=p[i],p[i]=p[k],p[k]=j;
}
}
int outdata(int *p,int n){
while(n>0)
printf("%d ",p[10-n--]);
printf("\n");
}
int main(int argc,char *argv[]){
int a[N];
inputdata(a,N);
mysort(a,N);
outdata(a,N);
printf("31韩翔-项目4");
return 0;
}
实验截图
四、实验结果及分析
在项目一中scanf中没加逗号导致代码运行不了,后改正。
在项目三中int定义i后没加分号导致运行不了,后检查出并改正。
在项目四中scanf处%d少加一个逗号,后改正。