1.实践出真知
题目描述:
于老师经常告诉我们"学习编程最好的办法就是上机实践,因为你要对计算机下指令,想让计算机帮你干活,就得多和计算机'交流',实践才能出真知。"
输入描述:
无
输出描述:
Practice makes perfect!
解析:
本题是一个没有输入要求的题目,只考察输出,所以只要求准确无误的输出结果就可以了。
代码:
//包含/引入头文件 #include<stdio.h> //写主函数 //main函数是程序的入口 - 代码是从main函数的第一行开始执行的 //一个工程中,仅有一个main函数 int main() { //printf - 库函数 - 输出操作 - 需要引头文件 - stdio.h //此处printf里面的字符串内容需要和题目输出描述保持一致哟 //此处的"!"不要掉啦 printf("Practice makes perfect!"); return 0; } //运行结束
2.我是大V
题目描述:
每个人都想成为大V(VIP:Very Important Person),但要一点一点积累才行,先从小v做起。要求输入由小写字母v组成的大V。
输入描述:
无
输出描述:
v v v v v
解析:
这个题目也是没有输入要求的题目,所以也相对比较简单。题目中只要能够找到输出的规律和掌握 \n 的使用就没有问题。
代码:
#include<stdio.h> int main() { //解法一 //\n - 换行 - 是一个转义字符 printf("v v\n"); printf(" v v \n"); printf(" v \n"); //解法二 printf("v v\n v v \n v "); return 0; }
3.有容乃大
题目描述:
确定不同整型数据类型在内存中占多大字节(字节),输出不同整型数据类型在内存中占多大字节。
输入描述:
无
输出描述:
不同整型数据类型在内存中占多大字节,具体格式详见输出样例。 输出样例中的?为不同整型数据类型在内存中占的字节数。 输出样例如下: 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.
解析:
本题也是没有输入操作的。关键是要掌握C语言的sizeof这个操作符。sizeof是C语言的一个单目操作符,用来计算不同类型数据所占内存空间的大小,单位是字节。
代码:
#include<stdio.h> int main() { /* 计算机的单位: bit位 1/0 - 二级制 1 byte(字节) = 8 bit C标准规定: sizeof(long long)>=sizeof(long)>=sizeof(int) */ //sizeof - 是C语言中的一个操作符 -\ 是用来计算变量或者类型所占空间的大小的 -\ 计算结果的单位是字节 printf("The size of short is %d bytes.\n", sizeof(short));//2byte printf("The size of int is %d bytes.\n", sizeof(int));//4byte printf("The size of long is %d bytes.\n", sizeof(long));//4byte(32位平台) or 8byte(64平台) printf("The size of long long is %d bytes.\n", sizeof(long long));//8byte return 0; }
4.缩短二进制
题目描述:
我们处理的整数通常用十进制表示,在计算机内存中是以二进制补码形式存储,但通常二进制制表示的整数比较长,为了便于在程序设计过程中理解和处理数据,通常采用八进制和十六进制,缩短了二级制补码表示的整数,但保持了二级制的表达特点。请输入十进制整数1234对应的八进制和十六进制。
输入描述:
无
输出描述:
十进制整数1234对应的八进制和十六进制(字母大写),用空格分开。 并且要求:在八进制前显示前导0,在十六进制数前显示前导0X。 备注:printf可以使用格式控制串"%o","%X"分别输出八进制整数和十六进制整数, 并使用修饰符"#"控制前导显示
解析:
本题需要掌握对各个数据的格式控制
%o | 八进制整数 |
%X | 十六进制整数 |
%c | 字符 |
%hd | 短整型 |
%d | 整型 |
%s | 字符串 |
%f | 单精度浮点数 |
%lf | 双精度浮点数 |
%p | 地址格式 |
代码:
#include<stdio.h> int main() { /* 八进制 - 012 = 2 * 8^0 + 1 * 8^1 = 十进制 - 10 十六进制 - 0X12 = 2 * 16^0 + 1 * 16^1 = 十进制 - 18 */ /*1234 八进制:02322 十六进制:0X4D2 */ //写法一: printf("0%o 0X%X\n", 1234, 1234); //写法二: printf("%#o %#X\n", 1234, 1234); return 0; }
5.反向输出四位数
题目描述:
将一个四位数,反向输出。
输入描述:
一行,输入一个整数n(1000<=n<=9999). 示例输入:1234
输出描述:
针对每组输入,反向输出对应的四位数。 示例输出:4321
解析:
这里需要掌握操作符%和/的基本使用和特点。其次是循环的使用。
代码:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int n = 0; //输入 scanf("%d", &n);//1234 //输出 /* 每次都要进行模10除10的动作 1234 % 10 = 4; 1234 / 10 = 123; 123 % 10 = 3; 123 / 10 = 12; 12 % 10 = 2; 12 / 10 = 1; 1 % 10 = 1; 1 / 10 = 0; */ while (n) { printf("%d", n % 10); n = n / 10; } return 0; }
6.大小写的转换
题目描述:
实现字母的大小写转换,多组输入输出
输入描述:
多组输入,每一行输入大写字母 备注:多组输入过程中要注意"回车"也是字母,所以要"吸取"(getchar())掉该字母. 示例输入: A B
输出描述:
针对每组输入输出对应的小写字母。 示例输出: a b
解析:
第一次代码输出结果:
这里是由于我们在输入A后还按入了回车,此时在输入缓冲区就有A和\n两个字符,而在ASCII码中A对应的小写字母为a,\n对应的为*。从而就会出现上面的结果,这里画一个图解释一下:
第二次代码输出结构:
第三次代码输出结果:
1.注意多组数据输入的问题。
2.getchar清理缓冲区的问题,这里需要理解输入缓冲区的问题。
代码:
#include<stdio.h> int main() { //getchar() - read a character from a stream or stdin //int* getchar(void) //函数 - getchar() - 获取一个字符,输入一个字符 //putchar() - writes a character to a stream or stdout //int putchar(int c); //函数 - putchar() - 输出一个字符,打印一个字符 //错误写法 /* int ch = 0; while (ch = getchar()) { putchar(ch + 32); printf("\n"); } */ //修改 - 算法复杂度过大 - 程序不会停止 //int ch = 0; //while (ch = getchar()) //{ // putchar(ch + 32); // printf("\n"); // getchar();//读取\n //} //修改 int ch = 0; //EOF -- end of file -- 文件结束标志 -- 通常是为文件的末尾的 --\ ctrl+z 该程序就会停止 while (ch = getchar() != EOF) { putchar(ch + 32); printf("\n"); getchar();//读取\n //还可以写成以下方式 //printf("%c\n", ch + 32); //getchar();//读取\n } return 0; }