[百战成神1]C语言之凡人暴刷小牛【超详细解析,掌握每道题】

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 对于学习编程的新手来说,刷题是必不可少的,下面是来自牛客网的一些对于新手很友好的编程题,题目难度是层层递进的,我把链接给大家放在了这里,大家也可以去看看,练习练习,消除对编程题的恐惧,让它变的简单,注意,顺序是打乱的,望理解!

文章目录

前言

BC1 实践出真知

描述

输入描述:

输出描述:

解析:

BC2 我是大V

描述

输入描述:

输出描述:

解析:

BC3 有容乃大

描述

输入描述:

输出描述:

解析:

BC6 小飞机

描述

输入描述:

输出描述:

解析:

这题按照图片上的内容输出结果就好,注意空格与换行,代码如下:

BC7 缩短二进制

描述

输入描述:

输出描述:

解析:

BC19 反向输出一个四位数

描述

输入描述:

输出描述:

示例1

解析:

BC28 大小写转换

描述

输入描述:

输出描述:

示例1

解析:

ASCII表:出处网络

BC8 十六进制转十进制

描述

输入描述:

输出描述:

解析:

BC9 printf的返回值

描述

输入描述:

输出描述:

解析:

BC11 学生基本信息输入输出

描述

输入描述:

输出描述:

示例1

解析:

BC35 判断字母

描述

输入描述:

输出描述:

示例                        

解析:

BC12 字符圣诞树

描述

输入描述:

输出描述:

示例1

解析:

       总结


前言

对于学习编程的新手来说,刷题是必不可少的,下面是来自牛客网的一些对于新手很友好的编程题,题目难度是层层递进的,我把链接给大家放在了这里,大家也可以去看看,练习练习,消除对编程题的恐惧,让它变的简单,注意,顺序是打乱的,望理解!


提示:以下是本篇文章正文内容,下面案例可供参考



BC1 实践出真知

描述

于老师经常告诉我们“学习编程最好的办法就是上机实践,因为你要对计算机下指令,想让计算机帮你干活,就得多和计算机‘交流’,实践才能出真知。”

输入描述:

本题没有输入

输出描述:

Practice makes perfect!

解析:

看题嘛 并没有输入要求,只需要准确输出结果就OK,代码如下:


#include <stdio.h>
int main()
{
    printf("Practice makes perfect!");
    return 0; 
}


BC2 我是大V

描述

每个人都想成为大V (VIP:Very Important Person),但要一点一点积累才行,先从小v做起。要求输出由小写字母v组成的大V。

输入描述:

输出描述:

v   v

v v

 v

解析:

这道题没有输入要求,所以按照输出的,按照要求输出就好了,需要注意空格的间隔和一个\n换行转义字符,代码如下:

#include<stdio.h>
int main()
{
    printf("v   v\n");
    printf(" v v\n");
    printf("  v");
    return 0;
}


BC3 有容乃大

描述

确定不同整型数据类型在内存中占多大(字节),输出不同整型数据类型在内存中占多大(字节)。

输入描述:

输出描述:

不同整型数据类型在内存中占多大(字节),具体格式详见输出样例,输出样例中的?为不同整型数据类型在内存中占的字节数。输出样例如下:

The size of short is ? bytes.

The size of int is ? bytes.

The size of long is ? bytes.

The size of long long is ? bytes.

解析:

这道题是要输出不同数据类型的大小,而我们知道sizeof 是C语言的一个单目操作符,用来计算不同类型数据所占内存空间的大小,单位是字节。代码如下:

#include<stdio.h>
int main()
{
    printf("The size of short is %d bytes.\n",sizeof(short));
    printf("The size of int is %d bytes.\n",sizeof(int));
    printf("The size of long is %d bytes.\n",sizeof(long));
    printf("The size of long long is %d bytes.\n",sizeof(long long));
    return 0;
}


BC6 小飞机

描述

