写在前面:
最近有小学弟问了,刚来的小学弟正在打基础的阶段
于是po出了老同学写的答案^^
希望小学弟们能在c/c++的世界打出一片天地,算法的大门时刻为你们打开oooooo

A

Problem Description
有一个长度为n的整数序列,其中最大值和最小值不会出现在序列的第一和最后一个位置。
请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换。输出转换好的序列。
Input
输入包括两行。
第一行为正整数n(1≤n≤10)。
第二行为n个正整数组成的序列。
Output
输出转换好的序列。数据之间用空格隔开。

#include <stdio.h>
int main()
{int a[10], n, i, max, min, j, b;scanf("%d", &n);for (i = 0; i < n; i++){scanf("%d", &a[i]);}max = a[0];min = a[0];for (i = 0; i < n; i++){if (a[i] >= max){max = a[i];j = i;}if (a[i] <= min){min = a[i];b = i;}}a[j] = a[n - 1];a[n - 1] = max;a[b] = a [0];a[0] = min;int flag = 1;for(i = 0; i < n; i++){if (flag){printf("%d", a[i]);flag = 0;}elseprintf(" %d", a[i]);}
return 0;
}

B

Problem Description
输入一个不多于5位的正整数,要求:
(1)求出它是几位数;
(2)分别输出每一位数字;
(3)按逆序输出各位数字。
Input
输入一个不多于5位的正整数。
Output
输出数据有3行,第一行为正整数位数,第二行为各位数字,第三行为逆序的各位数字。

#include<stdio.h>
int main()
{
int a[5] = {}, n, i, q, w;
scanf("%d", &n);
q = n;
w = 1; while(q >= 10) {       w++;    q = q / 10;   }     printf("%d\n", w); for(i = 0; n > 0; i++)  {       a[i] = n % 10;   n = n / 10;    }      for (i = w - 1; i >= 0; i--)      {           printf("%d", a[i]);     if (i) printf(" ");           }      printf("\n");
for (i = 0; i <= w - 1; i++)       {          if(i) printf(" ");    printf("%d", a[i]);          }     printf("\n");return 0;}

C

Problem Description
对于每次的输入,第一行一个整数N个整数第一个数是这些数字中小于他们平均数的数字的个数,第二个数为等于他们平均数的数字的个数,第三个数为大于他们平均数的数字的个数。

Input
N(1 <= N <= 10),代表数字的个数。
M(0 <= M <= 100)。

Output
输出包含三个数,第一个跟第二个数后面是空格,最后一个数后面是换行。第一个数是这些数字中小于他们平均数的数字的个数,第二个数为等于他们平均数的数字的个数,第三个数为大于他们平均数的数字的个数。

#include <stdio.h>
int main()
{   int n, a[10] = {},s, ave, m, j, k ;   while (~scanf("%d", &n)) {      m = 0;    k = 0;   j = 0;  s = 0;     for (int i = 0; i < n; i++)      {        scanf("%d", &a[i]);       s += a[i];      }      ave = s / n;   for (int i = 0; i < n; i++)    {          if(a[i] < ave)         k++;          if(a[i] == ave)        m++;       if(a[i] > ave)         j++;       }      printf("%d %d %d\n", k, m, j);}return 0;}

D

Problem Description

小鑫和健健喜欢在课间的时候玩游戏,今天他手里有n张卡片,每张卡片有一个数字。于是他就想和健健比一比更幸运。
玩法是这样的:这n张卡片上的数字是没有规律的。他俩轮流取走最上面的一张卡片,最后谁取走卡片上的数字之和最大,谁就更幸运。(因为这个游戏是小鑫想出来的,总是小鑫拿第一张)
你能帮他们判断谁更幸运么?
Input
第一行为一个数字 n。100000>n>0
第二行为n个数,是n张卡片上的数字,第一个数为最上面的卡片上的数,依次向下。N个数是在整型范围内。
Output
如果小鑫更幸运输出“Greater than”,如果健健更幸运输出“Less than”,否则“Equal”。(输出均不含引号)

#include <stdio.h>
#define n 100000
int main()
{int a[n] = {}, t, s1, s2;s1 = 0;s2 = 0;scanf("%d", &t);for (int i = 0; i < t; i++){scanf("%d", &a[i]);}for(int i = 0; i < t; i++){if (i == 0 || i % 2 == 0)s1 =s1 + a[i];if (i % 2 != 0)s2 =s2 + a[i];}if (s1 > s2)printf("Greater than");else if (s1 < s2)printf("Less than");elseprintf("Equal");
return 0;
}

