实验12 指针(2)
一、实验目的:
1、熟悉二维数组“行指针”、“列指针”的类型,加减1所移动的字节数,以及如何利用它们来存取数组元素;
2、熟悉指针变量引用字符串的方法,掌握字符指针变量作函数参数的使用方法;
3、熟悉函数指针的基本用法:
4、熟悉指针数组的基本用法和字符串的排序算法;
5、能够用指针解决一些实际问题。
二、实验内容
1、(基础题)以下程序的功能是:在主函数中定义一个int型4行5列的数组并初始化,然后调用print_array()、change_values()来输出、修改数组元素的值,请根据题意填写所缺代码,再运行程序,体会数组元素的不同访问方法。程序运行结果如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int a[4][5]={0};
void change_values(int *p, int n);
void print_array(int (*p)[5],int m);
printf("修改前,二维数组各行各列元素:\n");
(1)
(2) //调用change_values函数修改数组元素的值
printf("修改后,二维数组各行各列元素:\n");
(3)
return 0;
}
//函数change_values功能:生成1-100之间的随机整数修改数组各元素的值
//形参:p是数组的首地址,n是数组元素个数
void change_values(int *p, int n)
{
srand(time(0));
//代码段1
}
//函数print_array功能:输出二维数组各行各列元素的值
//形参:p是数组的首行地址,m是数组的行数(列数为5,以下不再重复)
void print_array(int (*p)[5],int m)
{
int i,j;
//代码段2
printf("\n");
}
2、(基础题)自己编写一个类似于strcat()的字符串连接函数,并在主函数中调用,输出连接后的内容。补充程序所缺代码,使程序运行输出如下所示结果:
#include <stdio.h>
int main()
{
char str[100]="How are you? ";
char *p="Fine, thank you.";
(1) ;//声明my_strcat()函数
(2) ;//调用my_strcat()函数
printf("连接后的字符串:%s\n\n",str);
return 0;
}
//函数功能:将第二个字符串内容连接到第一个字符串后面
void my_strcat(char * str1,char * str2)
{
//程序代码段
}
3、(基础题)函数指针的应用:sin(x)、cos(x)、tan(x)都是三角函数,形参、函数返回结果都是double类型,它们的声明、定义已包含在math.h中。请编写编程实现如下功能:根据输入的整数(1、2、3)分别调用sin(x)、cos(x)、tan(x),x的值也需要输入,请补充程序所缺代码:
#include <stdio.h>
#include <math.h>
int main()
{
int n;
double x;
printf("请输入整数1,2,3(分别调用sin(x)、cons(x)、tan(x)):");
scanf("%d",&n);
printf("请输入x指针与二维数组的值:");
scanf("%lf",&x);
(1) //定义指向函数的指针变量;
void fun(double (*p)(double z),double x, int n) ;//函数声明
(2) //调用fun()函数
return 0;
}
//函数功能: 根据n的值(1,2,3)分别调用sin(x)、cons(x)、tan(x),并输出结果;n为其它值时,提示“输入的数据有误,不能调用任何函数!”
void fun(double (*p)(double z),double x, int n)
{
//函数的实现代码
}
4、(基础题)参考课件代码,完成指针数组的应用:学院现有9系2部,建立一个char型指
针数组指向这些单位名称,之后用冒泡排序法排序,并输出排序后的单位名称,如下图所示:
补充程序所缺代码:
#include <stdio.h>
#include <string.h>
int main()
{
void bubble_sort(char *name[ ],int n);//函数声明,下同
void print(char *name[ ],int n);
char *dept[ ]={"管理系","国际经贸系","计算机系","电子系","数码媒体系","外语系","软件工程系","网络技术系","游戏系","基础部","思政部"};
(1) ;//调用冒泡排序函数
(2) ;//调用输出多个字符串函数
printf("\n");
return 0;
}
void bubble_sort(char *name[ ],int n)//冒泡排序函数
{
//程序代码段1
}
void print(char *name[ ],int n)//输出多个字符串函数
{
//程序代码段2
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论