【C语言】牛客网编程初学者入门训练-BC88-BC98


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;
}

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三春去后诸芳尽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值