首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【手把手带你刷好题】--C语言基础编程题(八)

【手把手带你刷好题】--C语言基础编程题(八)

作者头像
草莓熊Lotso
发布2025-10-29 13:49:01
发布2025-10-29 13:49:01
960
举报
文章被收录于专栏:C++C++

🔥个人主页:@草莓熊Lotso 🎬作者简介:C++研发方向学习者 📖个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言:生活是默默的坚持,毅力是永久的享受。

前言:本篇博客是刷题集中的第八篇,题目还是一些比较基础的IO型题目,适合C语言初学者。特别声明一下,这里提供的答案和思路都并非唯一,仅供参考。

1.平均身高

题目链接:平均身高__牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    double high[5]={0};
    double sum=0.0;
    for(int i=0;i<5;i++)
    {
        scanf("%lf",&high[i]);
        sum+=high[i];
    }
    double ave=sum/5.0;
    printf("%.2lf",ave);
    return 0;
}

题目解析:

  • 本题在输入的时候就可以把5次都加起来了,后续直接除以5.0得到平均身高,浮点数除法,除号两端的操作数至少得有一个浮点数。

2.HTTP状态码

题目链接:HTTP状态码_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    int n=0;
    while (scanf("%d", &n) != EOF) { 
        switch(n)
        {
            case 200:
            printf("OK\n");
            break;
            case 202:
            printf("Accepted\n");
            break;
            case 400:
            printf("Bad Request\n");
            break;
            case 403:
            printf("Forbidden\n");
            break;
            case 404:
            printf("Not Found\n");
            break;
            case 500:
            printf("Internal Server Error\n");
            break;
            case 502:
            printf("Bad Gateway\n");
        }
    }
    return 0;
}

题目解析:

  • 这题还是一个多组输入的题,并且题目中给的状态码比较多且都为整数,可以用switch语句更加方便简洁。

3.数字三角形

题目链接:数字三角形_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    int n=0;
    while (scanf("%d", &n) != EOF) { 
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<=i;j++)
            {
                printf("%d ",j+1);
            }
            printf("\n");
        }
    }
    return 0;
}

题目解析:

  • 这就是一个图形打印题,上篇文章中我们已经练习过很多了,无非是把*号啥的变成了数字,这里自己处理一下就行了,分清楚每行打印的内容。

4.公务员面试

题目链接:公务员面试_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

这题可以用排序来做,排完之后不算最高和最低就行了,但是有点麻烦了,这里博主采用另一种方法

代码语言:javascript
复制
#include <stdio.h>
int main()
{
    int a, max = 0, small = 100, sum = 0, count = 0;
    while (scanf("%d", &a) != EOF)
    {
        if (a > max)//判定最高分
        {
            max = a;
        }
        if (a < small)//判定最低分
        {
            small = a;
        }
        sum += a;
        count++;//计数器
        if (count == 7)//计数器=7时代表一组的分数好了可以进行计算
        {
            printf("%.2f\n", (sum - max - small) / 5.0);
            count = 0;//重置
            max = 0;//重置
            small = 100;//重置
            sum = 0;//重置
        }
         
    }
 
    return 0;
}

题目解析:

  • 多组输入,每7个为一组,一边输入一边判定最大值,最小值,最后把这两个去掉再去求平均值就可以了,每组测完后都需要重置一下。

5. 有序序列插入一个整数

题目链接:有序序列插入一个整数_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    int n=0;
    int arrn[50]={0};
    int sert=0;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d ",&arrn[i]);
    }
    scanf("%d",&sert);
    int j=0;
    for(j=n-1;j>=0;j--)
    {
        if(arrn[j]>sert)
        {
            arrn[j+1]=arrn[j];
        }
        else {
        arrn[j+1]=sert;
        break;
        }
    }
    if(j<0)
    {
        arrn[0]=sert;
    }
    for(int i=0;i<=n;i++)
    {
        printf("%d ",arrn[i]);
    }
    return 0;
}

题目解析:

  • 多组输入
  • 从往前比较并一定数字找到合适的位置,就可以插入数字了,但是如果插入的数字比所有的元素都小,那就插入到第一个位置上

6.筛选法求素数

题目链接:筛选法求素数_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
//筛选法
#include <stdio.h>

int main() 
{
    int n = 0;
    while (scanf("%d", &n) != EOF) {
        int arr[101] = { 0 };
        int count = 0;
        for (int i = 2;i <= n;i++)
        {
            arr[i] = i;
        }
        for (int i = 2;i <= n;i++)
        {
            for (int k = i+1;k <= n;k++)
            {
                if (arr[k]%i == 0)
                {
                    arr[k] = 0;
                }
            }
        }
        for (int j = 2;j <= n;j++)
        {
            if (arr[j] != 0)
                printf("%d ", arr[j]);
            else
                count++;
        }
        printf("\n");
        printf("%d", count);

    }
    return 0;
}