KiKi学会了printf在屏幕输出信息,他想输出一架小飞机。请帮他编写程序输出这架小飞机。

输入描述:

输出描述:

解析:

这题按照图片上的内容输出结果就好,注意空格与换行,代码如下:

#include<stdio.h>
int main()
{
    printf("     **     \n");
    printf("     **     \n");
    printf("************\n");
    printf("************\n");
    printf("    *  *    \n");
    printf("    *  *    \n");
    return 0;
}


BC7 缩短二进制

描述

我们处理的整数通常用十进制表示,在计算机内存中是以二进制补码形式存储,但通常二进制表示的整数比较长,为了便于在程序设计过程中理解和处理数据,通常采用八进制和十六进制,缩短了二进制补码表示的整数,但保持了二进制数的表达特点。请输出十进制整数1234对应的八进制和十六进制。

输入描述:

输出描述:

十进制整数1234对应的八进制和十六进制(字母大写),用空格分开,并且要求,在八进制前显示前导0,在十六进制数前显示前导0X

解析:

这道题要用八进制和十六进制输出十进制的1234,八进制是用o来输出,十六进制用X来输出,因为题目要求大写,前导可以使用0来显示,也可以用#来显示,大家可以扩展一下各个数据的格式控制,下面代码说明:

#include<stdio.h>
int main()
{
    //printf("%#o %#X",1234,1234);
    printf("0%o 0X%X",1234,1234);
    return 0;
}


BC19 反向输出一个四位数

描述

将一个四位数,反向输出。

输入描述:

一行,输入一个整数n(1000 <= n <= 9999)。

输出描述:

针对每组输入,反向输出对应四位数。

示例1

输入:1234          输出:4321

解析:

这道题是输入一个四位数,反向输出四位数,仔细看,有了输入,而输入要输入的是地址,所以要知道,第一个是scanf输入,第二个就是&符号,接下来有了输入,然后再来分析一下如何来实现反向输出,比如1234这个四位数,反向先拿到4这个数字  那么1234 对10取模,然后就是4  然后1234 除以10 就是 123   然后123对10取模  就是 3   除以10 就是 12  12对10取模就是2  然后除以10 就是 1  1取模就是 1 然后除以10 就是0 这个是一个循环 用while来实现 而当n等于0的时候 循环停止,就全部输出了,下面代码说明:

#include<stdio.h>
int main()
{
    int n = 0;
    //输入
    scanf("%d",&n);
    //输出
    while(n)
    {
        printf("%d",n%10); 
        n = n/10;
    }
    return 0;
}


BC28 大小写转换

描述

实现字母的大小写转换。多组输入输出。

输入描述:

多组输入,每一行输入大写字母。

输出描述:

针对每组输入输出对应的小写字母。

示例1

输入:                                输出:

A                        a

B                        b

解析:

这道题看起来有点麻烦,是让大写字母转换成小写字母,而且是多组输入输出,那么首先创建一个变量ch  如果是多组的话,那么就用到循环了  那么大家就要认识一个函数 getchar 是用来专门接收字符的  还有个知识点需要知道  ASCII表 中 因为在键盘上的字符 而创建的表,下面表中可以看到 大写A 与小写a十进制数字差距32  那么是不是可以理解为 加上32可以转换小写呢  答案就是这样的 ,那么接下来整理思路:

1,创建变量ch

2,写出循环,注意,需要有结束的条件,而EOF 是 end of file 是结束标志

3,打印,注意的一点是,需要换行,按照题目中的要求来,最重要的一点是 记住回车也是字符,需要再次引用一个getchar来接收掉回车 代码如下:

#include<stdio.h>
int main()
{
    char ch = 0;
    while((ch = getchar()) != EOF)
    {
        printf("%c\n",ch+32);
        getchar();
    }
    return 0;
}


ASCII表:出处网络


BC8 十六进制转十进制

描述

