C语言编程入门之刷题篇(C语言130题)(1)

1. 关于本文章

1.1文章内容:

本文章讲解130道C语言入门OJ题目,旨在带着初学者刷题入门,同时讲解题目涉及的C语言相关语法。 文章使用的教学环境:Win11+VS2022编译器+牛客网 (www.nowcoder.com

1.2适合人群

C语言的初学者(大一、大二,大三、研一)

1.3 时间安排

本篇文章模板借鉴于比特就业课c语言刷题训练营,

文章将会跟随课程出12篇

1.4你的收获

a. 学习和巩固C语言,加深对C语言的理解和使用,战胜对代码的恐惧。 b. 熟练掌握在线OJ刷题,熟悉互联网公司笔试的方式。

2.在线OJ

2.1什么是在线OJ

在线判题系统(英语:Online Judge,缩写OJ)是一种在编程竞赛中用来测试参赛程序的在线系统, 也可以用于平时练习。

2.2 为什么训练在线OJ?

a. 有一些比赛,比如:NOI、NOIP、ACM之类的编程竞赛都是采用在线OJ的方式进行。 b. 现在IT大学生就业找工作的笔试环节也采用在线OJ的方式进行。(笔试OJ化,这是未来的趋势)。

参考链接 https://www.nowcoder.com/contestRoom?categories=0&orderByHotValue=2&filter=0

注: 全国青少年信息学奥林匹克竞赛(NOI) 全国青少年信息学奥林匹克联赛(NOIP) 国际大学生程序设计竞赛(ACM )

lesson1

1.BC1 实践出真知


题目描述:

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

输入描述:

输出描述:

Practice makes perfect!

参考代码:

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

2.BC2-小飞机


题目描述:

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

输入描述:

输出描述:

参考代码:

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

3.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.

参考代码:

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

答案解析:

这类入门的题目基本都是没有输入操作的。 本题的关键是要掌握C语言的 sizeof 这个操作符。 sizeof 是C语言的一个单目操作符,用来计算不同类型数据所占内存空间的大小,单位是字节。

4.BC7 缩短二进制


题目描述:

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

输入描述:

输出描述:

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

备注:

printf可以使用使用格式控制串“%o”、“%X”分别输出八进制整数和十六进制整数,并使用修饰符“#”控制前导显示

参考代码:

#include<stdio.h>
int main()
{

printf("%#o %#X",1234,1234);

    return 0;
}

答案解析:

这里需要我们掌握对个各种数据的格式控制 比如:

格式参考:https://zh.cppreference.com/w/c/io/fscanf 注意:注意还是严格按照题目要求的格式输出,才能保证正确性。

5.BC19 反向输出一个四位数


题目描述:

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

输出描述:

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

示例1

输入:1234

输出:4321

参考代码:

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

答案解析: 这里得掌握操作符 % 和 / 的基本使用和特点。其次是循环的使用。

6.BC28 大小写转换


题目描述:

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

输出描述:

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

输出描述:

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

示例1

输入:A

B

输出:a

b

备注:

多组输入过程中要注意“回车”也是字母,所以要“吸收”(getchar())掉该字母。

参考代码:

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

答案解析: 1. 多组数据输入的问题。 2. getchar 清理缓冲区的问题,这里得理解 输入缓冲区 的 问题

解释:多组输入及输入一组\个数程序运行后再次输入一组\个数,相当于进入一个循环输入。

多组输入表达:

这里我们拿while循环举例:

  1. while((ch=getchar ( ) ) != EOF)

  1. while (~(ch=getchar ( ) ) )

原理:

方法1:

众所周知,C语言是不自带输入语言的,要想实现输入数据就会常用文件 stdio.h 里的 scanf 函数。而 scanf 函数在正常读入的时候返回成功读入的数据项数,但当读入时遇到了“文件结束”时则会返回 EOF 。(getchar同理)

eg:

如果 a 和 b 都被成功读入,scanf 函数的返回值就为 2 ;

如果只有 a 或 b 中的一个被成功读入, scanf 函数的返回值为 1 ;

如果 a 和 b 都未被成功读入,返回值就为 0 ;

但是如果遇到 错误 或 文件结束,那么返回值为 EOF (end of file)。

所以,在测试时 scanf 函数读取的数据并且返回的值不是 EOF 即可进入循环,直到读取数据完毕,文件结束(EOF)。

但是在自己输入数据测试时,如果想要结束输入就要:

(1)windows平台,即dos命令窗口:

输入CTRL+Z即为文件结束。

(2)其它平台,如Unix, Linux,Mac等:

输入CTRL+D即为文件结束。

————————————————

版权声明:本文为CSDN博主「Pyrrole」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_51788994/article/details/113352449

方法2:

方法三:

‘~’ 为一元运算符,用于求整数的二进制反码,也就是对输入的数的二进制进行按位取反。

通过上面我们可以知道scanf 的返回值都为为大于等于 -1 的数,只有当 scanf 返回值为 -1(二进制表示为全为 1)时,~scanf() 的值为就为 0,其他情况均不为 0。

所以对于方法三,正常的输入都会进入循环,而当遇到文件结束时就会结束循环。

在自己输入数据测试时,结束输入的方法也与方法一 一样。

————————————————

版权声明:本文为CSDN博主「Pyrrole」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_51788994/article/details/113352449

吸收”(getchar())掉该字母:

关于getchar()吸收回车字符的那点事儿

下一期 log in…………


文章主要参考比特就业课-鹏哥c语言训练营,文章内容及排版格式也参考比特课程的课件;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Cocobol0

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

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

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

打赏作者

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

抵扣说明:

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

余额充值