题目解析:

  • 根据题目要求这题需要用筛选法,大家直接看一下我的代码去理解一下筛选法的思路就好了,画图理解会更好,但是如果没有题目要求的话,我更推荐试除法来解决这个问题,比较简单易懂。

试除法:

代码语言:javascript
复制
#include<stdio.h>

int is_prime(int n)
{
    int i = 0;
    for(i=2; i<n; i++)
   {
        if(n%i == 0)
            return 0;
   }
    return 1;
}
int main()
{
    int n = 0;
    //题目相当于打印n以内的素数
    while(scanf("%d", &n) != EOF)
   {
        int i = 0;
        int count = 0;
        for(i=2; i<=n; i++)
       {
            if(is_prime(i)==1)
           {
                printf("%d ", i);
           }
            else
           {
                count++;
           }
       }
        printf("\n%d\n", count);
   }
    return 0;
 }

7. 图像相似度

题目链接:图像相似度_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
   int m=0;
   int n=0;
   int arr1[100][100]={0};
   int arr2[100][100]={0};
   scanf("%d %d",&m,&n);
   for(int i=0;i<m;i++)
   {
    for(int j=0;j<n;j++)
    {
        scanf("%d ",&arr1[i][j]);
    }
   }
   
   for(int i=0;i<m;i++)
   {
    for(int j=0;j<n;j++)
    {
        scanf("%d ",&arr2[i][j]);
    }
   }
   
   int count=0;
   for(int i=0;i<m;i++)
   {
    for(int j=0;j<n;j++)
    {
        if(arr1[i][j]==arr2[i][j])
        {
            count++;
        }
    }
   }
   double silm=(1.0*count)/(m*n)*100.0;
   printf("%.2lf\n",silm);
   
    return 0;
}

题目解析:

  • 输入两个二维数组
  • 求两个二维数组相同元素个数
  • 这里求百分比的时候要注意*100.0,小时点后保留2位

8.登录验证

题目链接:登录验证_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>
#include<string.h>

int main() 
{
    char id[20]={0};
    char key[20]={0};
    while (scanf("%s %s", id, key) != EOF) { 
        if(strcmp(id,"admin")==0&&strcmp(key,"admin")==0)
        {
            printf("Login Success!");
        }
        else {
        printf("Login Fail!");
        }
    }
    return 0;
}

题目解析:

  • 多组输入,两个字符串比较大小不能使用==,得使用strcmp函数,比较的是两个字符串中对应字符的ASCII码值

9.包含数字9的数

题目链接:包含数字9的数_牛客题霸_牛客网

题目描述:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    int count=0;
    for(int i=1;i<=2019;i++)
    {
        int m=i;
        while(m>0)
       {
        if(m%10==9)
        {
            count++;
            break;
        }
        else {
        m/=10;
        }
       }
    }
    printf("%d",count);
    return 0;
}

题目解析:

  • 要判断一个数字是否包含9就看一下这个数字的某一位是否为9即可,只要某一位为9就停下来,直接break跳出循环。

10.奇偶统计

题目链接:奇偶统计_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

方法1:

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    int n=0;
    while (scanf("%d", &n) != EOF) {
        int odd_count=0;
        int xdd_count=0;
        for(int i=1;i<=n;i++)
        {
            if(i%2==0)
            {
                xdd_count++;
            }
            else {
            odd_count++;
            }
        }
        printf("%d %d",odd_count,xdd_count);
    }
    return 0;
}

方法2:

代码语言:javascript
复制
#include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    int i = 0;
    int odd = 0;//奇数的个数
    if(n%2==0)
        odd = n/2;//如果n是偶数,则奇数和偶数一样多
    else
        odd = n/2+1;//如果n是奇数,则奇数比偶数多1
    printf("%d %d\n", odd, n-odd);
    return 0;
}

题目解析:

  • 方法1是利用两个计数器统计奇数和偶数的个数,最后直接打印出来就可以了
  • 方法2是根据数字个数来推算的

往期回顾:

【手把手带你刷好题】--C语言基础编程题(四)

【手把手带你刷好题】--C语言基础编程题(五)

【手把手带你刷好题】--C语言基础编程题(六)

【手把手带你刷好题】--C语言基础编程题(七)

结语: 本篇文章就到此结束了,C语言刷题集专栏中的第八篇的题目比前面的都要难,但有了前面的基础,这样的难度也是在合理范围内的,大家应该都可以解决,非常适合刚学完C语言的朋友们拿来练手,提升自己的代码能力。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.平均身高
  • 2.HTTP状态码
  • 3.数字三角形
  • 4.公务员面试
  • 5. 有序序列插入一个整数
  • 6.筛选法求素数
  • 7. 图像相似度
  • 8.登录验证
  • 9.包含数字9的数
  • 10.奇偶统计
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档