牛客网c语言刷题130,开篇入门刷题,战胜对编程的恐惧,适合初学者食用。

大一,大二初学者训练题

    • 1. BC1-实践出真知
    • 2. BC2-我是大V
    • 3. BC3-有容乃大
    • 4. BC7-缩短二进制
    • 5. BC19-反向输出一个四位数
    • 6. BC28- 大小写转换

本文所有题目均来自牛客网的《编程初学者入门训练》
链接: link.
点此即可进入。

写本博客的目的在于进行复盘总结和知识归纳。我会把每题的技术知识重点进行详细的解释说明,使对编程题有个更加简单的认知,不会被一部分不会的技术知识点难倒。

1. BC1-实践出真知

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

//引入头文件
#include 

//写入主函数
//main函数是程序的入口,代码一般都是从入口开始执行
int main()
{
	printf("Practice makes perfect!");
	return 0;
}

printf因为是库函数 - 输出操作,得引入头文件

一个工程里,main函数只能有一个;

解析:

这题没有要求输入字符,只考察了输出,所以我们只要把输出结果复制好粘贴正确就行,大部分出现的问题就是输出的结果有问题,建议细致一点比较好。

2. BC2-我是大V

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

#include 

int main()
{
    p**加粗样式**rintf("v   v\n");
    printf(" v v\n");
    printf("  v");
    return 0;
}
int main()
{
	printf("v   v\n v v\n  v");
	return 0;
}

这两个程序代码都可以输出准确的答案。

解析:

本题没有输入,只有输出,但要注意转义字符\n, 他可以实现换行操作。

转义字符的具体简单操作可以看我写的另一篇博客《C语言知识入门概述1(纯干货笔记)》

3. BC3-有容乃大

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

#include 

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

解析:

因为所有的字节都是整数类型,所以我们用%d就可以。也注意大写字母和换行\n,注意题目要求。

计算机的单位:

1 bit
1 byte = 8 bit
1 kb = 1024 byte

C语言标准规定:
sizeof(long long) >= sizeof(long) >= sizeof(int)

所以打印的结果就是:
sizeof(short) = 2 bytes;
sizeof(int) = 4 bytes;
sizeof(long) = 4 bytes;
sizeof(long long) = 8 bytes;

而sizeof 是C语言的一个单目操作符,用来计算不同类型数据所占内存空间的大小,单位是字节。

4. BC7-缩短二进制

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

#include 

int main()
{
    int x = 1234;
    printf("%#o %#X", x, x);
    //输出的结果要十六进制的字母是大写的的话需要使用大写的X。
    //反之,就是小写
    
    return 0;
}

一个数字前面放一个0就是八进制
一个数字前面放一个0X就是十六进制

解析:

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

扩展:

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

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

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

方法一

#include 

int main()
{
    int a;
    //输入
    scanf("%d", &a);//注意取地址符&
    //输出
    printf("%d%d%d%d", a%10, a%100/10, a%1000/100, a/1000);
    return 0;
}

解析:

1234 % 10 = 4;
1234 % 100 / 10 =3;
1234 % 1000 / 100 = 2;
1234 / 1000 = 1;

方法二

#include 

int main()
{
	int n = 0;
	scanf("%d", &n);
	while (n)
	{
		printf("%d", n % 10);
		n = n / 10;
	}
	return 0;
}

解析:

1234 % 10 = 4;
1234 / 10 = 123;
123 % 10 = 3;
123 / 10 = 12;
...
1 / 10 = 0;//出循环结束

6. BC28- 大小写转换

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

方法一

#include 

int main()
{
    char ch = 0;
    while (scanf("%c", &ch) != EOF)
    //!=EOF 文件还没有结束
    {
        getchar();
        //因为每次输入都要习惯性的敲一下回车键,
        //所以需要这个消除读取的换行符
        printf("%c\n", ch + 32);
    }
    return 0;
}

方法二

int main()
{
	int ch = 0;
	while((ch = getchar() != EOF)
	{
		putchar(ch + 32);
		printf("\n");
		getchar();//读取\n
	}
	return 0;
}

解析:

getchar 和 键盘 输入中间有个输入缓冲区

当你输入字符的时候

比如:
你想打印一个小写a,那么你就会输入A和回车键去运行代码,而导致的结果就是多了一个\n在缓冲区 ,然后在再一次循环中会输入那个\n, 导致最后打印会出现一个*星号。

\n在ascll里面是10,而加上32就是42的星号* 。

EOF指的是end of file (文件结束标志);按Ctrl+z;

当scanf或者getchar读取失败的时候,就会返回EOF,而EOF不等于EOF的时候,就会返回假,程序结束。

到此结束,未完待续【dog】

剩下的到时候有时间就更。

看着感觉不错的话就点点赞吧,你的支持就是我的动力,谢谢!

牛客网c语言刷题130,开篇入门刷题,战胜对编程的恐惧,适合初学者食用。_第1张图片

你可能感兴趣的:(入门,笔记,刷题,c语言)