基于指针的程序设计(4)
2023-12-21 06:50:44
第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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!