C语言与软件技术基础
实 验 报 告
课程名称
指导老师
班 级 实验名称 实验时间 姓 名 实验地点 提交时间 座 号
一、实验目的和要求
1、掌握指针和间接访问的概念,会定义和使用指针变量。
2、能正确使用数组的指针和指向数组的指针变量。
3、能正确使用字符串的执针和指向字符串的指针变量。
二、实验环境和方法
实验方法:
(一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。
(二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。
(三)根据实验内容,编译程序。
实验环境:Windows xp Visual C++6.0
三、实验内容及过程描述
实验内容:编译以下题目的程序并调试运行。
1、输入3个整数,按由大到小的顺序输出,然后将程序改为:输入3个字符串,按由小到大顺序输出。
①先编写一个程序,以处理输入3个整数,按由小到大顺序输出。运行程序,分析结果。 ②把程序改为能处理输入3个字符串,按由小到大的顺序输出。运行此程序,分析结果。 ③比较以上两个程序,分析处理整数与处理字符串有什么不同?例如:
(a)怎样得到指向整数(或字符串)的指针。
(b)怎样比较两个整数(或字符串)的指针。
(c)怎样交换两个整数(或字符串)。
2、将一个3×3的整数型二维数组转置,用一个函数实现之。
在主函数中用scanf函数输入以下数组元素:
1 3 5
7 9 11
13 15 19
将数组0行0列元素的地址作为函数实参,在执行函数的过程中实现行列互换,函数调用结束后在主函数中输出已转置的二维数组。
请思考:
① 二维数组的指针,某一行的指针、某一元素的指针个代表什么含义?应该怎么表示? ② 怎样表示i行j列元素及其地址。 3、将n个数按输入时顺序的逆序排列,用函数实现。 ①在调用函数时用数组名作函数实参。 ②函数实参改为用指向数组首元素的指针,形参不变。 ③分析以上二者的不同。 4、写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。 分别在程序中按以下两种情况处理: ①函数形参用指针变量。 ②函数形参用数组名。 实验步骤: ① 进入Visual C++ 6.0集成环境。 ② 输入自己编好的程序。 ③ 检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时改正。 ④ 进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”,根据提示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ⑤ 运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果是否正确,应运行多次,分别检查在不同情况下结果是否正确。 以下是各题源代码: 1、 输入3个整数,按由大到小的顺序输出,然后将程序改为:输入3个字符串,按由小到大顺序输出。 程序① #include<stdio.h> int main() { void swap(int *p1,int *p2); int n1,n2,n3; int *p1,*p2,*p3; printf("请输入3个数n1,n2,n3:"); 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",n1,n2,n3); return 0; } void swap(int *p1,int *p2) {int p; p=*p1;*p1=*p2;*p2=p; } 程序② #include<stdio.h> #include<string.h> int main() { void swap(char *,char *); char str1[20],str2[31],str3[20];
…… …… 余下全文