算法练习-day095个数求最值和ASCLL码排序

文章介绍了两个编程题目,一是设计一个使用顺序表找到5个整数中的最小值和最大值的程序,二是实现ASCLL码排序,对输入的三个字符按ASCII值升序输出。在顺序表的实现中强调了初始化和更新表长度的重要性,而在ASCII码排序问题中,通过交换字符实现了排序功能。
摘要由CSDN通过智能技术生成

题目一

设计一个从5个整数中取最小值和最大值的程序

  • 输入

    输入只有一组测试数组,为5个不大于一万的正整数

  • 输出

输出两个数,第一个为五个数中最小值,第二个为五个数中最大值,两个数字一空格隔开

思路

运用顺序表的知识,创建顺序表。将元素存储在顺序表中,然后类似于顺序表的删除操作,最后将最大最小值返回出来。

算法实现

#include <stdio.h>
#define MaxSize 5//定义顺序表的最大长度
typedef int ElemType ;
typedef struct {
	ElemType data[MaxSize];//顺序表的元素
	int length;//顺序表的当前长度
}Sqlist;
void InitList(Sqlist &L)//初始化顺序表里面的数据,千万别忘记加入一个数据,长度要加一
{
	for (int j = 0; j < MaxSize; j++)
	{
		scanf("%d", &L.data[j]);
		L.length++;
	}
}
bool MIN(Sqlist& L, ElemType &min, ElemType& max)
{	
	min = L.data[0];
	max = L.data[L.length - 1];
	int pos1 = 0;//假设0号元素最小
	int pos2 = 4;//假设最后一个元素最大
	for (int i = 0,j=L.length-1; i < L.length; i++,j--)
	{
		if (L.data[i] < min) {
			min = L.data[i];//如果比min小就赋给min
			pos1 = i;
		}
		if (L.data[j] > max) {
			max = L.data[j];//如果比max大,就发给max
			pos2 = j;
		}
	}
	return true;
}
int main()
{
	Sqlist L;
	L.length = 0;
	InitList(L);
	int min;
	int max;
	if (MIN(L, min,max))
	{
		printf("%d %d", min,max);
	}
	return 0;
}

示例

image.png

题目二

  • ASCLL码排序

输入三个字符(可以重复)后,按各字符的ASALL码从小到大的顺序输出这三个字符

  • 输入

第一行输一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格

  • 输入

对于每组输入数据,输出一行,字符中间用一个空格分开。

思路

先接受三个变量,通过if—else语句和中间变量实现从小到大的排序,再在外面写一个写一个while循环从而达到输入多行数据

算法实现

#include <iostream>  
#include<cstdio>  
using namespace std;  
  
int main()  
{  
    int N; //N代表需要输入几行数据
    char a, b, c, t;  /a,b,c用来三个字符,t为中间变量
    scanf("%d", &N);  
    while (N--)  
    {  
          
        cin >> a;  
        cin >> b;  
        cin >> c;  //这里不能直接用scanf,会让缓冲区的字符被读入
        if (a > b)  
        {  
            t = a; a = b; b = t;  
        }  
        if (a > c)  
        {  
            t = a; a = c; c = t;  
        }  
        if (b > c)  
        {  
            t = b; b = c; c = t;  
        }  
        printf("%c %c %c\n", a, b, c);  
    }  
    return 0;  
}

示例

image.png

总结

题目一虽然用数组会更简单些,但最近在学数据结构中的线性表那块,就想着用顺序表实现一下,在使用顺序表的时候,其中表里面输入数据还是要注意到表长的改变的,不能出错,然后后面都是常规操作了。题二就是要注意scanf在此题循环中不能直接使用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值