A
Problem Description
请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换。输出转换好的序列。
Input
第一行为正整数n(1≤n≤10)。
第二行为n个正整数组成的序列。
Output
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;
}
else
printf(" %d", a[i]);
}
return 0;
}
B
Problem Description
(1)求出它是几位数;
(2)分别输出每一位数字;
(3)按逆序输出各位数字。
Input
Output
int main()
{
scanf("%d", &n);
q = n;
C
Problem Description
对于每次的输入,第一行一个整数N个整数第一个数是这些数字中小于他们平均数的数字的个数,第二个数为等于他们平均数的数字的个数,第三个数为大于他们平均数的数字的个数。
Input
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
Input
Output
#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");
else
printf("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
Input
Output
注意,最后一个数字后面没有空格!
#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;
}
else
printf(" %d", a[i]);
}
return 0;
}
G
Problem Description
Input
10个以空格隔开的整数。
Output
#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;
}
else
printf(" %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
Input
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]);
else
printf("%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;
}
else
printf(" %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
Input
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;
}
else
printf(" %d", a[i]);
}
printf("\n");
for(i = n - 1; i >= 0; i--)
{
if(p)
{
printf("%d", b[i]);
p = 0;
}
else
printf(" %d", b[i]);
}
printf("\n");
return 0;
}
L
Problem Description
Input
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]);
else
printf("%d ", a[i]);
}
printf("\n");
}
return 0;
}
M
Problem Description
期末考试结束了,童鞋们的成绩也出来的了,可是为了排名次可忙坏了老师,因为学生太多了。这时,老师把这个任务交给了你,希望你能帮老师完成。作为IT人,你当然不能用笨笨的人工方法了,编程解决才是好办法。
共有三门课,语文、数学和英语,要求根据学生的各科成绩计算出其总成绩,并根据总成绩从高到低排序。
Input
接下来的N行数据,每行有三个整数,C,M,E分别代表一个学生语文、数学和英语的成绩。
Output
#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
Input
Output
#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
Input
Output
#include <stdio.h>
#define h 10000
int 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;
}
else
printf(" %d", a[i]);
}
printf("\n");
return 0;
}
R
Problem Description
Input
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;
}