假期编程

此博客链接:https://www.cnblogs.com/ping2yingshi/p/12253690.html

1.数据的交换输出(33min)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2016

Problem Description
输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。
Input
输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。
Output
对于每组输入数据,输出交换后的数列,每组输出占一行。
Sample Input
4 2 1 3 4 5
5 4 3 2 1 0
Sample Output
1 2 3 4
1 4 3 2 5
题解:此题难点在于n=0时输入结束,这里需要在控制台能持续输入时,判断输入是否为零,要是输入为零时,使用break,跳出循环,程序结束。
代码如下:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main(void)
{
   
    int n; 
    while(~scanf("%d",&n))
    { 
       if(n==0)
              break;
       int m[100]={0};
       int i;
       for(i=0;i<n;i++)
              scanf("%d",&m[i]);
       int j;
       int k=0;
       int temp;
       int Min=10000;
       for(j=0;j<n;j++)
             if(Min>m[j])
               {
                   Min=m[j];
                   k=j;
                }
       temp=m[0];
       m[0]=m[k];
       m[k]=temp;
               
                   
       for(i=0;i<n-1;i++)
             printf("%d ",m[i]);
       printf("%d",m[n-1]);
       printf("\n");
        
    }
  
    return 0;
    
}

2.数列有序 (19min)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2019

Problem Description
有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。
Input
输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。
Output
对于每个测试实例,输出插入新的元素后的数列。
Sample Input
3 3
1 2 4
0 0
Sample Output
1 2 3 4
 题解:此题考的主要时在数组中按顺序插入元素,找到插入位置时,记得是从后向前移动数据后,在把要插入的数据插入到相应位置,要是从前向后移动数据,会把后面的数据覆盖掉。
代码如下:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
//#define Min 100000
int main(void)
{
   
    int n; 
    int m;
    while(~scanf("%d %d",&n,&m))
    { 
        if((n==0)&&(m==0))
             break;
        int c[100]={0};
        int i;
        for(i=0;i<n;i++)
              scanf("%d",&c[i]);
        int j;
        int k;
        for(j=0;j<n;j++)
        {
           
               if(c[j]>m)
               {
                   for(k=n;k>j;k--)
                       c[k]=c[k-1];
                   c[j]=m;
                   break;
            }
        }
        for(i=0;i<n;i++)
        printf("%d ",c[i]);
        printf("%d",c[n]);
        printf("\n");
        
    }
  
    return 0;
    
}

 

 
posted @ 2020-02-02 21:02  萍2樱释  阅读(198)  评论(0编辑  收藏  举报