写本博客的目的在于进行复盘总结和知识归纳。我会把每题的技术知识重点进行详细的解释说明,使对编程题有个更加简单的认知,不会被一部分不会的技术知识点难倒。
题目: 于老师经常告诉我们“学习编程最好的办法就是上机实践,因为你要对计算机下指令,想让计算机帮你干活,就得多和计算机‘交流’,实践才能出真知。”
//引入头文件
#include
//写入主函数
//main函数是程序的入口,代码一般都是从入口开始执行
int main()
{
printf("Practice makes perfect!");
return 0;
}
printf因为是库函数 - 输出操作,得引入头文件
一个工程里,main函数只能有一个;
解析:
这题没有要求输入字符,只考察了输出,所以我们只要把输出结果复制好粘贴正确就行,大部分出现的问题就是输出的结果有问题,建议细致一点比较好。
题目: 每个人都想成为大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(纯干货笔记)》
题目: 确定不同整型数据类型在内存中占多大(字节),输出不同整型数据类型在内存中占多大(字节)。
#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语言的一个单目操作符,用来计算不同类型数据所占内存空间的大小,单位是字节。
题目: 我们处理的整数通常用十进制表示,在计算机内存中是以二进制补码形式存储,但通常二进制表示的整数比较长,为了便于在程序设计过程中理解和处理数据,通常采用八进制和十六进制,缩短了二进制补码表示的整数,但保持了二进制数的表达特点。请输出十进制整数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 - 地址格式
题目: 将一个四位数,反向输出。
方法一
#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;//出循环结束
题目: 实现字母的大小写转换。多组输入输出。
方法一
#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】
剩下的到时候有时间就更。
看着感觉不错的话就点点赞吧,你的支持就是我的动力,谢谢!