深圳大学-电信院-C程序设计实验-指针编程

实验目的

一、了解并掌握使用指针进行编程的方法;
二、了解并掌握指针作为函数参数时函数的编写与调用方法。

实验要求

本次实验不要求提交正式实验报告,但要求实验完成后,将程序及程序的运行结果依次拷贝到一个word文档中,统一形成一个.doc文档后提交至Blackboard。文档名可用你的姓名+你的学号。

实验要求

本次实验要求定义2个函数,编写主函数调用这2个自定义函数进行验证。
(第一个函数)编写一函数
void Insert_char_to_string (char * dest_str, char * orig_str)
将源字符串orig_str中每隔一个字符插入一个字符’m’, 插入后形成的字符串存放于目的字符串dest _str中。(如源字符串为“ABCDEFG12345” ,则目的字符串应为“AmBmCmDmEmFmGm1m2m3m4m5”。
(第二个函数)编写一个函数 float FindMax(float a[], int m, int *n),找出一个大小为m的实型数组a中的最大数,以及最大数对应的下标,并将找出的最大数作为函数FindMax的返回值,最大数的下标通过指针变量n传给调用函数。
(第三个函数)编写一个函数 int FindMin(float a[], int m),找出一个大小为m的实型数组a中最小数的下标,并将其作为函数FindMin的返回值。
(主函数)编写主函数对你所编写的上述3个函数进行调用验证。主函数应包含如下功能:
1、定义两个字符数组、一个实型数组,一个用于存贮最大值的实型变量max和一个用于存贮最大值下标的变量a,如:
char DestString[100],OrigString[100];
float b[10],max;
int a,min_idx;
2、从键盘读入一个字符串存入字符数组OrigString中;调用函数Insert_char_to_string得到插入后的字符串,函数的两个输入参数为DestString,OrigString;将目的字符串显示到屏幕上。
3、从键盘读入10个数存入数组b中; 调用函数FindMax找到最大值和最大值的下标,函数的输入参数分别为b,10和&a,函数的返回值存入变量max中;将最大值和最大值的下标显示到屏幕上;调用FindMin找到最小数的下标,将其赋给变量min_idx,并将最小数和最小数的下标显示到屏幕上; 将数组b中的最大数和最小数交换,将交换后数组各元素的值显示到屏幕上。

注意:字符串要使用字符数组存贮。

实验代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Insert_char_to_string(char *dest_str, char *orig_str)
{
    int len = strlen(orig_str);
    int i,j = 0;
    for (i = 0; i < len; i++)
    {
        dest_str[j++] = orig_str[i];
        if (i != len - 1)
        {
            dest_str[j++] = 'm';
        }
    }
    dest_str[j] = '\0';
}
float FindMax(float a[], int m, int *n)
{
    int i;
    float max_num = a[0];
    *n = 0;
    for (i = 1; i < m; i++)
    {
        if (a[i] > max_num)
        {
            max_num = a[i];
            *n = i;
        }
    }
    return max_num;
}
int FindMin(float a[], int m)
{
    int min_idx = 0;
    int i;
    for (i = 1; i < m; i++)
    {
        if (a[i] < a[min_idx])
        {
            min_idx = i;
        }
    }
    return min_idx;
}
int main()
{
    char DestString[100], OrigString[100];
    float b[10], max;
    int a, min_idx;
    printf("请输入一个字符串:");
    gets(OrigString);
    Insert_char_to_string(DestString, OrigString);
    printf("插入后的字符串为:%s\n", DestString);
    printf("请在接下来输入10个数字,以空格分隔:\n");
    int j;
    for (j = 0; j < 10; j++)
    {
        scanf("%f", &b[j]);
    }
    max = FindMax(b, 10, &a);
    printf("数组b中的最大数为%f,其下标为%d\n", max, a);
    min_idx = FindMin(b, 10);
    printf("数组b中的最小数为%f,其下标为%d\n", b[min_idx], min_idx);
    float temp = b[a];
    b[a] = b[min_idx];
    b[min_idx] = temp;
    printf("交换后数组中各元素的值为:\n");
    int i;
    for (i = 0; i < 10; i++)
    {
        printf("%f ", b[i]);
    }
    printf("\n");
    return 0;
}

实验结果

在这里插入图片描述

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值