E

Problem Description

给定一个由 n 个整数组成的序列A1,A2,……, An 和两个整数L,R,你的任务是写一个程序来计算L,R 这段位置区间内所有数的总和。

Input

输入只有一组测试数据:

测试数据的第一行为一个整数 n (1< n < 10000);

第二行为 n 个 int 类型的整数;

第三行为两个整数 L,R(0 < L < R <= n)。

Output

输出区间[L,R]内所有数的和,数据保证和在 int 类型范围内。

#include <stdio.h>
#define n 10000
int main()
{int a[n] = {}, t, l, r, s;s = 0;scanf("%d", &t);for (int i = 0; i < t; i++){scanf("%d", &a[i]);}scanf("%d %d", &l, &r);for(int i = l - 1; i < r; i++){s += a[i];}printf("%d\n", s);
return 0;
}

F

Problem Description
从键盘输入一个长整数(不超过10位),从高位开始逐位分割并输出。
Input
正整数n,不含前导零。
Output
分割的整数序列,各整数之间用空格格开。
注意,最后一个数字后面没有空格!

#include <stdio.h>
#define h 10
int main()
{int a[h] = {}, q, n, w, flag;flag = 1;w = 1;scanf("%d", &n);q = n;while (q >= 10){q = q / 10;w++;}for (int i = w - 1; i >= 0; i--){a[i] = n % 10;n = n / 10;}for (int i = 0; i <= w - 1; i++){if(flag){printf("%d", a[i]);flag = 0;}elseprintf(" %d", a[i]);}
return 0;
}

G

Problem Description
输入10个整数存入一维数组,按逆序重新存放后再输出。
Input
输入包括一行。
10个以空格隔开的整数。
Output
逆序的10个整数,整数以空格隔开。

#include <stdio.h>
#define h 10
int main()
{int a[h] = {}, n, flag;flag = 1;for (int i = 0; i < 10; i++){scanf("%d", &a[i]);}for (int i = 9; i >= 0; i--){if (flag){printf("%d", a[i]);flag = 0;}elseprintf(" %d", a[i]);}
return 0;
}

H

Problem Description
给你N(N<=100)个数,请你按照从小到大的顺序输出。

Input
输入数据第一行是一个正整数N,第二行有N个整数。

Output
输出一行,从小到大输出这N个数,中间用空格隔开。

#include <stdio.h>
#define h 100
int main()
{int i, j, t, a[h], n;scanf("%d", &n);for(i = 0; i <= n - 1; i++){scanf("%d", &a[i]);}for(i = 0; i <= n - 2; i++){for(j = i + 1; j <= n - 1; j++){if (a[i] > a[j]){t = a[i];a[i] = a[j];a[j] = t;}}}for(i = 0; i <= n - 1; i++){printf("%d ", a[i]);}
return 0;
}

I

Problem Description
有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数m,请将该数插入到序列中,并使新的序列仍然有序。
Input
输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0表示输入数据的结束,本行不做处理。
Output
对于每个测试实例,输出插入新的元素后的数列。

#include <stdio.h>
#define h 101
int main()
{int i, j, a[h], n, m;while (~scanf("%d %d", &n, &m) && (n || m)){for(i = 0; i <= n - 1; i++){scanf("%d", &a[i]);}for(i = 0; i <= n; i++){if (m < a[i]){for (j = n - 1; j >= i; j--){a[j + 1] = a[j];}a[i] = m;break;}}for(i = 0; i <= n; i++){if (i == n)printf("%d", a[i]);elseprintf("%d ", a[i]);}printf("\n");}
return 0;
}

J

Problem Description
输入n个整数,输出由这些整数组成的n行矩阵。

Input
第一行输入一个正整数N(N<=20),表示后面要输入的整数个数。
下面依次输入N个整数。

Output
以输入的整数为基础,输出有规律的n行数据。

Example Input
5
3 6 2 5 8
Example Output
3 6 2 5 8
8 3 6 2 5
5 8 3 6 2
2 5 8 3 6
6 2 5 8 3

#include <stdio.h>
#define h 10
int main()
{int i, j, a[h], n, m;scanf("%d", &n);if(n>10) printf("%d", 1/0);for(i = 0; i < n; i++){scanf("%d", &a[i]);}for(j = 1; j <= n; j++){m = 1;for(i = 0; i < n; i++){if(m){printf("%d", a[i]);m = 0;}elseprintf(" %d", a[i]);}printf("\n");for(i = n - 1; i >= 0; i--){a[i + 1] = a[i];if(i == 0)a[0] = a[n];}}
return 0;
}

