看不穿你的灵魂吧 关注:2,522贴子:835
  • 6回复贴,共1
121212


IP属地:山东1楼2016-12-22 14:11回复
    Xman趁假期修剪花园,修成X形。Xman的花圃是一个n*n的正方形,其中n为大于等于3的正奇数。在每个位置上都有一株植物,对应的正整数是该植物的高度h。4Xman的修剪策略是,首先把不在两条对角线上的植物通通铲光,然后在对角线上找到最矮的一株植物,把剩余的其他植物都修剪成与它等高,这样一个漂亮整齐的X型就出来了。4Xman把剪下的植物卖掉,每1单位高度的植物可以卖2美元。你帮Xman计算一下一共可以卖多少钱。
    ==========================================================================
    int n,i,j,sum, min; //sum计算累加和,min记录最小值
    scanf("%d",&n);
    int a[n][n];
    min = N;
    for (i = 0; i < n; i ++)
    {
    for (j = 0; j < n; j ++) //一边读数,一边求出对角线上的最小值
    {
    scanf("%d",&a[i][j]);
    if (i == j || (i + j + 1) == n)//表示对角线
    min = a[i][j];
    }
    sum = 0;
    }
    for (i = 0; i < n; i ++)
    {
    for (j = 0; j < n; j ++)
    {
    sum += a[i][j]; //求和,对角线上的要减去min
    if (i == j || (i + j + 1) == n)
    {
    sum -= min;
    }
    }
    }
    printf("%d\n",sum*2);


    IP属地:山东2楼2016-12-22 14:15
    回复
      ===打表法===
      手机上的字母:1--1,abc--2,def--3,ghi--4,jkl--5,mno--6,pqrs--7,tuv--8wxyz--9,0--0,把密码中出现的小写字母都变成对应的数字,数字和其他的符号都不做变换,密码中没有空格,而密码中出现的大写字母则变成小写之后往后移一位,如:X先边成小写再往后移一位,就是y。z往后移是a
      ===============================================================
      char ci[26]="22233344455566677778889999";
      //对应a~z的数字,输入后小心核对,有四个的
      int len,i;
      char ins[N]="",res[N]=""; //ins输入,res保存输出结果
      while (gets(ins) != NULL)
      {
      len = strlen(ins);//计算长度,方便构成循环
      for (i = 0; i < len; i ++)//开始循环,循环判断各种玩意达到转化的目的
      {
      if (isupper(ins[i])) //判断区间'A'~'Z'
      {
      if (ins[i] == 'Z') res[i] = 'a';
      else res[i] = tolower(ins[i]) + 1;
      }
      else if (islower(ins[i])) //小写字母按打表求数字
      res[i] = ci[ins[i] - 'a'];
      else //数字直接存
      res[i] = ins[i];
      }
      //末尾加上'\0',如果res初始化为""了,可以不用加
      puts(res);
      }


      IP属地:山东4楼2016-12-22 15:02
      回复
        ==比较值的大小并统计次数,计数器==
        §Description
        每次到会的校友都在签到簿上写下自己的编号和姓名,在校友会成立15周年的聚会上将颁发“最佳校友奖”,该奖项颁发给到会次数最多的校友。现在请你编写程序,找出这个奖项的得主。若有多个校友并列第一,则均可获奖。
        §Input
        输入若干个整数,表示签到簿上的校友编号,所有编号均为0~999的整数,以一个负数作为输入结束的标志。§Output
        输出出现次数最多的编号。若获奖选手有多个,则按从小到大的顺序输出选手编号,用空格隔开。注意行末无空格
        §Sample Input
        4 5 3 1 3 4 2 7 -1
        §Sample Output
        3 4
        =========================================================
        int a[1000]= {0}; //编号为0~999的校友出现次数,先置为零
        int n,i,max =0,cnt;
        while (scanf("%d",&n)&& n > 0)
        {
        a[n] ++; //读入校友编号后,对应下标++
        if (a[n] > max)
        max = a[n]; //读入的同时统计最大的出现次数
        }
        //再来一次循环,把出现次数最多的选手编号输出
        cnt = 1; //根据输出格式,设置计数器标记第几个选手
        for (i = 0; i <1000; i++)
        {
        if (a[i] == max)
        {
        if (1 == cnt) //第一个选手输出时后面没空格
        printf("%d",i);
        else //后面的选手输出时前面有空格
        printf("%d",i);
        cnt ++;
        }
        } printf("\n");


        IP属地:山东7楼2016-12-22 15:40
        回复
          ==浮点数==
          全班学生学习效果显著:各门必修课程考试及格率大于等于95%,优良率大于等于60%。优良指的是分数大于等于80分。
          ==============================================
          #ifndefONLINE_JUDGE
          freopen("in.txt","r",stdin);
          #endif// ONLINE_JUDGE //打开文件的方法
          int n,i,t,sum60=0,sum80=0; //n总个数,sum60及格数,sum80优良数
          scanf("%d",&n);
          for (i = 0; i< n; i++)
          {
          scanf("%d",&t);
          if (t >= 60) sum60 ++;
          if (t >= 80) sum80 ++;
          }
          if (sum60*1.0 / n > 0.9499999&& sum80*1.0 / n > 0.5999999) //注意浮点数不能等于,且注意强制类型转换
          printf("Yes\n");
          else
          printf("No\n");


          IP属地:山东8楼2016-12-22 15:47
          回复
            ===函数===??????
            【输入】
            第一行有一个整数N(0< N<=100),接下来有N行N列字符。*代表星星,#代表天空。
            【输出】
            输出星星数。
            前置代码
            /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */
            #include <stdio.h>
            #define N 100
            /* PRESET CODE END - NEVER TOUCH CODE ABOVE */
            后置代码
            int main()
            {
            int w,i,j,count;
            char stars[N][N];
            scanf( "%d", &w );
            getchar(); //吸收回车符
            for ( i = 0; i < w; i++ )
            gets( stars[i] );
            CountStars( stars, w, &count );
            printf( "%d\n", count );
            return 0;
            }
            ===================================
            #include<string.h>
            voidCountStars(charstars[][N],intw,int*count)
            {
            inti,j,len;
            *count = 0;
            for (i=0;i<w;i++)
            {
            len = strlen(stars[i]);
            for (j=0;j<len +1;j++)
            {
            if (stars[i][j]=='*')
            {
            (*count)++;
            }
            }
            }
            }


            IP属地:山东9楼2016-12-23 15:46
            回复
              ===根据“位置”(即行下标和列下标)判断这个位置应该打印星号还是空格===
              【题目描述】
              按照指定格式输出图形
              【输入】
              输入一个正整数n
              【输出】
              高和上底均为 n 的等腰空心梯形。
              【样例输入】5
              【样例输出】

              =========================================
              #include<stdio.h>
              int main()
              {
              int n,i,j,sumhang;
              scanf("%d",&n);
              sumhang =n*2+n-2;
              //打印第一行
              for (i = 1; i<= sumhang; i ++)
              {
              if (i>=n && i<=sumhang-n+1)
              printf("*");
              else
              printf("");
              }
              printf("\n");
              //打印中间的行
              for (i = 2; i<= n-1; i++)
              {
              for (j=1; j<=sumhang; j++)
              {
              if (j==n-i+1 || j== sumhang-(n-i))
              printf("*");
              else
              printf("");
              }
              printf("\n");
              }
              //打印最后一行
              for (i = 1; i<= sumhang; i ++)
              printf("*");
              printf("\n");
              return 0;
              }


              IP属地:山东11楼2016-12-23 15:54
              回复