BoBo写了一个十六进制整数ABCDEF,他问KiKi对应的十进制整数是多少。

输入描述:

输出描述:

十六进制整数ABCDEF对应的十进制整数,所占域宽为15

解析:

十六进制是0x开头,md是控制整数域宽的,15个就是15d,代码如下:

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

BC9 printf的返回值

描述

KiKi写了一个输出“Hello world!”的程序,BoBo老师告诉他printf函数有返回值,你能帮他写个程序输出printf(“Hello world!”)的返回值吗?

输入描述:

输出描述:

包括两行:

第一行为“Hello world!”

第二行为printf(“Hello world!”)调用后的返回值。

解析:

这道题考察了printf的返回值 ,printf的返回值是字符个数,注意,不能在第一行后面加上一个\n,因为这个也属于字符,所以代码如下:三种方法

#include<stdio.h>
int main()
{   //1
    int ret = printf("Hello world!");
    printf("\n");
    printf("%d",ret);
    return 0;
}
int main()
{
    //2
    int ret = printf("Hello world!");
    printf("\n%d",ret);
    return 0;
}
int main()
{
    //3
    printf("\n%d",printf("Hello world!"));
    return 0;
}


BC11 学生基本信息输入输出

描述

依次输入一个学生的学号,以及3科(C语言,数学,英语)成绩,在屏幕上输出该学生的学号,3科成绩(注:输出成绩时需进行四舍五入且保留2位小数)。

数据范围:学号满足 1 \le n \le 20000000 \1≤n≤20000000  ,各科成绩使用百分制,且不可能出现负数

输入描述:

学号以及3科成绩,学号和成绩之间用英文分号隔开,成绩之间用英文逗号隔开。

输出描述:

学号,3科成绩,输出格式详见输出样例。

示例1

输入:

17140216;80.845,90.55,100.00

输出:

The each subject score of No. 17140216 is 80.85, 90.55, 100.00.

解析:

有输入与输出,创建变量,分别问学号和成绩,注意的是,double与float的精度问题,这道题要四舍五入,而double的精度更高,所以这里采用float,输入,注意输入的是地址,要加上&,输出的时候注意按照格式来输出,控制小数点后几位用.几来控制,如.2f是控制小数点2位,所以代码如下:

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


BC35 判断字母

描述

从键盘任意输入一个字符,编程判断是否是字母(包括大小写)。

输入描述:

输入包括一个字符。

输出描述:

输出该字符是字母(YES)或不是(NO)。

示例                        

输入:

H                        9

输出:

YES                      NO

解析:

判断是否是字母,需要getchar接受字符,因为是多组输入,所以用while循环,设定结束条件,要判断就需要用到if 语句 是字母的话就输出YES 不是就输出NO,那么字母包括大写小写,这个时候需要认识  && 与 || 这两个符号 分别是并且和或者的意思   小写字母要大于a并且小于z 或者大写字母要大于A 并且小于 Z ,注意换行,并且换行也属于字符,要getchar处理掉换行

那么有没有一种库函数专门判断是不是字母呢?答案是有的 isalpha()是C语言中专门判断是不是字母的,如果是字母,则返回非0,如果不是字母则返回0

所以代码如下:两种方法

#include<stdio.h>
#include<ctype.h>
int main()
{//1
    int ch = 0;
    //多组输入
    while((ch=getchar()) != EOF)
    {
        //判断条件并输出
        if((ch >='a' && ch <='z') || (ch >= 'A' && ch <='Z'))
        {
            printf("YES\n");
        }
        else
        {
            printf("NO\n");
        }
        getchar();//处理\n
    }
    return 0;
}
int main()
{ //2
    int ch = 0;
    //多组输入
    while((ch=getchar()) != EOF)
    {
        //判断条件并输出
        if(isalpha(ch))
        {
            printf("YES\n");
        }
        else
        {
            printf("NO\n");
        }
        getchar();//处理\n
    }
    return 0;
}


