文章目录
这题按照图片上的内容输出结果就好,注意空格与换行,代码如下:
前言
对于学习编程的新手来说,刷题是必不可少的,下面是来自牛客网的一些对于新手很友好的编程题,题目难度是层层递进的,我把链接给大家放在了这里,大家也可以去看看,练习练习,消除对编程题的恐惧,让它变的简单,注意,顺序是打乱的,望理解!
提示:以下是本篇文章正文内容,下面案例可供参考
BC1 实践出真知
描述
于老师经常告诉我们“学习编程最好的办法就是上机实践,因为你要对计算机下指令,想让计算机帮你干活,就得多和计算机‘交流’,实践才能出真知。”
输入描述:
本题没有输入
输出描述:
Practice makes perfect!
解析:
看题嘛 并没有输入要求,只需要准确输出结果就OK,代码如下:
#include <stdio.h> int main() { printf("Practice makes perfect!"); return 0; }
BC2 我是大V
描述
每个人都想成为大V (VIP:Very Important Person),但要一点一点积累才行,先从小v做起。要求输出由小写字母v组成的大V。
输入描述:
无
输出描述:
v v
v v
v
解析:
这道题没有输入要求,所以按照输出的,按照要求输出就好了,需要注意空格的间隔和一个\n换行转义字符,代码如下:
#include<stdio.h> int main() { printf("v v\n"); printf(" v v\n"); printf(" v"); return 0; }
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.
解析:
这道题是要输出不同数据类型的大小,而我们知道sizeof 是C语言的一个单目操作符,用来计算不同类型数据所占内存空间的大小,单位是字节。代码如下:
#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; }
BC6 小飞机
描述
KiKi学会了printf在屏幕输出信息,他想输出一架小飞机。请帮他编写程序输出这架小飞机。
输入描述:
无
输出描述:
解析:
这题按照图片上的内容输出结果就好,注意空格与换行,代码如下:
#include<stdio.h> int main() { printf(" ** \n"); printf(" ** \n"); printf("************\n"); printf("************\n"); printf(" * * \n"); printf(" * * \n"); return 0; }
BC7 缩短二进制
描述
我们处理的整数通常用十进制表示,在计算机内存中是以二进制补码形式存储,但通常二进制表示的整数比较长,为了便于在程序设计过程中理解和处理数据,通常采用八进制和十六进制,缩短了二进制补码表示的整数,但保持了二进制数的表达特点。请输出十进制整数1234对应的八进制和十六进制。
输入描述:
无
输出描述:
十进制整数1234对应的八进制和十六进制(字母大写),用空格分开,并且要求,在八进制前显示前导0,在十六进制数前显示前导0X
解析:
这道题要用八进制和十六进制输出十进制的1234,八进制是用o来输出,十六进制用X来输出,因为题目要求大写,前导可以使用0来显示,也可以用#来显示,大家可以扩展一下各个数据的格式控制,下面代码说明:
#include<stdio.h> int main() { //printf("%#o %#X",1234,1234); printf("0%o 0X%X",1234,1234); return 0; }
BC19 反向输出一个四位数
描述
将一个四位数,反向输出。
输入描述:
一行,输入一个整数n(1000 <= n <= 9999)。
输出描述:
针对每组输入,反向输出对应四位数。
示例1
输入:1234 输出:4321
解析:
这道题是输入一个四位数,反向输出四位数,仔细看,有了输入,而输入要输入的是地址,所以要知道,第一个是scanf输入,第二个就是&符号,接下来有了输入,然后再来分析一下如何来实现反向输出,比如1234这个四位数,反向先拿到4这个数字 那么1234 对10取模,然后就是4 然后1234 除以10 就是 123 然后123对10取模 就是 3 除以10 就是 12 12对10取模就是2 然后除以10 就是 1 1取模就是 1 然后除以10 就是0 这个是一个循环 用while来实现 而当n等于0的时候 循环停止,就全部输出了,下面代码说明:
#include<stdio.h> int main() { int n = 0; //输入 scanf("%d",&n); //输出 while(n) { printf("%d",n%10); n = n/10; } return 0; }
BC28 大小写转换
描述
实现字母的大小写转换。多组输入输出。
输入描述:
多组输入,每一行输入大写字母。
输出描述:
针对每组输入输出对应的小写字母。
示例1
输入: 输出:
A a
B b
解析:
这道题看起来有点麻烦,是让大写字母转换成小写字母,而且是多组输入输出,那么首先创建一个变量ch 如果是多组的话,那么就用到循环了 那么大家就要认识一个函数 getchar 是用来专门接收字符的 还有个知识点需要知道 ASCII表 中 因为在键盘上的字符 而创建的表,下面表中可以看到 大写A 与小写a十进制数字差距32 那么是不是可以理解为 加上32可以转换小写呢 答案就是这样的 ,那么接下来整理思路:
1,创建变量ch
2,写出循环,注意,需要有结束的条件,而EOF 是 end of file 是结束标志
3,打印,注意的一点是,需要换行,按照题目中的要求来,最重要的一点是 记住回车也是字符,需要再次引用一个getchar来接收掉回车 代码如下:
#include<stdio.h> int main() { char ch = 0; while((ch = getchar()) != EOF) { printf("%c\n",ch+32); getchar(); } return 0; }
ASCII表:出处网络
BC8 十六进制转十进制
描述
BoBo写了一个十六进制整数ABCDEF,他问KiKi对应的十进制整数是多少。
输入描述:
无
输出描述:
十六进制整数ABCDEF对应的十进制整数,所占域宽为15
解析:
十六进制是0x开头,md是控制整数域宽的,15个就是15d,代码如下:
#include<stdio.h> int main() { printf("%15d", 0xABCDEF); return 0; }
BC9 printf的返回值
描述
KiKi写了一个输出“Hello world!”的程序,BoBo老师告诉他printf函数有返回值,你能帮他写个程序输出printf(“Hello world!”)的返回值吗?
输入描述:
无
输出描述:
包括两行:
第一行为“Hello world!”
第二行为printf(“Hello world!”)调用后的返回值。
解析:
这道题考察了printf的返回值 ,printf的返回值是字符个数,注意,不能在第一行后面加上一个\n,因为这个也属于字符,所以代码如下:三种方法
#include<stdio.h> int main() { //1 int ret = printf("Hello world!"); printf("\n"); printf("%d",ret); return 0; } int main() { //2 int ret = printf("Hello world!"); printf("\n%d",ret); return 0; } int main() { //3 printf("\n%d",printf("Hello world!")); return 0; }
BC11 学生基本信息输入输出
描述
依次输入一个学生的学号,以及3科(C语言,数学,英语)成绩,在屏幕上输出该学生的学号,3科成绩(注:输出成绩时需进行四舍五入且保留2位小数)。
数据范围:学号满足 1 \le n \le 20000000 \1≤n≤20000000 ,各科成绩使用百分制,且不可能出现负数
输入描述:
学号以及3科成绩,学号和成绩之间用英文分号隔开,成绩之间用英文逗号隔开。
输出描述:
学号,3科成绩,输出格式详见输出样例。
示例1
输入:
17140216;80.845,90.55,100.00
输出:
The each subject score of No. 17140216 is 80.85, 90.55, 100.00.
解析:
有输入与输出,创建变量,分别问学号和成绩,注意的是,double与float的精度问题,这道题要四舍五入,而double的精度更高,所以这里采用float,输入,注意输入的是地址,要加上&,输出的时候注意按照格式来输出,控制小数点后几位用.几来控制,如.2f是控制小数点2位,所以代码如下:
#include<stdio.h> int main() { int id = 0; float c = 0.0; float math = 0.0; float english = 0.0; scanf("%d;%f,%f,%f",&id,&c,&math,&english); printf("The each subject score of No. %d is %.2f, %.2f, %.2f.",id,c,math,english); return 0; }
BC35 判断字母
描述
从键盘任意输入一个字符,编程判断是否是字母(包括大小写)。
输入描述:
输入包括一个字符。
输出描述:
输出该字符是字母(YES)或不是(NO)。
示例
输入:
H 9
输出:
YES NO
解析:
判断是否是字母,需要getchar接受字符,因为是多组输入,所以用while循环,设定结束条件,要判断就需要用到if 语句 是字母的话就输出YES 不是就输出NO,那么字母包括大写小写,这个时候需要认识 && 与 || 这两个符号 分别是并且和或者的意思 小写字母要大于a并且小于z 或者大写字母要大于A 并且小于 Z ,注意换行,并且换行也属于字符,要getchar处理掉换行
那么有没有一种库函数专门判断是不是字母呢?答案是有的 isalpha()是C语言中专门判断是不是字母的,如果是字母,则返回非0,如果不是字母则返回0
所以代码如下:两种方法
#include<stdio.h> #include<ctype.h> int main() {//1 int ch = 0; //多组输入 while((ch=getchar()) != EOF) { //判断条件并输出 if((ch >='a' && ch <='z') || (ch >= 'A' && ch <='Z')) { printf("YES\n"); } else { printf("NO\n"); } getchar();//处理\n } return 0; } int main() { //2 int ch = 0; //多组输入 while((ch=getchar()) != EOF) { //判断条件并输出 if(isalpha(ch)) { printf("YES\n"); } else { printf("NO\n"); } getchar();//处理\n } return 0; }
BC12 字符圣诞树
描述
输入一个字符,用它构造一个边长为5的三角形圣诞树。
数据范围:保证输入的字符是一个 char 类型的值
输入描述:
输入只有一行,一个字符。
输出描述:
该字符构成的三角形圣诞树。
示例1
输入:
1
输出:
1
1 1
1 1 1
1 1 1 1
1 1 1 1 1
解析:
构造一个五行的字符三角形圣诞树,而且字符是char类型,用for循环来实现
1,输出一个字符,getchar接收字符
2,要打印三角形,因为是边长为5,所以定义一个i 小于5,然后能够自增
3,注意看,打印字符三角形,不仅要打印字符,还需要打印空格,这时候就要分开来打印
4,先打印一行的空格,定义j 从0开始,小于4-i个,因为第一个是4个 ,当i是0的时候 4-0=0,当i自增 =1 4-1=3 ,刚好控制空格的范围
5,接下来打印字符,从0开始,小于等于i ,当i=0,j=0,打印一个字符
6,注意打印完一行换行
那么代码如下:
#include<stdio.h> int main() { //输出一个字符 char ch = 0; ch = getchar(); int i = 0; //构造边长为5的三角形圣诞树 五行 for(i=0;i<5;i++) { int j = 0; //分别要打印空格和数字 //空格 for(j=0;j<4-i;j++) //4-i个控制每行输出几个空格 { printf(" "); } //字符 for(j=0;j<=i;j++) { printf("%c ",ch); } printf("\n"); //打印一行的然后换行 } return 0; }
总结
以上是牛客网上的10道题,链接都在上面,还有详解,有写错的,或者哪里不明白的,可以在评论区问我,我来解答,这个是新手练题的,大佬就不用看啦,毕竟本人也是个二吊子,大佬可以指点一二,凡人在这里感谢大家的观看,希望三连,凡人谢谢大家!