alantanis吧 关注:9贴子:33
  • 4回复贴,共1
#include <cstdio>#include <algorithm>using namespace std;int n, m, a[1000010];bool cmp(int a, int b){ return a > b;}int main(){ while(scanf("%d %d", &n, &m) == 2) { for(int i=1; i<=n; i++) scanf("%d", &a[i]); sort(a+1, a+n+1, cmp); for(int i=1; i<=m-1; i++) printf("%d ", a[i]); printf("%d\n", a[m]); } return 0;}


IP属地:浙江1楼2014-03-22 21:48回复
    #include<stdio.h>
    int a[105];
    int main()
    {
    int n,i,j,k ,min,sign,tmp,count;
    while(scanf("%d",&n)==1)
    {
    for(i=1;i<=n;i++)
    scanf("%d",&a[i]);
    count=0;k=1;
    for(i=k;i<=n;i++)
    {
    min=a[i];sign=1;//排序的是否完成的标志
    for(i=k;i<=n;i++)
    if(min>a[i])min=a[i];//找最小值
    for(i=k;i<=n;i++)
    if(a[i]==min){sign=i;break;}//找最小值的位置
    if(k!=sign)
    {tmp=a[k];//交换值
    a[k]=a[sign];
    a[sign]=tmp;
    count++;//记录交换次数
    }
    for(i=k;i<n;i++)//判断是否完成 排序,完成则退出循环
    { if(a[i]>a[i+1])
    {
    k=i;
    sign=0;
    break;
    }
    else if(i==n-1||sign==1)k=n;
    }
    }
    printf("%d\n",count);
    }
    return 0;
    }


    IP属地:浙江2楼2014-03-23 16:56
    收起回复
      2025-06-09 22:45:52
      广告
      #include <stdio.h>
      #include <ctype.h>
      #define LENGTH 100
      #define NUL 0x0
      int main(int argc,char **argv)
      {
      char aug_end[LENGTH], //加数
      add_end[LENGTH], //被加数
      sum[100];
      int cFlags, //进位标志位
      temp,
      i,
      j,
      i_aug_len, //加数的位数
      i_add_len, //被加数的位数
      ch_2_i_aug,
      ch_2_i_add;
      //初始化数组
      i=0;
      while(i<100)
      {
      aug_end[i]=NUL;
      add_end[i]=NUL;
      sum[i]=NUL;
      i++;
      }
      //输入加数
      i=0;
      i_aug_len=0;
      printf("Please input the augend:");
      while(isdigit(temp=getc(stdin)))
      {
      aug_end[i]=temp;
      i++;
      i_aug_len++;
      if(i>=100)
      break;
      }
      fflush(stdin);
      //数据对齐,将输入数据右对齐
      for(i=100-i_aug_len;i>0;i--)
      for(j=100-i;j>=0;j--)
      {
      aug_end[j+1]=aug_end[j];
      }
      i=100-i_aug_len;
      while(i>=0)
      {
      aug_end[i-1]=0x30;
      i--;
      }
      //输入被加数
      i=0;
      i_add_len=0;
      printf("Please input the augend:");
      while(isdigit(temp=getc(stdin)))
      {
      add_end[i]=temp;
      i++;
      i_add_len++;
      if(i>=100)
      break;
      }
      fflush(stdin);
      //数据对齐,将输入数据右对齐
      for(i=100-i_add_len;i>0;i--)
      for(j=100-i;j>=0;j--)
      {
      add_end[j+1]=add_end[j];
      }
      i=100-i_add_len;
      while(i>=0)
      {
      add_end[i-1]=0x30;
      i--;
      }
      //进行加法运算,按照位置进行计算,从右向左运算
      cFlags=0; //首次运算置位进位标志位为0
      for(i=99;i>=0;i--)
      {
      ch_2_i_aug=aug_end[i]-48; // char ——》 int
      ch_2_i_add=add_end[i]-48;
      temp=ch_2_i_aug+ch_2_i_add+cFlags;
      if(temp >=10)
      { //如果进位了,就应该将个位数取出来,同时将进位标志位置1
      cFlags=1;
      temp-=10;
      }
      else
      {
      cFlags=0;
      }
      sum[i]=temp+48; // int ——》 char
      }
      //输出运算结果
      puts("\nThe sum of the augadd and addend is:");
      if(cFlags==1)
      putc('1',stdout);
      for(i=0;i<100;i++)
      {
      if(isdigit(sum[i]))
      putc(sum[i],stdout);
      }
      putc('\n',stdout);
      return 0;
      }


      IP属地:浙江3楼2014-03-29 20:55
      收起回复