卑微怀念吧 关注:6贴子:764
  • 4回复贴,共1

各种编程题和算法

只看楼主收藏回复

冒泡算法
void bubble_sort(int a[], int n)
{
int i, j, temp;
for (j = 0; j < n - 1; j++)
for (i = 0; i < n - 1 - j; i++)
{
if(a[i] > a[i + 1])
{
temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
}


IP属地:山东1楼2017-02-27 10:47回复
    数列排序
    问题描述:给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
    输入格式:第一行为一个整数n。第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
    输出格式:输出一行,按从小到大的顺序输出排序后的数列。
    #include <stdio.h>
    #define M 200
    void bubble_sort(int a[], int n)
    {
    int i, j, temp;
    for (j = 0; j < n - 1; j++)
    for (i = 0; i < n - 1 - j; i++)
    {
    if(a[i] > a[i + 1])
    {
    temp = a[i];
    a[i] = a[i + 1];
    a[i + 1] = temp;
    }
    }
    }
    main()
    {
    int a[M],i,n;
    scanf("%d",&n);
    for(i = 0;i < n;i++)
    {
    scanf("%d",&a[i]);
    }
    bubble_sort(a,n);
    for(i = 0;i < n;i++)
    {
    printf("%d ",a[i]);
    }
    printf("\n");
    }


    IP属地:山东2楼2017-02-27 10:49
    回复
      回文数字
      问题描述
      观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字
        本题要求你找到一些5位或6位的十进制数字。满足如下要求:
        该数字的各个数位之和等于输入的整数。
      输入格式
      一个正整数 n (10<n<100), 表示要求满足的数位和。
      输出格式
      若干行,每行包含一个满足要求的5位或6位整数。
        数字按从小到大的顺序排列。
        如果没有满足条件的,输出:-1
      样例输入44
      样例输出
      99899
      499994
      589985
      598895
      679976
      688886
      697796
      769967
      778877
      787787
      796697
      859958
      868868
      877778
      886688
      895598
      949949
      958859
      967769
      976679
      985589
      994499
      样例输入60
      样例输出-1
      #include <stdio.h>
      int main()
      {
      int n,i,a,b,c,d,e,f,counter=0;
      scanf("%d",&n);
      for(i =10000;(i>=10000)&&(i<1000000);i++)
      {
      if(i<100000)
      {
      a=i%10;
      b=i/10%10;
      c=i/100%10;
      d=i/1000%10;
      e=i/10000;
      if(a+b+c+d+e==n)
      {
      if((a==e)&&(b==d))
      {
      printf("%d\n",i);
      counter++;
      }
      }
      }
      else
      {
      a=i%10;
      b=i/10%10;
      c=i/100%10;
      d=i/1000%10;
      e=i/10000%10;
      f=i/100000;
      if(a+b+c+d+e+f==n)
      {
      if((a==f)&&(b==e)&&(c==d))
      {
      printf("%d\n",i);
      counter++;
      }
      }
      }
      }
      if(counter==0)
      printf("-1\n");
      return 0;
      }


      IP属地:山东3楼2017-03-15 15:53
      回复
        煤球数目
        有一堆煤球,堆成三角棱锥形。具体:
        第一层放1个,
        第二层3个(排列成三角形),
        第三层6个(排列成三角形),
        第四层10个(排列成三角形),
        ....
        如果一共有100层,共有多少个煤球?
        #include <stdio.h>
        #define M 100
        int main()
        {
        int i,j,sum=0;
        for(i=0;i<=M;i++)
        {
        for(j=1;j<=i;j++)
        {
        sum+=j;
        }
        }
        printf("%d\n",sum);
        return 0;
        }


        IP属地:山东4楼2017-03-22 16:00
        回复
          生日蜡烛
          某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛
          现在算起来,他一共吹熄了236根蜡烛
          请问,他从多少岁开始过生日party的?
          #include <stdio.h>
          #define M 100
          int main()
          {
          int i,j,sum=0;
          for(i=1;i<M;i++)
          {
          for(j=i;j<M;j++)
          {
          if((j-i+1)*(i+j)/2==236)
          printf("%d\n",i);
          }
          }
          return 0;
          }


          IP属地:山东5楼2017-03-22 16:14
          回复