【C语言】编程初学者入门训练(9)

81. 被5整除问题

  • 问题描述:判断一个整数是否能5整除是一个挺简单的问题,懒惰的KiKi还是不想自己做,于是找到你帮他写代码,你就帮帮他吧。

  • 输入描述:输入包括一个整数M(1≤M≤100,000)。

  • 输出描述:输出包括一行,如果M可以被5整除就输出YES,否则输出NO(结果大小写敏感)。

  • 示例1

    • 输入:10
    • 输出:YES
  • 示例2

    • 输入:9
    • 输出:NO
  • 代码实现

#include <stdio.h>

int main()
{
        int n;
        scanf("%d",&n);

        if(0 == n % 5)  printf("YES\n");
        else            printf("NO\n");

        return 0;
}

82. 计算y的值

  • 问题描述:已知一个函数y=f(x),当x < 0时,y = 1;当x = 0时,y = 0;当x > 0时,y = -1。

  • 输入描述:一行,输入一个整数x。(-10000<x<10000)

  • 输出描述:一行,输出y的值。

  • 示例1

    • 输入:10
    • 输出:-1
  • 示例2

    • 输入:-10
    • 输出:1
  • 代码实现

#include <stdio.h>
int main()
{
        int x,y;
        scanf("%d",&x);

        if(x < 0)       y = 1;
        
        else if(x > 0)  y = -1;
        
        else            y = 0;

        printf("%d\n",y);

        return 0;
}

83. 包含数字9的数

  • 问题描述:今年是2019年,KiKi想知道1~2019中有多少个包含数字9的数。包含数字的数是指有某一位是“9”的数,例如“2019”、“199”等。
  • 输入描述:无
  • 输出描述:一行,一个整数,表示1~2019中共有多少个数包含数字9。
  • 代码实现
#include <stdio.h>
int main()
{
        int count = 0;
        for(int i = 1;i <= 2019;i++ )
        {
                int m = i;
                while(m)
                {
                		//不停地取出个十百千位上的数判断是否为9
                        if(9 == m % 10)
                        {
                                count++ ;
                                break;
                        }
                        m /= 10;
                }
        }
        printf("%d\n",count);
        return 0;
}

84. 奇偶统计

  • 问题描述:任意输入一个正整数N,统计1~N之间奇数的个数和偶数的个数,并输出。

  • 输入描述:一行,一个正整数N。(1≤N≤100,000)

  • 输出描述:一行,1~N之间奇数的个数和偶数的个数,用空格分开。

  • 示例:

    • 输入:5
    • 输出:3 2
  • 代码实现

#include <stdio.h>
int main()
{
        int n,odd = 0,even = 0;
        scanf("%d",&n);

        for(int i = 1;i <= n;i++)
        {
                if(0 == i % 2)  even++ ;//偶数

                else            odd++ ;//奇数
        }
        printf("%d %d\n",odd,even);

        return 0;
}

85. 统计成绩

  • 问题描述:输入n科成绩(浮点数表示),统计其中的最高分,最低分以及平均分。

  • 数据范围:1≤n≤100 , 成绩使用百分制且不可能出现负数

  • 输入描述:两行,

    • 第1行,正整数n(1≤n≤100)

    • 第2行,n科成绩(范围0.0~100.0),用空格分隔。

  • 输出描述:输出一行,三个浮点数,分别表示,最高分,最低分以及平均分(小数点后保留2位),用空格分隔。

  • 示例

输入:
	5
	99.5 100.0 22.0 60.0 88.5
输出:
	100.00 22.00 74.00
  • 代码实现
#include <stdio.h>
int main()
{
        int n;

        scanf("%d",&n);

        float score[n];
        float sum = 0,max = 0,min = 100;

        for(int i = 0;i < n;i++)
        {
                scanf("%f",&score[i]);
                sum += score[i];
                if(score[i] > max)      max = score[i];
                if(score[i] < min)      min = score[i];                       
        }
        printf("%.2f %.2f %.2f\n",max,min,sum/n);
        return 0;
}

