刷题使我快乐~

本文通过一系列编程实例,阐述了实践在编程学习中的重要性,从输出不同进制的数字到理解C语言的数据类型及其内存占用,再到处理字符输入输出及大小写转换。每个例子都强调了动手实践和理解基本操作符的关键作用,旨在帮助初学者巩固基础知识。
摘要由CSDN通过智能技术生成

1、BC1-实践出真知


一位大牛曾经说过 “学习编程最好的办法就是上机实践,因为你要对计算机下指令,想让计算机帮你干活,就得多和计算机‘交流’,实践才能出真知。”
输出描述:

Practice makes perfect!

代码:

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

解析:
本题是一个没有输入要求的题目,只考察输入,所以只需要准确无误的输出结果就行了。

2、BC2-我是大V


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

 v     v
  v   v
    v

备注:
换行使用转义字符‘\n’
参考代码:

#include <stdio.h>
//方法1
int main()
{
    printf("v   v \n");
    printf(" v v  \n");
    printf("  v   \n");
    return 0;
}
//方法2
#include <stdio.h>
int main()
{
    //一行输出的效果
    printf("v   v\n v v\n  v\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));
    
    return 0;
}

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

4、BC-7缩短2进制


题目描述:

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

输出描述:

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

备注:

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

代码:

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

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

%c - 字符
%hd - 短整形
%d - 整形
%s - 字符串
%f - 单精度浮点数
%lf - 双精度浮点数
%p - 地址格式
…还有很多

格式参考:https://zh.cppreference.com/w/c/io/fscanf

5、BC119-反向输出4位数


题目描述:

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

输入描述:

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

输出描述:

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

代码:

#include <stdio.h>
int main()
{
    int n=0;
    //输入数据
    scanf("%d",&n);
    //获取每一位
    while(n)
   {
        printf("%d",n%10);
        n/10;
   }
    return 0;
}

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

6、BC28-大小写转换


题目描述:

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

输入描述:

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

输出描述:

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

示例:
输入

A
B

输出

a
b

备注:

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

代码:

//代码1-这个代码对吗?
#include <stdio.h>
int main()
{
    int ch = 0;
    //EOF —— end of file ——文件结束标志——通常是放在文件的末尾
    //循环数据输入
    while((ch=getchar()) != EOF)
   {
       printf("%c\n", (ch+32));
   }
    return 0;
}
//代码2-正确的代码实现
#include <stdio.h>
int main()
{
    int ch = 0;
    //循环数据输入
    while((ch=getchar()) != EOF)
   {
       printf("%c\n", (ch+32));
       getchar();//处理多余的\n字符
   }
    return 0;
}

解析:

  • A的ASCII码值为65,a为97;B为66,b为98;大写字母与小写字母之间的ASCII码值相差32,我们只需要在大写字母的值上面加32,即可得到小写字母
  • 当我们使用第一个代码时,在输入框中输入A时,回车会被看作是\n一起被输出为*,所以我们需要getchar()来“吸收掉”回车
  • getchar清理缓冲区的问题,这里得理解输入缓冲区的问题。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值