实验12 指针(2)
一、实验目的:
1、熟悉二维数组“行指针”、“列指针”的类型,加减1所移动的字节数,以及如何利用它们来存取数组元素;
2、熟悉指针变量引用字符串的方法,掌握字符指针变量作函数参数的使用方法;
3、熟悉函数指针的基本用法:
4、熟悉指针数组的基本用法和字符串的排序算法;
5、能够用指针解决一些实际问题。
二、实验内容
1、(基础题)以下程序的功能是:在主函数中定义一个int45列的数组并初始化,然后调用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中。请编写编程实现如下功能:根据输入的整数(123)分别调用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、(基础题)参考课件代码,完成指针数组的应用:学院现有92部,建立一个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小时内删除。