基于指针的程序设计(4)

发布时间:2023年12月21日

第1关:字符串排序

任务要求 设计程序,利用指针数组、函数sort以及函数print将若干字符串按照字典序顺序(由大到小)输出。 函数原型: void sort(char *name[],int length); //排序函数 void print(char *name[],int length);//输出函数

输入要求 第一行输入一个正整数n(1<=n<=1e4),表示字符串的数量。 第二行至第n+1行,每一行输入一个字符串str(1<=len(str)<=1e4)

//根据题目要求完成程序设计
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
char arr[10000][10000]={0};
/*
    函数名称:sort
    函数功能:字符串降序排序
    函数参数:指针数组name以及数组长度length
*/

//设计函数sort
/*=====Begin=====*/
int cmp(const void* p1,const void* p2)
{
    return strcmp((char*)p1,(char*)p2);
}

/*======End======*/

/*
    函数名称:print
    函数功能:输出字符串
    函数参数:指针数组name以及数组长度length
*/

//设计函数print
/*=====Begin=====
void print(char arr[],int n)
{
    int i = 0;
    for(i = 0; i<n; i++)
    {
        printf("%s\n",arr[i]);
    }
    //printf("%s",arr[i]);
}*/

/*======End======*/


/*
    函数名称:solve
    函数功能:程序入口,实现相应功能
    函数返回值:void
*/

//设计函数solve
/*=====Begin=====*/
void solve()
{
    int n = 0;
    scanf("%d",&n);
    getchar();
    
    for(int i = 0; i<n; i++)
    {
       gets(arr[i]);
       //scanf("%s",arr[i]);
    }
    qsort(arr,n,sizeof(arr[0]),cmp);
    //print(arr,n);
    for(int i = 0; i<n; i++)
    {
        puts(arr[i]);
    }
}





/*======End======*/

第2关:字符串查找

任务要求 设计程序,利用指针数组和函数seek_result实现从若干字符串soustr中查找指定的字符串key。 函数原型:int seek_result(char *key, char* soustr[], int len)

输入要求 第一行输入一个正整数n(1<=n<=1e4),表示字符串的数量。 第二行至第n+1行输入n个字符串,每个字符串占一行,且保证1<=len(soustr[i])<=1e3

输出要求 查找成功输出第一次出现的位置,否则输出-1

//根据题目要求完成程序设计
#include <stdio.h>
#include<string.h>
/*
    函数名称:seek_result
    函数功能:从若干字符串中查找指定的字符串
    函数参数:目的字符串key、若干字符串soustr以及字符串的数量len
    函数返回值:整数,请自行考虑表达含义
*/
    char arr[10000][1000]={0};
    char str[10000]={0};
//设计函数seek_result
/*=====Begin=====*/
int seek(char *arr[], char* str,int n)
{
    int pos = -1;
    for(int i = 0; i<n; i++)
    {
        if(!strcmp(arr[i],str))
        {
            pos = i;
            break;
        }
    }
    return pos;
}

/*======End======*/


/*
    函数名称:solve
    函数功能:程序入口,实现相应功能
    函数返回值:void
*/

//设计函数solve
/*=====Begin=====*/
void solve()
{
    char* ss[10000];
    int n = 0;
    scanf("%d",&n);
    getchar();
    for(int i = 0;i<n; i++)
    {
        gets(arr[i]);
        ss[i]=arr[i];
    }
   // getchar();
    gets(str);
    int ret = seek(ss,str,n);
    printf("%d",ret);
}





/*======End======*/

第3关:计算平均值

任务要求 设计程序,实现使用动态数组存储所读入的整数,并计算它们的和与平均值。 函数原型: int getSum(int *array,int len); int getAve (int sum,int N);

输入要求 第一行输入一个整数n(1<=n<=1e3),表示动态数组array的长度。 第二行输入n个整数,依次表示数组array中的元素值。

输出要求 第一行输出动态数组array所有元素的和。 第二行输出动态数组array所有元素的平均值,四舍五入保留整数。

//根据题目要求完成程序设计
#include <stdio.h>

/*
    函数名称:getSum
    函数功能:计算全部数组元素(动态数组)的和
    函数参数:动态数组arr以及长度len
*/

//设计函数getSum
/*=====Begin=====*/
int getSum(int *array,int len)
{
    int sum = 0;
    for(int i = 0; i<len ;i++)
    {
        sum+=*(array+i);
    }
    return sum;
}

/*======End======*/

/*
    函数名称:getAve
    函数功能:计算全部数组元素(动态数组)的平均值
    函数参数:全部数据元素的和以及数量N
*/

//设计函数getAve
/*=====Begin=====*/
int getAve(int sum,int n)
{
    int ret = sum*1.0/n+0.5;
    return ret;
}

/*======End======*/


/*
    函数名称:solve
    函数功能:程序入口,实现相应功能
    函数返回值:void
*/

//设计函数solve
/*=====Begin=====*/
void solve()
{
    int n = 0;
    scanf("%d",&n);
    //int arr[1000]={0};
    int *arr = malloc(sizeof(int)*n);
    for(int i = 0; i<n; i++)
    {
        scanf("%d",arr+i);
    }
    int sum = getSum(arr,n);
    printf("%d\n",sum);
    printf("%d",getAve(sum,n));
    
}





/*======End======*/

文章来源:https://blog.csdn.net/Fan_041114/article/details/134933721
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。