K

Problem Description
输入10个整数,将它们从小到大排序后输出,并给出现在每个元素在原来序列中的位置。
Input
输入数据有一行,包含10个整数,用空格分开。
Output
输出数据有两行,第一行为排序后的序列,第二行为排序后各个元素在原来序列中的位置。
Example Input
1 2 3 5 4 6 8 9 10 7
Example Output
1 2 3 4 5 6 7 8 9 10
1 2 3 5 4 6 10 7 8 9

#include <stdio.h>
#define h 100
int main()
{int i, j, a[h], n, b[h], t, flag = 1, p = 1;n = 10;for(i = 0; i < n; i++){scanf("%d", &a[i]);b[i] = i + 1;}for(i = 0; i < n; i++){for (j = 0; j < n - i - 1; j++){if (a[j] < a[j + 1]){t = a[j];a[j] = a[j + 1];a[j + 1] = t;t = b[j];b[j] = b[j + 1];b[j + 1] = t;}}}for(i = n - 1; i >= 0; i--){if(flag){printf("%d", a[i]);flag = 0;}elseprintf(" %d", a[i]);}printf("\n");for(i = n - 1; i >= 0; i--){if(p){printf("%d", b[i]);p = 0;}elseprintf(" %d", b[i]);}printf("\n");
return 0;
}

L

Problem Description
给定n个正整数,根据各位数字之和从小到大进行排序。
Input
输入数据有多组,每组数据占一行,每行的第一个数正整数n,表示整数个数,后面接n个正整数。当n为0时,不作任何处理,输入结束。n<=10
Output
输出每组排序的结果。

#include <stdio.h>
#define h 10
int main()
{int i, j, t, a[h], n, s, b[h], q, f;while(~scanf("%d", &n) && n != 0){for (i = 0; i < n; i++){scanf("%d", &a[i]);s = 0;f = a[i];while (f >= 10){q = f % 10;f = f / 10;s += q;}s += f;b[i] = s;}for (i = 0; i < n - 1; i++){for(j = 0; j <= n - i - 2; j++){if(b[j] > b[j + 1]){t = b[j];b[j] = b[j + 1];b[j + 1] = t;t = a[j];a[j] = a[j + 1];a[j + 1] = t;}}}for(i = 0; i < n; i++){if (i == n - 1)printf("%d", a[i]);elseprintf("%d ", a[i]);}printf("\n");}
return 0;
}

M

Problem Description
期末考试结束了,童鞋们的成绩也出来的了,可是为了排名次可忙坏了老师,因为学生太多了。这时,老师把这个任务交给了你,希望你能帮老师完成。作为IT人,你当然不能用笨笨的人工方法了,编程解决才是好办法。
共有三门课,语文、数学和英语,要求根据学生的各科成绩计算出其总成绩,并根据总成绩从高到低排序。

Input
第一行一个整数N(N<=100),代表学生的人数。
接下来的N行数据,每行有三个整数,C,M,E分别代表一个学生语文、数学和英语的成绩。
Output
一共N行,每行一个数,从大到小,分别代表各个学生的总成绩。

#include <stdio.h>
int main()
{int a[10], n, c, m, e, s, i, j, t;scanf("%d", &n);for(i = 0; i < n; i++){s = 0;scanf("%d %d %d", &c, &m, &e);s = c + m + e;a[i] = s;}for (i = 0; i < n - 1; i++){for(j = 0; j <= n - i - 2; j++){if(a[j] < a[j + 1]){t = a[j];a[j] = a[j + 1];a[j + 1] = t;}}}for(i = 0; i < n; i++){printf("%d", a[i]);printf("\n");}return 0;
}

N

Problem Description
X最近爱上了区间查询问题,给出N(N <= 200)个数,然后进行M次询问,每次询问时,输入一个数X(1<= X <= N),输出N个数中第X大的数。
Input
多组输入。
每组首先输入一个整数N,代表有N个数,下面一行包含N个整数,用空格隔开。然后为一个整数M,代表有M次询问,下面的M行,每行一个整数X。
Output
输出N个数中第X大的数。

