#include<stdio.h>
void main()
{
int i, j, x, n, a[10], s = 0, s1 = 0;
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
while (n != 1) {
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
{
if (a[i] < a[j])
{
x = a[i];
a[i] = a[j];
a[j] = x;
}
}
s1 = a[n - 1] + a[n - 2];
s += s1;
a[n - 2] = s1;
n = n - 1;
}
printf("%d", s);
}
#include<stdio.h>
struct score
{
char a[20];
int b;
}stu[100], x;
void main() {
int n, i, j;
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%s%d", stu[i].a, &stu[i].b);
for (i = 0; i < n - 1; i++)for (j = i + 1; j < n; j++)
if ((stu[i].b < stu[j].b) || (stu[i].b == stu[j].b) && (stu[i].a[0] > stu[j].a[0]))
{
x = stu[i];
stu[i] = stu[j];
stu[j] = x;
}
for (i = 0; i < n; i++)
{
printf("%s %d", stu[i].a, stu[i].b);
printf("\n");
}
}
#include<stdio.h>
#include<math.h>
void main()
{
int a[10], b[10], n, i; float s = 0.0;
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d%d", &a[i], &b[i]);
for (i = 1; i < n; i++)
s += sqrt(pow(a[i] - a[i - 1], 2) + pow(b[i] - b[i - 1], 2));
printf("%.2f", s);
}
#include<stdio.h>
struct stu
{
int a;
int score;
}c[10];
void main() {
int m, n, i, j;
struct stu x;
scanf("%d%d", &m, &n);
for (i = 0; i < m; i++)
{
scanf("%d", &c[i].score);
c[i].a = i + 1;
}
for (i = 0; i < m - 1; i++)
for (j = i + 1; j < m; j++)
if (c[i].score < c[j].score)
{
x = c[i];
c[i] = c[j];
c[j] = x;
}
for (i = 0; i < n; i++)
printf("%3d", c[i].a);
}
#include<stdio.h>
struct stu
{
char a[10];
int chinese;
int math;
int english;
int sum;
}stu[20];
void main()
{
int n, i, j; struct stu x;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s%d%d%d",stu[i].a,& stu[i].chinese, &stu[i].math, &stu[i].english);
for (i = 0; i < n; i++)
stu[i].sum = stu[i].chinese + stu[i].math + stu[i].english;
//输出总分最高的
for(i=0;i<n-1;i++)
for(j=i;j<n;j++)
if (stu[i].sum < stu[j].sum)
{
x = stu[i];
stu[i] = stu[j];
stu[j] = x;
}
i = 0;
do {
printf("%s %d ", stu[i].a,stu[i].sum);
i++;
} while (stu[i-1].sum==stu[i].sum);
printf("\n");
//输出语文最高的
for (i = 0; i < n - 1; i++)
for (j = i; j < n; j++)
if (stu[i].chinese < stu[j].chinese)
{
x = stu[i];
stu[i] = stu[j];
stu[j] = x;
}
i = 0;
do {
printf("%s %d ", stu[i].a,stu[i].chinese);
i++;
} while (stu[i-1].chinese == stu[i].chinese);
printf("\n");
//输出数学最高的
for (i = 0; i < n - 1; i++)
for (j = i; j < n; j++)
if (stu[i].math < stu[j].math)
{
x = stu[i];
stu[i]= stu[j];
stu[j] = x;
}
printf("%s %d ", stu[i].a,stu[0].math);
printf("\n");
//输出英语最高的
for (i = 0; i < n - 1; i++)
for (j = i; j < n; j++)
if (stu[i].english < stu[j].english)
{
x = stu[i];
stu[i] = stu[j];
stu[j] = x;
}
printf("%s %d ", stu[i].a,stu[0].english);
printf("\n");
}
#include<stdio.h>
void main() {
int a, n = 0, i;
scanf("%d", &a);
for (i = 2; i < a; i++)
if (a % i == 0)
n += i;
printf("%d", n);
}
解析:详细过程见2020年真题
输入一行由字符a~z和A~Z组成的字符串,字符串长度<=10000, 求其中任意两个字符出现次数的差值的绝对值
输入: 第一行输入字符串 第二行输入两个字符。
输出: 输出这两个字符出现次数的差值的绝对值
输入样例: AbddeDfacd A d
输出样例: 2
(解释:字符串中字符'A'出现了2次,字符'd'出现了4次,则结果 为|2-4|=2)
解析:详细过程见2021真题48
写个一个程序统计从1到N这N个数中,以下三个条件都满足 的数字x个数
1. x是一个素数(如2,3,5,7....)
2. x是一个对称的数 (如1,11,121,都是对称的数)
3. x的所有数字和恰好是7的倍数(如 7,16,25,34,43,61,70,115,)
输入:一个整数N(1<=N<=10000)
输出: 满足这三个条件的个数
样例输入: 20 样例输出 1
样例解释: 从1~20中素数有2,3,5,7,11,13,17,19,再结合条件2可以 看到对称的数只有 2 3 5 7 11,又因为条件3,所以只有7满足要求,所以输 出个数为1
某个绿化园区的树排列成为n*m的矩阵,其中用
示第i行第j列的树的茂密度。
为了使全部的树木茁壮成长,茂密度越高的树 应该浇水越多,但是小明只能保证若是一棵树的茂密度高于它相邻(上下左右)的树,则这颗树需要浇水的位置是。
解析:程序首先定义了一个二维数组density
来存储树木的茂密度,以及一个二维布尔数组shouldWater
来标记哪些树需要浇水。然后,它遍历整个矩阵,检查每棵树是否比其相邻的树茂密度更高,如果是,则在shouldWater
数组中对应的位置标记为true
。最后,程序打印出需要浇水的树的位置。
#include <stdio.h>
#include <stdbool.h>
#define MAX_N 100
#define MAX_M 100
// 定义一个二维数组来存储树木的茂密度
int density[MAX_N][MAX_M];
bool shouldWater[MAX_N][MAX_M];
// 检查坐标是否合法
bool isValid(int x, int y, int n, int m) {
return x >= 0 && x < n && y >= 0 && y < m;
}
// 标记需要浇水的树
void markTreesToWater(int n, int m) {
// 初始化shouldWater数组
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
shouldWater[i][j] = false;
}
}
// 遍历矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
// 检查上方
if (isValid(i - 1, j, n, m) && density[i][j] > density[i - 1][j]) {
shouldWater[i][j] = true;
}
// 检查下方
if (isValid(i + 1, j, n, m) && density[i][j] > density[i + 1][j]) {
shouldWater[i][j] = true;
}
// 检查左方
if (isValid(i, j - 1, n, m) && density[i][j] > density[i][j - 1]) {
shouldWater[i][j] = true;
}
// 检查右方
if (isValid(i, j + 1, n, m) && density[i][j] > density[i][j + 1]) {
shouldWater[i][j] = true;
}
}
}
}
// 打印需要浇水的树的位置
void printTreesToWater(int n, int m) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (shouldWater[i][j]) {
printf("(%d, %d) ", i, j);
}
}
printf("\n");
}
}
int main() {
int n, m;// 输入矩阵的大小
printf("请输入矩阵的行数n和列数m:\n");
scanf("%d %d", &n, &m);
// 输入矩阵的茂密度
printf("请输入矩阵的茂密度:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &density[i][j]);
}
}
// 标记需要浇水的树
markTreesToWater(n, m);
// 打印需要浇水的树的位置
printf("需要浇水的树的位置为:\n");
printTreesToWater(n, m);
return 0;
}
//编写程序,输入n个整数存放一维数组中,按从小到大的顺序排列成一个有序序列,并删除数据中有相同的数,使之只剩一个,例如:一维数组中的数据是:6 4 3 4 3 6 4 2 3 4 6 3 2 3,删除后数组中元素为:2346。
//输入格式:
//第一行,输入一个正整数n, 代表数组中元素个数; (0 < n <= 10000);
//第二行,输入n个正整数,代表一维数组中的元素(不大于1000)。
//输出格式,删除后数组中元素
解析:
#include<stdio.h>
void main()
{
int a[100],n, i,j,m;
scanf("%d",&n);
for (i = 0; i < n; i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
for(j=i;j<n;j++)
if (a[i] > a[j])
{
m = a[i];
a[i] = a[j];
a[j] = m;
}
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if (a[i] == a[j])
{
for (m = j + 1; m < n; m++)
a[m - 1] = a[m];
n--;
j--;
}
for (i = 0; i < n; i++)
printf("%d", a[i]);
}