• 假期编程


    此博客链接: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("
    ");
            
        }
      
        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("
    ");
            
        }
      
        return 0;
        
    }
     
  • 相关阅读:
    【设计模式】模板模式
    【设计模式】策略模式
    【设计模式】空对象模式
    【设计模式】状态模式
    【设计模式】观察者模式
    【设计模式】备忘录模式
    【设计模式】中介者模式
    【设计模式】迭代器模式
    【设计模式】解释器模式
    【设计模式】命令模式
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/12253690.html
Copyright © 2020-2023  润新知