BC C language

这篇博客汇总了五个C语言编程题目,包括学生基本信息输入输出、打印字符菱形、出生日期处理和十六进制转十进制。在解决过程中,博主详细讲解了每个题目的理解、代码实现及遇到的问题,如浮点数四舍五入误差和scanf、printf函数的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目汇总

No.1

学生基本信息输入输出

在这里插入图片描述

题目理解

  • 这个题目本质上其实并不难,考察的点就在于scanf输入的格式要和题目要求的格式是一样的,同时输出的格式也需要按照题目给出来的格式来进行相应的一个输出的操作,但是这个题目,我一开始写的问题在于,最开始我写的代码是这样的:
#include<stdio.h>
int main()
{
    int id=0;
    double a,b,c=0;
    scanf("%d;%lf,%lf,%lf",&id,&a,&b,&c);
    printf("The each subject score of No. %d is %.2lf, %.2lf, %.2lf.",id,a,b,c);
    return 0;
}
  • 但是上面的那种代码,,并没有办法完全通过所以的测试用例,如下所示:
  • 可以看出来问题在于没有进行四舍五入的操作
    在这里插入图片描述
  • 测试时发生了一些错误:原因是浮点型小数用的是double型变量定义的导致输出时发生了四舍五入的错误,问题在于:注意:小数在内存中可能不能精确保存;float类型对应的浮点型数据为%f;double类型对应的浮点型数据为%lf,.控制输出小数的精确度用%.mf,m为小数点后的位数;eg:保留小数点后两位:%.2f
  • 把double改成float就行了

代码展示

#include<stdio.h>
int main()
{
    int id=0;
    float a,b,c=0;
    scanf("%d;%f,%f,%f",&id,&a,&b,&c);
    printf("The each subject score of No. %d is %.2f, %.2f, %.2f.",id,a,b,c);
    return 0;
}

No.2

打印有规律的字符(牛牛的字符菱形)

在这里插入图片描述

题目理解:

  • 这种打印图形的题目,一般都是需要找规律的,那么其实这个图形的规律也是蛮好找的,这个图形整体的规律其实就是以中间的那一行作为分界线,然后上下部分的内容分别就是对称的了,所以可以通过几个不同的部分来进行一个打印的操作就是可以的了

代码展示

#include<stdio.h>
int main()
{
    char ch=0;
    scanf("%c",&ch);
    for(int i=0;i<5;i++)
    {
        for(int j=0;j<5;j++)
        {
            if((i==0||i==4)&&j==2)
                printf("%c",ch);
            else if(i==2)
                printf("%c",ch);
            else if ((i == 1||i==3) && (j > 0 && j < 4))
                printf("%c",ch);
            else 
                printf(" ");
        }
        printf("\n");
    }
    return 0;
}

No.3

出生日期输入输出

在这里插入图片描述
在这里插入图片描述

题目理解

  • 这个题目考察的点其实也不难,综合来看,其实也是在考察scanf这个函数和printf这个函数相关的细节,其中题目的备注里面也给了一些知识点,比如scanf函数是可以指定输入的宽度的,然后不使用的位置也是可以自动填0的,就是%02d这种来进行一个自动填充的操作

代码展示

#include<stdio.h>
int main()
{
    int a=0;
    int b=0;
    int c=0;
    scanf("%4d%2d%2d",&a,&b,&c);
    printf("year=%4d\nmonth=%02d\ndate=%02d",a,b,c);
    return 0;
}

No.4

十六进制转十进制

在这里插入图片描述

题目理解

  • 对于这个题目的求解,我们可以直接将十六进制数字赋值到a

代码展示

#include<stdio.h>
int main()
{
    int a=0xABCDEF;
    printf("%15d",a);
    return 0;
}

No.5

实现四舍五入

在这里插入图片描述

题目理解

  • 这个题目考察的点其实也很明显,就是题目里面所提到的四舍五入相关的东西,大四这里的四舍五入有一个比较特殊的点就是这里其实是需要区分正负的,正数的四舍五入和负数的四舍五入其实就是不一样的,所以这里首先就是需要注意我们在进行四舍五入的时候是需要区分正负的,然后知道这个点之后,这个题目就好处理很多了

代码展示

#include<stdio.h>
int main()
{
    float a=0;
    scanf("%f",&a);
    if(a>0)
    {
       a=a+0.5; 
       printf("%d",(int)a);
    }
    else 
    {
        a=a-0.5;
        printf("%d",(int)a);
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值