BC12 字符圣诞树

描述

输入一个字符,用它构造一个边长为5的三角形圣诞树。

数据范围:保证输入的字符是一个 char 类型的值

输入描述:

输入只有一行,一个字符。

输出描述:

该字符构成的三角形圣诞树。

示例1

输入:

1

输出:

   1

  1 1

 1 1 1

1 1 1 1

1 1 1 1 1

解析:

构造一个五行的字符三角形圣诞树,而且字符是char类型,用for循环来实现

1,输出一个字符,getchar接收字符

2,要打印三角形,因为是边长为5,所以定义一个i 小于5,然后能够自增

3,注意看,打印字符三角形,不仅要打印字符,还需要打印空格,这时候就要分开来打印

4,先打印一行的空格,定义j 从0开始,小于4-i个,因为第一个是4个 ,当i是0的时候 4-0=0,当i自增 =1 4-1=3 ,刚好控制空格的范围

5,接下来打印字符,从0开始,小于等于i ,当i=0,j=0,打印一个字符

6,注意打印完一行换行

那么代码如下:

#include<stdio.h>
int main()
{
    //输出一个字符
    char ch = 0;
    ch = getchar();
    int i = 0;
    //构造边长为5的三角形圣诞树 五行
    for(i=0;i<5;i++)
    {
        int j = 0;
        //分别要打印空格和数字
            //空格
        for(j=0;j<4-i;j++)  //4-i个控制每行输出几个空格
        {
            printf(" ");
        }
            //字符
        for(j=0;j<=i;j++)
        {
            printf("%c ",ch);
        }
        printf("\n"); //打印一行的然后换行
    }
    return 0;
}


总结

以上是牛客网上的10道题,链接都在上面,还有详解,有写错的,或者哪里不明白的,可以在评论区问我,我来解答,这个是新手练题的,大佬就不用看啦,毕竟本人也是个二吊子,大佬可以指点一二,凡人在这里感谢大家的观看,希望三连,凡人谢谢大家!


相关文章
|
2月前
|
存储 C语言 C++
【c语言】运算符汇总(万字解析)
今天博主跟大家分享了c语言中各种操作符的功能、使用方法以及优先级和结合性,并且与大家深入探讨了表达式求值的两个重要规则--算数转换和整形提升。学习这些知识对我们的C语言和C++学习都有着极大的帮助。
123 2
|
28天前
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
129 14
|
1月前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
47 8
|
1月前
|
存储 算法 C语言
【C语言】深入浅出:C语言链表的全面解析
链表是一种重要的基础数据结构,适用于频繁的插入和删除操作。通过本篇详细讲解了单链表、双向链表和循环链表的概念和实现,以及各类常用操作的示例代码。掌握链表的使用对于理解更复杂的数据结构和算法具有重要意义。
427 6
|
1月前
|
存储 网络协议 算法
【C语言】进制转换无难事:二进制、十进制、八进制与十六进制的全解析与实例
进制转换是计算机编程中常见的操作。在C语言中,了解如何在不同进制之间转换数据对于处理和显示数据非常重要。本文将详细介绍如何在二进制、十进制、八进制和十六进制之间进行转换。
39 5
|
1月前
|
C语言 开发者
【C语言】断言函数 -《深入解析C语言调试利器 !》
断言(assert)是一种调试工具,用于在程序运行时检查某些条件是否成立。如果条件不成立,断言会触发错误,并通常会终止程序的执行。断言有助于在开发和测试阶段捕捉逻辑错误。
41 5
|
1月前
|
安全 搜索推荐 Unix
【C语言】《回调函数》详细解析
回调函数是指一个通过函数指针调用的函数。它允许将一个函数作为参数传递给另一个函数,并在特定事件发生时执行。这种技术使得编程更加灵活,可以动态决定在何时调用哪个函数。
43 1
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
87 2
|
10天前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
|
10天前
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析

推荐镜像

更多