86. 密码验证

  • 问题描述:用户登录网站,通常需要注册,一般需要输入两遍密码。请编程判断输入的两次密码是否一致,一致输出“same”,不一致输出“different”
  • 输入描述:每行有两个用空格分开的字符串,第一个为密码,第二个为重复密码。
  • 输出描述:每组输出一个字符串(“same”或“different”)。
  • 示例
    • 输入:abc abc
    • 输出:same
  • 解题思路:用两个字符串数组存储两次密码,然后用 strcmp 函数来判断是否相等。
  • 代码实现
#include <stdio.h>
#include <string.h>
#define MAX 100

int main()
{
        char arr1[MAX];
        char arr2[MAX];

        scanf("%s %s",&arr1,&arr2);

        if(!strcmp(arr1,arr2))  printf("same\n");

        else                    printf("different\n");

        return 0;
}

87. 矩阵计算

  • 问题描述:输入NxM矩阵,矩阵元素均为整数,计算其中大于零的元素之和。
  • 输入描述:第一行为N M(N: 矩阵行数;M: 矩阵列数,且M,N<=10),接下来的N行为矩阵各行。
  • 输出描述:一行,其中大于零的元素之和。
  • 示例
输入:
	3 3
	2 3 4
	-5 -9 -7
	0 8 -4
输出:17
  • 代码实现
#include <stdio.h>
int main()
{
        int n,m,num,sum = 0;
        scanf("%d %d",&n,&m);

        //获取n行m列的矩阵
        for(int i = 0;i < n;i++)
        {
                for(int j = 0;j < m;j++)
                {
                        scanf("%d",&num);
                        if(num > 0)
                        {
                                sum += num;
                                //计算矩阵中大于0的元素之和
                        }
                }
        }       
        printf("%d\n",sum);     
        return 0;
}

88. 成绩输入输出问题

  • 问题描述:输入10科成绩,换行显示输入的10科成绩。
  • 输入描述:一行,输入10科成绩(整数表示,范围0~100),用空格分隔。
  • 输出描述:一行,输出输入的10科成绩,用空格分隔。
  • 示例
    • 输入: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 score[10];
        for(int i = 0;i < 10;i++)
        {
                scanf ("%d ",&score[i]);
                printf("%d ", score[i]);
        }

        return 0;
}

89. 逆序输出

  • 问题描述:输入10个整数,要求按输入时的逆序把这10个数打印出来。逆序输出,就是按照输入相反的顺序打印这10个数。
  • 输入描述:一行,输入10个整数(范围-231~231-1),用空格分隔。
  • 输出描述:一行,逆序输出输入的10个整数,用空格分隔。
  • 示例
    • 输入: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 num[10];
        for(int i = 0;i < 10;i++)
        {
                scanf("%d ",&num[i]);
        }
        for(int j = 9;j >= 0;j--)
        {
                printf("%d ",num[j]);
        }
        putchar('\n');

        return 0;
}

90. 统计数据正负个数

  • 问题描述:输入10个整数,分别统计输出正数、负数的个数。
  • 输入描述:输入10个整数(范围-231~231-1),用空格分隔。
  • 输出描述:两行,第一行正数个数,第二行负数个数,具体格式见样例。
  • 示例
输入:
-1 2 3 -6 7 8 -1 6 8 10
输出:
positive:7
negative:3
  • 代码实现
#include <stdio.h>
int main()
{
        int arr[10];
        int positive = 0,negative = 0;
        for(int i = 0;i < 10;i++)
        {
                scanf("%d ",&arr[i]);
                if(arr[i] > 0)          
                {
                        positive++ ;
                }
                else if(arr[i] < 0)
                {
                        negative++ ;
                }
        }
        printf("positive:%d\n",positive);
        printf("negative:%d\n",negative);

        return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值