#include <stdio.h>
#define h 200
int main()
{int i, j, t, a[h], n, k, c;while(~scanf("%d", &n) && n != 0){for (i = 0; i < n; i++){scanf("%d", &a[i]);}for (i = 0; i < n - 1; i++){for(j = 0; j <= n - i - 2; j++){if(a[j] < a[j + 1]){t = a[j];a[j] = a[j + 1];a[j + 1] = t;}}}scanf("%d", &k);for(i = 0; i < k; i++){scanf("%d", &c);printf("%d\n", a[c - 1]);}}
return 0;
}

O

Problem Description
小鑫非常喜欢运动,有一次小鑫去参加110米栏的比赛,一共有10名比赛选手,小鑫是1号,由于跑的太专注,最后冲线的时候不知道自己是第几名,只知道每个人最后的成绩,聪明的你可不可以帮帮他?

Input
多组输入。
先输入一个10,
然后每组输入10个整数,代表10个选手的110米栏成绩m,代表1号到N号的N个选手的成绩m,m范围是(0 < m < 100)。

Output
输出只有一行,代表小鑫最后的名次是多少。
因为小鑫长得比较丑,所以如果成绩相同的情况下,小鑫都会排在前面。

#include <stdio.h>
#define h 100
int main()
{int i, j, a[h], n, b[h], t, tem;n = 10;while(scanf("%d", &i) != EOF){for(i = 0; i < n; i++){scanf("%d", &a[i]);b[i] = i + 1;}tem = a[0];for(i = 0; i < n; i++){for (j = 0; j < n - i - 1; j++){if (a[j] > a[j + 1]){t = a[j];a[j] = a[j + 1];a[j + 1] = t;/*t = b[j];b[j] = b[j + 1];b[j + 1] = t;*/}}}for(i = 0;i < n;i++){if(tem == a[i]){break;}}printf("%d\n", b[i]);}return 0;
}

P

Problem Description
听说过冒泡排序么?很好玩很暴力的一种排序方式,但对于小数据也是很实用的哦。今天我们不希望你用它来排序,而是希望你能算出从小到大冒泡排序的过程中一共进行了多少次数据交换。

Input
输入数据的第一行为一个正整数 T ,表示有 T 组测试数据。
接下来T行,每行第一个整数N, 然后有N个整数,无序。0<N<100

Output
输出共 T 行。
每行一个整数,代表本行数据从小到大冒泡排序所进行的交换次数。

#include <stdio.h>
#define h 100
int main()
{int i, j, a[h], n1, n2, t;scanf("%d", &n1);while(n1--){int count = 0;scanf("%d", &n2);for(i = 0; i < n2; i++){scanf("%d", &a[i]);}for(i = 0; i < n2; i++){for (j = 0; j < n2 - i - 1; j++){if (a[j] > a[j + 1]){t = a[j];a[j] = a[j + 1];a[j + 1] = t;count++;}}}printf("%d\n", count);}
return 0;
}

Q

Problem Description
有n个整数,使其最后m个数变成最前面的m个数,其他各数顺序向后移m(m < n < 100)个位置。
Input
输入数据有2行,第一行的第一个数为n,后面是n个整数,第二行整数m。
Output
按先后顺序输出n个整数。

    #include <stdio.h>#define h 10000int main(){int n, a[h], i, m, t, flag = 1;scanf("%d", &n);for(i = 0; i < n; i++){scanf("%d", &a[i]);}scanf("%d", &m);while(m--){t = a[n - 1];for(i = n - 2; i >= 0; i--){a[i + 1] = a[i];}a[0] = t;}for(i = 0; i < n; i++){if(flag){printf("%d", a[i]);flag = 0;}elseprintf(" %d", a[i]);}printf("\n");return 0;}

R

Problem Description
光阴似箭,日月如梭,大学的时间真是宝贵,要抓紧时间AC_。你知道今天是这一年第几天吗,掐指一算还是要算好久,呵呵还是让计算机来做吧。这里的问题就是让你来写一个程序,输入某年某月某日,判断这一天是这一年的第几天?
Input
输入数据有多组,第一行是数据的组数n,下面n行是n组数据,每组数据由3个正整数组成,分别为年、月、日,我们保证每组数据都是有效的日期。
Output
输出所输入的日期是这一年的第几天。

#include <stdio.h>
int main()
{int n, i, y, m, d, s;scanf("%d", &n);while(n--){s = 0;scanf("%d %d %d", &y, &m, &d);if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0){int b[]={0,31,29,31,30,31,30,31,31,30,31,30,31};for (i = 0; i < m; i++){s = s + b[i];}s += d;}else{int a[]={0,31,28,31,30,31,30,31,31,30,31,30,31};for (i = 0; i < m; i++){s = s + a[i];}s += d;}printf("%d\n", s);}
return 0;
}

