精华内容
下载资源
问答
  • 找出最小值

    2019-07-27 20:35:00
    找出最小值 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main(void) { 5 int i,n,num,min; 6 scanf("%d",&n); 7 for(i=1;i<=n;i++){ 8 scan...

    找出最小值

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 int main(void) {
     5     int i,n,num,min;
     6     scanf("%d",&n);
     7     for(i=1;i<=n;i++){
     8         scanf("%d",&num);
     9         if(i==1){
    10             min=num;
    11         }
    12         if(min>num){
    13             min=num;
    14         }
    15     }
    16     printf("min = %d",min);
    17     return EXIT_SUCCESS;
    18 }

     

    转载于:https://www.cnblogs.com/lemon7/p/11256619.html

    展开全文
  • 找出最小值结点,且打印该数值。 若该数值是奇数,则将其与直接后继结点的数值交换。 若该数值是偶数时,则将其直接后继结点删除。 要求:判断奇数或者是偶数需另用函数实现(函数调用)。 存储结构:链表。

    海纳百川,大道致远

    时光荏苒,青春在这里生长,为了理想我们在这里摩拳擦掌,
    岁月不居,梦想依旧灿烂,纯真的理想在这里放飞。
    

    题目及要求:

    设有一个由正整数组成的无序单链表,编写能够完成下列功能的算法:
    找出最小值结点,且打印该数值
    若该数值是奇数,则将其与直接后继结点的数值交换
    若该数值是偶数时,则将其直接后继结点删除
    要求:判断奇数或者是偶数需另用函数实现(函数调用)。
    存储结构:链表。

    思路与分析

    这道课设主要是运用了单链表,并且可以借助链表的知识点进行寻找。
    无序可以使用随机数来处理;’
    运用一个函数来调用判断是否为奇数或者偶数;
    奇数:将前面的删除,然后插入到后面那一个位置;
    偶数:将后面的直接删除。

    函数的运用

    需要运用的函数:
    
    void Action(LinkNode*& list, int min, int n)
    {
    	LinkNode* p = new LinkNode;
    	int i, count = 1;
    	int temp;
    	int k[MaxSize] = { 0 };					       //将初始值赋值为0
    	p = list->next;							       //因为不能 int k[n];
    
    	for (i = 0; i < n; i++)					       //将最小值个数个赋值为1
    	{
    		k[i] = 1;
    	}
    	i = 0;
    	while (p != NULL)						       //将第i个最小值出现的位置用k[i]表示
    	{
    		if (p->data == min)
    		{
    			k[i] = count;
    			i++;
    		}
    		p = p->next;
    		count++;
    	}
    														
    	if (min % 2 == 1)						       //这个数是奇数的情况
    	{
    		printf("该最小数%d为奇数,将其与其后的数值进行互换\n", min);
    		for (i = 0; i < n; i++)
    		{
    			ListDelete(list, k[i], temp);
    			ListInsert(list, k[i] + 1, min);
    		}
    	}
    	else                                           //这个数是偶数的情况	
    	{											
    		printf("该最小数%d为偶数,将其后的数值删除\n", min);
    		for (i = 0; i < n; i++)
    		{
    			ListDelete(list, k[i] + 1, temp);
    		}
    	}
    }
    
    主函数
    
    int main()
    {
    	srand((unsigned int)time(NULL));			   //随机数
    	int i;										   //用来计数
    	int min;									   //最小值的值
    	int count = 0;								   //标记最小值出现的次数
    	LinkNode* list;								   //初始化
    	InitList(list);
    	int temp;									   //中间变量
    	GetElem(list, 1, temp);
    
    	//随机数
    	ElemType a[MaxSize] = { 0 };				   //随机产生值
    	for (i = 0; i < MaxSize; i++)
    	{
    		a[i] = rand() % 100 + 1;
    	}
    
    	CreateList(list, a, MaxSize);
    
    	printf("建表结果:");
    	DispList(list);
    	
    	LinkNode* p = list->next;			           //用p来寻找最小的
    	while (p != 0)
    	{
    		if (p->data < temp)
    			temp = p->data;
    		p = p->next;
    	}
    	min = temp;
    	LinkNode* p2 = list->next;		               //这个用来统计最小值出现的次数,并用数组来循环处理
    
    	while (p2 != 0)
    	{
    		if (p2->data == min)
    			count++;
    		p2 = p2->next;
    	}
    
    	printf("这个最小值是:%d\n", min);
    	Action(list, min, count);					   //进行处理最小值
    	printf("这个表经过处理完成后:\n");
    	DispList(list);
    
    	DestroyList(list);				               //销毁空间
    
    	return 0;
    }
    

    运行文件

     无序单链表找出最小值结点.cpp
    
    /*
       设有一个由正整数组成的无序单链表,编写能够完成下列功能的算法:
    找出最小值结点,且打印该数值。
    若该数值是奇数,则将其与直接后继结点的数值交换。
    若该数值是偶数时,则将其直接后继结点删除。
    要求:判断奇数或者是偶数需另用函数实现(函数调用)。
    存储结构:链表。
    */
    
    #include <stdio.h>
    #include <time.h>
    #include <string.h>
    #include <stdlib.h>
    
    typedef int ElemType;
    //链表
    #define MaxSize 100
    
    typedef struct _tag_LinkNode
    {
    	ElemType data;
    	struct _tag_LinkNode* next;
    }LinkNode;
    //尾插法建表
    void CreateList(LinkNode*& list, ElemType a[], int n)
    {
    	LinkNode* s, * r;
    	list = (LinkNode*)malloc(sizeof(LinkNode));
    	list->next = NULL;
    	r = list;
    	for (int i = 0; i < n; i++)
    	{
    		s = (LinkNode*)malloc(sizeof(LinkNode));
    		s->data = a[i];
    		r->next = s;
    		r = s;
    	}
    	r->next = NULL;
    }
    //初始化链表
    void InitList(LinkNode*& list)
    {
    	list = (LinkNode*)malloc(sizeof(LinkNode));
    	memset(list, 0, sizeof(LinkNode));
    	list->next = NULL;
    }
    //输出链表的data
    void DispList(LinkNode* list)
    {
    	LinkNode* p = list->next;
    	while (p != NULL)
    	{
    		printf("%d ", p->data);
    		p = p->next;
    	}
    	printf("\n");
    }
    //获取在i位置的值给e
    bool GetElem(LinkNode* list, int i, ElemType& e)
    {
    	int j = 0;
    	LinkNode* p = list;
    	if (i <= 0)
    		return false;
    	while (j < i && p != NULL)
    	{
    		j++;
    		p = p->next;
    	}
    	if (p == NULL)
    		return false;
    	else
    	{
    		e = p->data;
    		return true;
    	}
    }
    //链表的插入
    bool ListInsert(LinkNode*& list, int i, ElemType e)
    {
    
    	int j = 0;
    	LinkNode* p = list, * s;
    	if (i <= 0)
    		return false;			//i错误返回假
    	while (j < i - 1 && p != NULL)		//查找第i-1个结点p
    	{
    		j++;
    		p = p->next;
    	}
    	if (p == NULL)					//未找到位序为i-1的结点
    		return false;
    	else							//找到位序为i-1的结点*p
    	{
    		s = (LinkNode*)malloc(sizeof(LinkNode));//创建新结点*s
    		s->data = e;
    		s->next = p->next;			//将s结点插入到结点p之后
    		p->next = s;
    		return true;
    	}
    }
    //链表元素的删除
    bool ListDelete(LinkNode*& list, int i, ElemType& e)
    {
    	int j = 0;
    	LinkNode* p = list, * q;
    	if (i <= 0) return false;
    	while (j < i - 1 && p != NULL)
    	{
    		j++;
    		p = p->next;
    	}
    	if (p == NULL)
    		return false;
    	else
    	{
    		q = p->next;
    
    		if (q == NULL)
    			return false;
    
    		e = q->data;
    		p->next = q->next;
    		free(q);
    
    		return true;
    	}
    }
    //销毁链表
    void DestroyList(LinkNode*& list)
    {
    	LinkNode* pre = list, * p = pre->next;
    	while (p != NULL)
    	{
    		free(pre);
    		pre = p;
    		p = pre->next;
    	}
    	free(pre);
    }
    //进行处理的函数
    void Action(LinkNode*& list, int min, int n)
    {
    	LinkNode* p = new LinkNode;
    	int i, count = 1;
    	int temp;
    	int k[MaxSize] = { 0 };					       //将初始值赋值为0
    	p = list->next;							       //因为不能 int k[n];
    
    	for (i = 0; i < n; i++)					       //将最小值个数个赋值为1
    	{
    		k[i] = 1;
    	}
    	i = 0;
    	while (p != NULL)						       //将第i个最小值出现的位置用k[i]表示
    	{
    		if (p->data == min)
    		{
    			k[i] = count;
    			i++;
    		}
    		p = p->next;
    		count++;
    	}
    														
    	if (min % 2 == 1)						       //这个数是奇数的情况
    	{
    		printf("该最小数%d为奇数,将其与其后的数值进行互换\n", min);
    		for (i = 0; i < n; i++)
    		{
    			ListDelete(list, k[i], temp);
    			ListInsert(list, k[i] + 1, min);
    		}
    	}
    	else                                           //这个数是偶数的情况	
    	{											
    		printf("该最小数%d为偶数,将其后的数值删除\n", min);
    		for (i = 0; i < n; i++)
    		{
    			ListDelete(list, k[i] + 1, temp);
    		}
    	}
    }
    
    int main()
    {
    	srand((unsigned int)time(NULL));			   //随机数
    	int i;										   //用来计数
    	int min;									   //最小值的值
    	int count = 0;								   //标记最小值出现的次数
    	LinkNode* list;								   //初始化
    	InitList(list);
    	int temp;									   //中间变量
    	GetElem(list, 1, temp);
    
    	//随机数
    	ElemType a[MaxSize] = { 0 };				   //随机产生值
    	for (i = 0; i < MaxSize; i++)
    	{
    		a[i] = rand() % 100 + 1;
    	}
    
    	CreateList(list, a, MaxSize);
    
    	printf("建表结果:");
    	DispList(list);
    	
    	LinkNode* p = list->next;			           //用p来寻找最小的
    	while (p != 0)
    	{
    		if (p->data < temp)
    			temp = p->data;
    		p = p->next;
    	}
    	min = temp;
    	LinkNode* p2 = list->next;		               //这个用来统计最小值出现的次数,并用数组来循环处理
    
    	while (p2 != 0)
    	{
    		if (p2->data == min)
    			count++;
    		p2 = p2->next;
    	}
    
    	printf("这个最小值是:%d\n", min);
    	Action(list, min, count);					   //进行处理最小值
    	printf("这个表经过处理完成后:\n");
    	DispList(list);
    
    	DestroyList(list);				               //销毁空间
    
    	return 0;
    }
    
    

    一些细节

    1.开始时是从只有一个最小值开始,然后逐渐变成用一个数组来解决,多个最小值。

    2.在中途的测试中 *p=list->next 问题有点疑惑,一直是出现错误,所以将文本中的ListLocate去掉了。

    参考文献

    [1] 李春葆.数据结构教程(第五版)[M].北京:清华大学出版社,2017

    交流讨论

    如有问题,欢迎通过邮箱:zack2429@vip.qq.com,进行交流探讨。
    源码在这:源码

    更新时间:2020.07.09

    展开全文
  • PTA 找出最小值 #include <stdio.h> int main() { int min,n,num; scanf("%d",&n); scanf("%d",&num); min = num; for(int i = 1;i <= n;i++) { scanf("%d", &num); if (min > ...

    PTA 找出最小值

    在这里插入图片描述

    #include <stdio.h> 
    int main()
    {
     int min,n,num;
     scanf("%d",&n);
     scanf("%d",&num);
     min = num;
     for(int i = 1;i <= n;i++)
     {
      scanf("%d", &num);
      if (min > num)
      {
       min = num;
      }
     }
     printf("min = %d", min);
     return 0;
    }
    

    注意空格 字符啥的。。。。因为PAT太过灵敏(就是不太好用哈)。

    展开全文
  • 汇编程序:找出最小值

    千次阅读 2017-05-12 15:51:35
    【任务】编一个子程序,在16个字节型数据中找出最小值,存放于y处assume cs:code,ds:data data segment x db 5, 6, 7, 8, 16, 4, 7, 12, 1, 9, 45, 23, 13, 20, 15, 11 y db ? data endscode segment …… code ...

    【任务】编一个子程序,在16个字节型数据中找出最小值,存放于y处

    assume cs:code,ds:data
    data  segment
       x db 5, 6, 7, 8, 16, 4, 7, 12, 1, 9, 45, 23, 13, 20, 15, 11
       y db  ?
    data  ends
    
    code  segment
         ……
    code  ends
          end  start

    【参考解答】

    assume cs:code,ds:data
    data  segment
       x db 5, 6, 7, 8, 16, 4, 7, 12, 1, 9, 45, 23, 13, 20, 15, 11
       y db  ?
    data  ends
    
    code  segment
    start:mov ax,data
          mov ds,ax
          mov cx, 16
          mov bl, 255
          lea si, x
    search:
          mov al,[si]
          cmp al,bl
          jae next
          mov bl,al
    next: inc si
          loop search
    over: mov y,bl
          mov ax,4c00h
          int 21h
    code  ends
          end  start
    展开全文
  • 练习4-10 找出最小值

    2020-07-05 07:33:50
    练习4-10找出最小值(20分) 题目要求: 本题要求编写程序,找出给定一系列整数中的最小值。 输入格式: 输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。 输出格式: 在一行中按照“min = ...
  • c语言 找出最小值

    千次阅读 2020-03-07 22:12:36
    本题要求编写程序,找出给定一系列整数中的最小值。 输入格式: 输入在一行中首先给出一个正整数 n,之后是 n 个整数,其间以空格分隔。 输出格式: 在一行中按照 “min = 最小值” 的格式输出 n 个整数中的最小值 #...
  • C语言练习4-10 找出最小值

    万次阅读 2018-10-02 20:28:22
    练习4-10 找出最小值 因为num没有初始化,在获取第一个num之后不知道系统是怎麽运行的,虽然结果是对的但是总是觉得那里怪怪的,麻烦路过的给指导下,蟹蟹~ 本题要求编写程序,找出给定一系列整数中的最小值。 输入...
  • 4-1-3 找出最小值

    2020-03-26 13:54:20
    题目:4-1-3 找出最小值 本题要求编写程序,找出给定一系列整数中的最小值。 输入格式: 输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。 输出格式: 在一行中按照“min = 最小值”的格式输出n...
  • 练习4-10 找出最小值 (20分) 本题要求编写程序,找出给定一系列整数中的最小值。 输入格式: 输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。 输出格式: 在一行中按照“min = 最小值”的格式...
  • 7-107 (C)找出最小值

    2020-10-10 19:57:37
    7-107 找出最小值 (20分) 本题要求编写程序,找出给定一系列整数中的最小值。 输入格式: 输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。 输出格式: 在一行中按照“min = 最小值”的格式输出n...
  • 实验4-1-3 找出最小值

    2020-07-14 10:49:19
    实验4-1-3找出最小值(20分) 题目要求: 本题要求编写程序,找出给定一系列整数中的最小值。 输入格式: 输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。 输出格式: 在一行中按照“min = ...
  • 建立一个由正整数组成的无序单链表,编写算法实现下列功能:找出最小值结点,且显示该数值;若该数值为奇数,则将其与直接后继结点的数值交换。若为偶数,则将其直接后继结点删除。
  • [PTA]练习4-10 找出最小值 本题要求编写程序,找出给定一系列整数中的最小值。 输入格式: 输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。 输出格式: 在一行中按照“min = 最小值”的格式输出n...
  • 7-9 找出最小值 (20 分)

    千次阅读 2019-09-26 20:02:21
    7-9 找出最小值 (20 分) 本题要求编写程序,找出给定一系列整数中的最小值。 输入格式: 输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。 输出格式: 在一行中按照“min = 最小值”的格式输出n个...
  • 7-107 找出最小值 (20分) 本题要求编写程序,找出给定一系列整数中的最小值。 输入格式: 输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。 输出格式: 在一行中按照“min = 最小值”的格式输出n...
  • 7-73 找出最小值 (20分)

    2021-01-14 11:28:36
    7-73 找出最小值 (20分) 本题要求编写程序,找出给定一系列整数中的最小值。 输入格式: 输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。 输出格式: 在一行中按照“min = 最小值”的格式输出n个...
  • 7-6 找出最小值 (20 分)

    2019-11-22 08:21:59
    7-6 找出最小值 (20 分) 本题要求编写程序,找出给定一系列整数中的最小值。 输入格式: 输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。 输出格式: 在一行中按照“min = 最小值”的格式...
  • 练习4-10 找出最小值 (20 分) 本题要求编写程序,找出给定一系列整数中的最小值。 输入格式: 输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。 输出格式: 在一行中按照“min = 最小值”的格式...
  • 练习4-10 找出最小值 (20分) 本题要求编写程序,找出给定一系列整数中的最小值。 输入格式: 输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。 输出格式: 在一行中按照“min = 最小值”的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,903
精华内容 2,361
关键字:

找出最小值