目录
BC88 有序序列插入一个数
描述
有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。
输入描述:
共三行,
第一行输入一个整数(0≤N≤50)。
第二行输入N个升序排列的整数,输入用空格分隔的N个整数。
第三行输入想要进行插入的一个整数。
输出描述:
输出为一行,N+1个有序排列的整数。
示例1
输入:
7
5 30 40 50 60 70 90
20
输出:
5 20 30 40 50 60 70 90
#include <stdio.h>
int main()
{
int n = 0;
int arr[50] = {0};
scanf("%d", &n);
int i = 0;
for(i=0; i<n; i++)
{
scanf("%d", &arr[i]);
}
int m = 0;
scanf("%d", &m);
for(i=n-1; i>=0; i--)
{
if(arr[i] > m)
{
arr[i+1] = arr[i];
}
else
{
arr[i+1] = m;
break;
}
}
if (i < 0)
{
arr[0] = m;
}
for(i=0; i<n+1; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
BC89 密码验证
描述
用户登录网站,通常需要注册,一般需要输入两遍密码。请编程判断输入的两次密码是否一致,一致输出“same”,不一致输出“different”
输入描述:
每行有两个用空格分开的字符串,第一个为密码,第二个为重复密码。
输出描述:
每组输出一个字符串(“same”或“different”)。
示例1
输入:
abc abc
输出:
same
#include <stdio.h>
#include <string.h>
int main()
{
char password[50] = {0};
char repeat[50] = {0};
scanf("%s %s", password, repeat);
if(strcmp(password, repeat) == 0)
{
printf("same\n");
}
else
{
printf("different\n");
}
return 0;
}
BC90 矩阵计算
描述
输入NxM矩阵,矩阵元素均为整数,计算其中大于零的元素之和。
输入描述:
第一行为N M(N: 矩阵行数;M: 矩阵列数,且M,N<=10),接下来的N行为矩阵各行。
输出描述:
一行,其中大于零的元素之和。
示例1
输入:
3 3
2 3 4
-5 -9 -7
0 8 -4
输出:
17
#include <stdio.h>
int main()
{
int n = 0;
int m = 0;
scanf("%d %d", &n, &m);
int num = 0;
int sum = 0;
int i = 0;
for(i=0; i<n; i++)
{
int j = 0;
for(j=0; j<m; j++)
{
scanf("%d", &num);
if(num > 0)
{
sum += num;
}
}
}
printf("%d\n", sum);
return 0;
}
BC91 成绩输入输出问题
描述
输入10科成绩,换行显示输入的10科成绩。
输入描述:
一行,输入10科成绩(整数表示,范围0~100),用空格分隔。
输出描述:
一行,输出输入的10科成绩,用空格分隔。
示例1
输入:
98 100 99 97 95 99 98 97 96 100
输出:
98 100 99 97 95 99 98 97 96 100
#include <stdio.h>
int main()
{
int arr[10] = {0};
int i = 0;
for(i=0; i<10; i++)
{
scanf("%d", &arr[i]);
}
for(i=0; i<10; i++)
{
printf("%d ", arr[i]);
}
/*
gets(arr);
puts(arr);
*/
return 0;
}
BC92 逆序输出
描述
输入10个整数,要求按输入时的逆序把这10个数打印出来。逆序输出,就是按照输入相反的顺序打印这10个数。
输入描述:
一行,输入10个整数(范围-231~231-1),用空格分隔。
输出描述:
一行,逆序输出输入的10个整数,用空格分隔。
示例1
输入:
1 2 3 4 5 6 7 8 9 10
输出:
10 9 8 7 6 5 4 3 2 1
#include <stdio.h>
int main()
{
int arr[10] = {0};
int i = 0;
for(i=0; i<10; i++)
{
scanf("%d", &arr[i]);
}
for(i=9; i>=0; i--)
{
printf("%d ", arr[i]);
}
return 0;
}
BC93 统计数据正负个数
描述
输入10个整数,分别统计输出正数、负数的个数。
输入描述:
输入10个整数(范围-231~231-1),用空格分隔。
输出描述:
两行,第一行正数个数,第二行负数个数,具体格式见样例。
示例1
输入:
-1 2 3 -6 7 8 -1 6 8 10
输出:
positive:7
negative:3
#include <stdio.h>
int main()
{
int i = 0;
int num = 0;
int positive = 0;
int negative = 0;
for (i = 0; i < 10; i++)
{
scanf("%d", &num);
if (num >= 0)
positive++;
else
negative++;
}
printf("positive:%d\nnegative:%d\n", positive, negative);
return 0;
}
/*
int main()
{
int arr[10] = {0};
int i = 0;
int p = 0;
int n = 0;
for(i=0; i<10; i++)
{
scanf("%d", &arr[i]);
if(arr[i] > 0)
{
p++;
}
else if(arr[i] < 0)
{
n++;
}
}
printf("positive:%d\nnegative:%d\n", p, n);
return 0;
}
*/
BC94 N个数之和
描述
输入数字N,然后输入N个数,计算这N个数的和。
输入描述:
第一行输入一个整数N(0≤N≤50),第二行输入用空格分隔的N个整数。
输出描述:
输出为一行,为第二行输入的“N个整数之和”的计算结果。
示例1
输入:
5
1 2 3 4 5
输出:
15
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
int n = 0;
int sum = 0;
int i = 0;
for(i=0; i<num; i++)
{
scanf("%d", &n);
sum += n;
}
printf("%d", sum);
return 0;
}
BC95 最高分与最低分之差
描述
输入n个成绩,换行输出n个成绩中最高分数和最低分数的差。
输入描述:
两行,第一行为n,表示n个成绩,不会大于10000。
第二行为n个成绩(整数表示,范围0~100),以空格隔开。
输出描述:
一行,输出n个成绩中最高分数和最低分数的差。
示例1
输入:
10
98 100 99 97 95 99 98 97 96 100
输出:
5
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int num = 0;
int max = 0;
int min = 100;
int i = 0;
for(i=0; i<n; i++)
{
scanf("%d", &num);
if(max < num)
{
max = num;
}
if(min > num)
{
min = num;
}
}
printf("%d", max-min);
return 0;
}
BC96 有序序列判断
描述
输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序。
输入描述:
第一行输入一个整数N(3≤N≤50)。
第二行输入N个整数,用空格分隔N个整数。
输出描述:
输出为一行,如果序列有序输出sorted,否则输出unsorted。
示例1
输入:
5
1 6 9 22 30
输出:
sorted
示例2
输入:
5
3 4 7 2 10
输出:
unsorted
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int arr[50] = { 0 };
int flag1 = 0; //升序
int flag2 = 0; //降序
int i = 0;
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
if (i > 0) //输入了二个元素就可以判断了
{
if (arr[i] > arr[i - 1])
{
flag1 = 1;
}
else
{
flag2 = 1;
}
}
}
if (flag1 + flag2 == 1)
{
printf("sorted\n");
}
else
{
printf("unsorted\n");
}
return 0;
}
BC97 有序序列插入一个整数
描述
有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。
输入描述:
第一行输入一个整数N(0≤N≤50)。
第二行输入N个升序排列的整数,输入用空格分隔的N个整数。
第三行输入想要进行插入的一个整数。
输出描述:
输出为一行,N+1个有序排列的整数。
示例1
输入:
5
1 6 9 22 30
8
输出:
1 6 8 9 22 30
#include <stdio.h>
int main()
{
int n = 0;
int arr[50] = {0};
scanf("%d", &n);
int i = 0;
for(i=0; i<n; i++)
{
scanf("%d", &arr[i]);
}
int m = 0;
scanf("%d", &m);
for(i=n-1; i>=0; i--)
{
if(arr[i] > m)
{
arr[i+1] = arr[i];
}
else
{
arr[i+1] = m;
break;
}
}
if (i < 0)
{
arr[0] = m;
}
for(i=0; i<n+1; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
BC98 序列中删除指定数字
描述
有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。
输入描述:
第一行输入一个整数(0≤N≤50)。
第二行输入N个整数,输入用空格分隔的N个整数。
第三行输入想要进行删除的一个整数。
输出描述:
输出为一行,删除指定数字之后的序列。
示例1
输入:
6
1 2 3 4 5 9
4
输出:
1 2 3 5 9
#include <stdio.h>
int main()
{
int n = 0;
int arr[50] = { 0 };
int del = 0;
scanf("%d", &n);
int i = 0;
//读取n个数字
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
//读取要删除的数字
scanf("%d", &del);
//删除的动作
int j = 0; //j - 记录存放数据位置的下标
for (i = 0; i < n; i++)
{
if (arr[i] != del)
{
arr[j++] = arr[i];
}
}
//此时的j就是删除元素后的数据个数
for (i = 0; i < j; i++)
{
printf("%d ", arr[i]);
}
return 0;
}