————————————————
版权声明:本文为CSDN博主「清寒飘叶」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a_madara/article/details/53032904

SDUT OJ 2976相关推荐

  1. 喵帕斯之副食店 (sdut oj)

    ** 喵帕斯之副食店 (sdut oj) ** Problem Description 莲酱又去副食店买吃的去惹.现在莲酱有一些不同面额硬币,和一个非常喜欢的糖果. 但是莲酱不知道自己能够买多少颗糖果 ...

  2. SDUT OJ 图练习-BFS-从起点到目标点的最短步数 (vector二维数组模拟邻接表+bfs , *【模板】 )...

    图练习-BFS-从起点到目标点的最短步数 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 在古老的魔兽传说中,有两个军团,一个叫天 ...

  3. SDUT OJ单个字符输入和输出(顺序结构)

    SDUT OnlineJudge #include<iostream> #include<string.h> using namespace std; int main() { ...

  4. SDUT OJ 数据结构实验之排序一:一趟快排

    数据结构实验之排序一:一趟快排 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

  5. SDUT OJ[3109] 买买买 背包 dp

    好久没做题了,今天来一发. 根据题意,可以推出状态转移方程: dp[cost][weight] = max(dp[cost][weight], dp[cost-s[i].cost][weight-s[ ...

  6. SDUT OJ 数据结构实验之链表四:有序链表的归并

    数据结构实验之链表四:有序链表的归并 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Desc ...

  7. SDUT OJ -2892 A

    A Time Limit: 60ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描写叙述 给出n(1<= n && n <= 2*10^6) ...

  8. SDUT oj 选拔赛1 迷之好奇

    迷之好奇 Time Limit: 2000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 FF得到了一个有n个数字的集合.不要问我为什么,有钱,任性. FF很好奇 ...

  9. SDUT OJ 效率至上(线段树)

    效率至上 Time Limit: 5000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 题意很简单,给出一个数目为n ...

最新文章

  1. 算法战争:美国国家AI安全委员会要建立AI大学,「数字服务学院」为政府培养AI人才...
  2. VScode快速一键生成html、vue、jsx、ajax、sass、docker等代码片段
  3. 【BZOJ-1858】序列操作 线段树
  4. PyTorch Multi-GPU使用代码
  5. openstack nova 源码分析3-nova目录下的service.py
  6. worker进程和task进程区别_celery 每个 worker 在执行任务时,如何配置一定数量的 task?...
  7. VTK:绘制单元格颜色用法实战
  8. VTK:Rendering之SpecularSpheres
  9. cas单点登录-jdbc认证(三)
  10. LeetCode 1465. 切割后面积最大的蛋糕
  11. 中央音乐学院计算机研究生,2020北京中央音乐学院硕士研究生招生复试电子音乐作曲、电子音乐技术理论等考生须知...
  12. java final class 性能_java中final修饰基本变量后的效率问题
  13. 程序员大危机,工作难逃监视系统“法眼”
  14. 网卡重启影响nfs吗_NFS性能优化 不完整介绍
  15. HTML+CSS实现导航条及下拉菜单
  16. w10系统打不开服务器共享打印机,win10系统无法共享打印机的方案
  17. 简易处理字典MDX文件的方法
  18. 为什么HashMap线程不安全?以及实现HashMap线程安全的解决方案
  19. Unity 常用快捷键
  20. XZ_Python3之使用Python批量打企业ipa包遇到的问题和解决

热门文章

  1. 数据库查询时间相差8小时解决_mysql从数据库查询的时间与实际时间相差8小时(时区问题)...
  2. 运维技能定级标准第3篇——关于运维工程师岗位的运维监控与MySQL数据库技能级别设计
  3. brew 一直等待_LOL手游转圈怎么办_LOL手游一直转圈怎么办
  4. 我的世界java版生存三叉戟_我的世界:三叉戟太难获得?教你做一个溺尸塔,三叉戟随便爆!...
  5. NOIP2013落谷P1311选择客栈题解
  6. 如何查看苹果的UDID或者UUID
  7. Leetcode笔记2-消除游戏
  8. 大连软件测试知识,大连软件测试薪资怎么样,软件测试是不不难学
  9. 17 网站架构的伸缩性设计
  10. 数据分析告诉你,鲁迅的文章真的是匕首投枪