输入三个整数,找到最大数,islarge找出两数中较大数

img


输入三个整数,找到最大数,islarge找出两数中较大数max找出最大数min调用max获得最大数并输出

1.int is_larger(int,int)
2.int max(int,int,int)
3.max(a,b,c)
4.is_larger(a,is_larger(b,c))

int is_larger ( int a, int b)
int max ( int a, int b,int c)
max(a,b,c)
is_larger(a,b)>=c? is_larger(a,b):c

填空1: int is_larger(int a, int b);
填空2: int max(int a, int b, int c);
填空3: max(a, b, c);
填空4: is_larger(a, b) > is_larger(b, c) ? is_larger(a, b) : is_larger(b, c);

  • 这篇文章:编程函数保证接收的一定是一个介于min和max之间([min, max]区间内)的一个整数并最后返回该整数。它负责接收用户的输入,进行验证,如果用户输入的数不在min和max之间,则会提示继续输入,直 也许能够解决你的问题,你可以看下
  • 除此之外, 这篇博客: 【数据结构】设单链表中的数据元素递增排列,删除表中所有大于min且小于max的元素(用户输入),同时释放被删除节点的空间。中的 题目: 设单链表中的数据元素递增排列,设计一个算法,删除表中所有大于min且小于max的元素,同时释放被删除节点的空间,并设计算法的时间复杂度。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 来源:周桂红,等老师编写的数据结构第五十九页第二题

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct Node
    {
        int data;
        struct Node *next;
    }node;//定义一个结构体node
    
    node *init();
    void output(node *head);
    void delete_linklist(node *head, int min, int max);
    
    node *init()//创建单链表,要求用户输入值
    {
        node *head = NULL;
        node *p = NULL;
        node *s = NULL;
        int input, certain = 1, i = 0;
        head = (node *)malloc(sizeof(node));//定义头节点
        if(head == NULL)//如果申请的头节点失败
        {
            printf("sorry,申请空间失败!");
            exit(1);//说实话,这里我也不清楚为什么,借鉴小甲鱼(B站up主)的。
        }
    
        head->next = NULL;
        p = head;
        printf("您好,请输入数据,我们将会输入进去(记得由小往大),输入0结束!\n");
        while(certain)
        {
            i = i + 1;
            printf("请输入第%d个数字:", i);
            scanf("%d", &input);
            if(input != 0)
            {
                s = (node *)malloc(sizeof(node));
                if(s == NULL)
                {
                    printf("sorry,申请空间失败!");
                    exit(1);
                }
                s->data = input;
                p->next = s;
                p = p->next;
            }
            else
            {
                certain = 0;
            }
            p->next = NULL;
        }
        return head;
    }
    
    void output(node *head)//输出单链表里的数值
    {
            node *p = head->next;
            while(p != NULL)
            {
                printf("%d ", p->data);
                p = p->next;
            }
            printf("\r\n");
    }
    
    void delete_linklist(node *head, int min, int max)//删除单链表里处于最值中间的数
    {
        node *p = head->next;
        node *q;
        while(p != NULL)
        {
            if(p->data >= min && p->data <= max)
            {
                q->next = p->next;
                free(p);//这两行的意思是将我们找到的节点给释放
                p = q->next;
            }
            else
            {
                q = p;
                p = p->next;
            }
        }
    }
    
    int main()
    {
        int min, max;
        node *head = NULL;
        head = init();
    
        printf("您输入的数据分别是:\n");
        output(head);
        printf("\n");
        printf("请分别输入最小值和最大值,我们会删除您所创建的单链表的二者中间的数据:");
        printf("最小值:");
        scanf("%d", &min);
        printf("最大值:");
        scanf("%d", &max);
        delete_linklist(head, min, max);
    
        printf("\n删除后的结果是:");
    
        node *p = head->next;//遍历输出,用函数会出现莫名的bug,应该是有野指针,但由于我也不会,所以只能遍历了
        while(p != NULL)
        {
            printf("%d ", p->data);
            p = p->next;
        }
    
        return 0;
    }
    

    运行结果如下:
    在这里插入图片描述

  • 以下回答由chatgpt基于相关博客总结生成:

    针对问题中的要求,编写一个C语言程序如下:

    #include <stdio.h>
    
    int max(int a, int b, int c) {
        int max_temp = a;
        if (b > max_temp) {
            max_temp = b;
        }
        if (c > max_temp) {
            max_temp = c;
        }
        return max_temp;
    }
    
    int max_of_two(int a, int b, int c) {
        int max_temp = a > b ? a : b;
        if (c > max_temp) {
            max_temp = c;
        }
        return max_temp;
    }
    
    int main() {
        int a, b, c;
        printf("请输入三个整数,以空格分隔:");
        scanf("%d %d %d", &a, &b, &c);
    
        // 调用函数获取最大值,并将其输出
        printf("三个数字中的最大值为:%d\n", max(a, b, c));
    
        // 找出其中任意两个数中的最大值
        printf("%d和%d中的最大值为:%d\n", a, b, max_of_two(a, b, c));
        printf("%d和%d中的最大值为:%d\n", a, c, max_of_two(a, c, b));
        printf("%d和%d中的最大值为:%d\n", b, c, max_of_two(b, c, a));
    
        return 0;
    }
    

    程序中定义了两个函数:

    1. max函数用于找出三个整数中的最大值。
    2. max_of_two函数用于找出其中任意两个数中的最大值。

    在main函数中,首先读入三个整数,然后调用max函数获取三个整数的最大值,并将其输出。接下来三组调用max_of_two函数分别找出两个数中的最大值。

    程序运行截图如下: