目录

刷题收获:

在线OJ

BC1-实践出真知

BC2-我是大V

BC3-有容乃大

BC6-小飞机

BC7-缩短2进制

BC8-十六进制转十进制

BC9-printf函数的返回值

BC10-成绩的输入输出

BC11-学生基本信息输入输出

BC12-字符金字塔

BC13-ASCII码

BC14-出生日期输入输出

BC15-按照格式输入并交换输出

BC16-字符转ASCII码

BC17-计算机表达式的值

BC18-计算带余除法

BC19-计算带余除法

BC20-kiki算数

BC21-浮点数的个位数字

BC22-你能活多少秒

BC23-时间转换

BC24-总成绩和平均分的计算

BC25-计算体重指数

BC26- 计算三角形的周长和面积

BC27-计算球体的体积

BC28-大小写转换

BC29-2的n次方计算

BC30-kiki和酸奶

BC31-发布会信息

BC32-输出学生信息

BC33-计算平均成绩

BC34-进制A+B

BC35-判断字母

BC36-健康评估

BC37-网购

BC38-变种水仙花数

BC39-争夺前五名

BC40-竞选社长

BC41-你是天才吗?

BC42-完美成绩

BC43-及格分数

BC44-判断整数的奇偶性

BC45-最高分数

BC46-判断元音还是辅音

BC47-判断是不是字母

BC48-字母的大小写转换

BC49-判断两个数的大小关系

BC50-计算单位阶跃函数

BC51-三角形判断

BC52-衡量人体胖瘦程度

BC53-计算一元二次方程

BC54-获得月份天数

BC55-简单计算器

BC56-线段图案

BC57-正方形图案

BC58-直角三角形图案

BC59-翻转直角三角形图案

BC60-带空格的直角三角形

BC61-金字塔图案

BC62  翻转全字塔图案

BC63 菱形图案

BC64 K形图案

BC65-BC138:由于有练习C++的需要,所以剩下的题将会提供C语言以及C++的两个参考代码

BC65-BC138:https://blog.csdn.net/aiqq136/article/details/115298433

BC139 KiKi定义电子日历类

BC140 KiKi设计类继承


刷题收获:

a. 学习和巩固C语言,加深对C语言的理解和使用,战胜对代码的恐惧。
b. 熟练掌握在线OJ刷题,熟悉互联网公司笔试的方式。

在线OJ

2.1 什么是在线OJ
在线判题系统(英语:Online Judge,缩写OJ)是一种在编程竞赛中用来测试参赛程序的在线系统,也可以用于平时练习。

2.2 为什么训练在线OJ?
a. 有一些比赛,比如:NOI、NOIP、ACM之类的编程竞赛都是采用在线OJ的方式进行。
b. 现在IT大学生就业找工作的笔试环节也采用在线OJ的方式进行。(笔试OJ化,这是未来的趋势)。

以下公司面试都采用在线OJ


注:
全国青少年信息学奥林匹克竞赛(NOI)
全国青少年信息学奥林匹克联赛(NOIP)
国际大学生程序设计竞赛(ACM)

BC1-实践出真知

https://www.nowcoder.com/practice/9273504dbe6f4c5a92b75854faca5f45?tpId=107&&tqId=33282&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

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

输入描述:

输出描述:

Practice makes perfect!
参考代码:

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

解析:

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

BC2-我是大V

https://www.nowcoder.com/practice/5c329570ba034871a96299df21e80e51?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

每个人都想成为大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\n");return 0;
}
#include <stdio.h>
int main()
{printf("v   v\n v v\n  v\n");return 0;
}

答案解析:

这个题也是没有输入要求的题目,所以相对比较简单。
题目中只要能够找到输出的规律和掌握 \n 的使用就没问题。
这里简单提及:转义字符,可以做一个拓展。

BC3-有容乃大

https://www.nowcoder.com/practice/4712159bbc15417086d40d6c6ff94fee?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

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

输入描述:

输出描述:
不同整型数据类型在内存中占多大(字节),具体格式详见输出样例,输出样例中的?为不同整型数据类型在
内存中占的字节数。输出样例如下:
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.",sizeof(long long));return 0;
}

答案解析:

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

BC6-小飞机

https://www.nowcoder.com/practice/5cd9598f28f74521805d2069ce4a108a?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi学会了printf在屏幕输出信息,他想输出一架小飞机。请帮他编写程序输出这架小飞机。

输入描述:

输出描述:

参考代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{printf("     **\n");printf("     **\n");printf("************\n");printf("************\n");printf("    *  *\n");printf("    *  *\n");return 0;
}

答案解析:

严格按照合适去打印就行了

BC7-缩短2进制

https://www.nowcoder.com/practice/4ffcc9f206b949ddb057ee0099b34d51?tpId=107&&tqId=33288&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

题目描述

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

输入描述:

输出描述:

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

备注:

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

参考代码:

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

答案解析:

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

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

格式参考:https://zh.cppreference.com/w/c/io/fscanf
注意:注意还是严格按照题目要求的格式输出,才能保证正确性。

BC8-十六进制转十进制

https://www.nowcoder.com/practice/33e148570d5c4e728116e2f861638c9c?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking
题目描述
BoBo写了一个十六进制整数ABCDEF,他问KiKi对应的十进制整数是多少。

输入描述:

输出描述:

十六进制整数ABCDEF对应的十进制整数,所占域宽为15。

备注:

printf可以使用使用格式控制串“%md”输出域宽为m的十进制整数。

参考代码:

#include <stdio.h>
int main()
{printf("%15d\n", 0XABCDEF);return 0;
}

答案解析:

用于存放输出数据的宽度称为“域宽”。如果域宽小于被打印数据的宽度,数据通常会在域内右对齐。如果输出值的宽度大于域宽时,域宽是自动增长的

本题考查的就是%d的格式控制域宽指定。

BC9-printf函数的返回值

https://www.nowcoder.com/practice/a19ef1d8e55c4cc786f11cbf6b2fde61?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi写了一个输出“Hello world!”的程序,BoBo老师告诉他printf函数有返回值,你能帮他写个程序输出
printf(“Hello world!”)的返回值吗?

输入描述:

输出描述:

包括两行:
第一行为“Hello world!”
第二行为printf(“Hello world!”)调用后的返回值。

参考代码:

#include <stdio.h>
int main()
{int ret = printf("Hello world!");printf("\n%d\n",ret);return 0;
}
#include <stdio.h>
int main()
{printf("\n%d\n", printf("Hello world!"));return 0;
}

答案解析:

printf()打印的是输出字符的个数,错误返回负数

本题的重点是要严格按照题目要求的格式,输出2行,先打印字符串,再打印字符串长度。

这里就要控制好格式,写法比较多。

BC10-成绩的输入输出

https://www.nowcoder.com/practice/eb49750ef0de47168c21761de086d97c?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

输入3科成绩,然后把三科成绩输出,成绩为整数形式。

输入描述:

一行,3科成绩,用空格分隔,范围(0~100)。
输出描述:

一行,把3科成绩显示出来,输出格式详见输出样例。

示例1
输入

60 80 90

输出

score1=60,score2=80,score3=90

参考答案:

#include<stdio.h>
int main()
{int score1,score2,score3;scanf("%d %d %d",&score1,&score2,&score3);printf("score1=%d,score2=%d,score3=%d",score1,score2,score3);return 0;
}

答案解析:

题目简单,按照格式输入输出就行了。

BC11-学生基本信息输入输出

https://www.nowcoder.com/practice/58b6a69b4bf943b49d2cd3c15770b9fd?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

依次输入一个学生的学号,以及3科(C语言,数学,英语)成绩,在屏幕上输出该学生的学号,3科成绩。

输入描述:

学号以及3科成绩,学号和成绩之间用英文分号隔开,成绩之间用英文逗号隔开。

输出描述:

学号,3科成绩,输出格式详见输出样例。

示例1
输入

17140216;80.845,90.55,100.00

输出
The each subject score of  No. 17140216 is 80.85, 90.55, 100.00.
参考代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{int num = 0;float c_score = 0.0;float math_score = 0.0;float eng_score = 0.0;scanf("%d;%f,%f,%f", &num, &c_score, &math_score, &eng_score);//The each subject score of  No. 17140216 is 80.85, 90.55, 100.00.printf("The each subject score of  No. %d is %.2f, %.2f, %.2f.\n", num, c_score, math_score, eng_score);return 0;
}

答案解析:

这个题的最大坑,也是格式的指定,还有空格的控制,必须和题目要求的输出结果一致,比如:of 的后边有2个空格。
浮点数打印要指定小数点后边的位数为2位。

BC12-字符金字塔

https://www.nowcoder.com/practice/0fae60c3b5c64699b7c0f031c2187dde?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

输入一个字符,用它构造一个三角形金字塔。

输入描述:

输入只有一行,一个字符。

输出描述:

该字符构成的三角形金字塔。

示例1
输入

1

输出

1
   1 1
  1 1 1
 1 1 1 1
1 1 1 1 1

参考代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{char num = 0;scanf("%c",&num);printf("    %c\n",num);printf("   %c %c\n", num, num);printf("  %c %c %c\n", num, num, num);printf(" %c %c %c %c\n", num, num, num, num);printf("%c %c %c %c %c\n", num, num, num, num, num);return 0;
}

答案解析:

每一行的输出是前边空格,后边1
本题的难点就是精确的控制空格的个数和1的个数。

BC13-ASCII码

https://www.nowcoder.com/practice/4280d330fe314e8f98cd5c593e3e9190?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述
BoBo教KiKi字符常量或字符变量表示的字符在内存中以ASCII码形式存储。BoBo出了一个问题给KiKi,
转换以下ASCII码为对应字符并输出他们。
73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33

输入描述:

输出描述:

转换输出题目中给出的所有ASCII到对应的字符。

参考代码:

#include <stdio.h>
int main()
{char arr[] = { 73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33 };int i = 0;//计算数组的元素个数int sz = sizeof(arr) / sizeof(arr[0]);//循环遍历输出每一个元素for (i = 0; i < sz; i++){//%c 控制打印字符printf("%c", arr[i]);//每个字符不要隔开}return 0;
}

答案解析:
这里得了解清楚ASCII编码,如果采用ASCII编码,每个字符都有一个对应的数字,

这个数字被称为这个字符的ASCII码,如果把这个数字按照%c打印,打印的就是字符。

BC14-出生日期输入输出

https://www.nowcoder.com/practice/4a4a9dd1edb6453ba4a0432319200743?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

输入一个人的出生日期(包括年月日),将该生日中的年、月、日分别输出。

输入描述:

输入只有一行,出生日期,包括年月日,年月日之间的数字没有分隔符。

输出描述:

三行,第一行为出生年份,第二行为出生月份,第三行为出生日期。输出时如果月份或天数为1位数,需要在1
位数前面补0。

示例1
输入

20130225

输出

year=2013
month=02
date=25

备注:

通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;
通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。

参考代码:

#include <stdio.h>
int main()
{int year=0;int month = 0;int date = 0;scanf("%4d%2d%2d", &year, &month, &date);//%4d就是读取4位整数printf("year=%d\n", year);printf("month=%02d\n", month);//输出不够2位时,左边拿0填充printf("date=%02d\n", date);return 0;
}

答案解析:

本地的难点在于如何按照指定域宽读取数据,如何按照指定格式打印数据。

BC15-按照格式输入并交换输出

https://www.nowcoder.com/practice/95eb723a3e854376a7eb6d116cc7d875?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

输入两个整数,范围-2^31~2^31-1,交换两个数并输出。

输入描述:

输入只有一行,按照格式输入两个整数,范围,中间用“,”分隔。

输出描述:

把两个整数按格式输出,中间用“,”分隔。

示例1
输入

a=1,b=2

输出

a=2,b=1

备注:

如果格式控制串中有非格式字符则输入时也要输入该非格式字符。

参考答案:

#include <stdio.h>int main()
{int a = 0;int b = 0;scanf("a=%d,b=%d", &a, &b);int c = a;a = b;b = c;printf("a=%d,b=%d\n",a, b);
}

答案解析:

输入和输出格式的控制,如果格式控制串中有非格式字符则输入时也要输入该非格式字符。

BC16-字符转ASCII码

https://www.nowcoder.com/practice/93f4d05a02d9468db424ed4316bfc8fd?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

BoBo教KiKi字符常量或字符变量表示的字符在内存中以ASCII码形式存储。BoBo出了一个问题给KiKi,
输入一个字符,输出该字符相应的ASCII码。

输入描述:

一行,一个字符。

输出描述:

一行,输出输入字符对应的ASCII码。

示例1
输入

c

输出

99

参考代码:

#include <stdio.h>
int main()
{char ch = 0;scanf("%c", &ch);printf("%d\n",ch);return 0;
}

答案解析:

直接按照%d打印,就是字符对应的ascii码值

BC17-计算机表达式的值

https://www.nowcoder.com/practice/58457d27f91043edaf95b6591bb64fd6?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

请计算表达式“(-8+22)×a-10+c÷2”,其中,a = 40,c = 212。

输入描述:

无。

输出描述:

(-8+22)×a-10+c÷2计算之后的结果,为一个整数。

参考代码:

#include <stdio.h>
int main()
{int a = 40;int c = 212;int ret = (-8+22)*a-10+c/2;printf("%d\n", ret);return 0;
}

答案解析:

按照操作符的优先级直接设计表达式,计算输出就行。

BC18-计算带余除法

https://www.nowcoder.com/practice/34d3911bf2fd48a285f6396e886a1259?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

给定两个整数a和b (-10,000 < a,b < 10,000),计算a除以b的整数商和余数。

输入描述:

一行,包括两个整数a和b,依次为被除数和除数(不为零),中间用空格隔开。

输出描述:

一行,包含两个整数,依次为整数商和余数,中间用一个空格隔开。

示例1
输入

15 2

输出

7 1

参考代码:

#include <stdio.h>
int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);int m = a/b;int n = a%b;printf("%d %d\n", m, n);return 0;
}

答案解析:

掌握 % 和 / 两个操作符的使用,按照格式输出就行。

BC19-计算带余除法

https://www.nowcoder.com/practice/1f7c1d67446e4361bf4af67c08e0b8b0?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking&tab=answerKey

题目描述

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

输入描述:

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

输出描述:

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

示例1

输入

1234

输出

4321

C参考代码:

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

C++参考代码:

#include<iostream>
using namespace std;
int main()
{int input=0;cin>>input;while(input){cout<<input%10;input/=10;}return 0;
}

答案解析:

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

BC20-kiki算数

https://www.nowcoder.com/practice/bcaf710fb58a44e1b678a890e6e90d7c?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述
问题:KiKi今年5岁了,已经能够认识100以内的非负整数,并且并且能够进行 100 以内的非负整数的加法
计算。不过,BoBo老师发现KiKi在进行大于等于100的正整数的计算时,规则如下:

1. 只保留该数的最后两位,例如:对KiKi来说1234等价于34;

2. 如果计算结果大于等于 100, 那么KIKI也仅保留计算结果的最后两位,如果此两位中十位为0,则只保
留个位。

例如:45+80 = 25

要求给定非负整数 a和 b,模拟KiKi的运算规则计算出 a+b 的值。

输入描述:

一行,输入两个非负整数a和b,用一个空格分隔。(0 <= a,b<= 2^31-1)。

输出描述:

针对每组输入,输出按照KiKi的运算规则计算出 a+b 的值。

示例1
输入

45 80

输出

25

参考代码:

//代码1

#include <stdio.h>
int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);int c = (a%100+b%100)%100;printf("%d\n", c);return 0;
}

//代码2

#include <stdio.h>
int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);int c = (a+b)%100;printf("%d\n", c);return 0;
}

BC21-浮点数的个位数字

https://www.nowcoder.com/practice/ffa94d27c6534396aef38813535c279f?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking&tab=answerKey

题目描述

给定一个浮点数,要求得到该浮点数的个位数。

输入描述:

一行,包括一个浮点数。

输出描述:

一行,包含一个整数,为输入浮点数对应的个位数。

示例1

输入

13.141

输出

3

参考代码:

#include<stdio.h>
int main()
{double num=0;scanf("%lf",&num);printf("%d",(int)num%10);return 0;
}

C++参考代码:

#include<iostream>
using namespace std;
int main()
{double num=0;cin>>num;cout<<(int)num%10<<endl;return 0;
}

解释

浮点型转化为整形会舍去小数部分,%10可以得到个位

BC22-你能活多少秒

https://www.nowcoder.com/practice/e1d1bd99fee34b66ae3c777b74d555c8?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking&tab=answerKey

题目描述

问题:一年约有3.156×s,要求输入您的年龄,显示该年龄合多少秒。

输入描述:

一行,包括一个整数age(0<age<=200)。

输出描述:

一行,包含一个整数,输出年龄对应的秒数。

示例1

输入

20

输出

631200000

参考代码:

#include<stdio.h>
int main()
{long year;scanf("%ld",&year);printf("%ld",year*31560000);return 0;
}

C++参考代码:

#include<iostream>
using namespace std;
int main()
{long year;cin>>year;cout<<year*31560000;return 0;
}

BC23-时间转换

https://www.nowcoder.com/practice/c4ae7bcac7f9491b8be82ee516a94899?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

给定秒数seconds (0< seconds < 100,000,000),把秒转化成小时、分钟和秒。

输入描述:

一行,包括一个整数,即给定的秒数。

输出描述:

一行,包含三个整数,依次为输入整数对应的小时数、分钟数和秒数(可能为零),中间用一个空格隔开。

示例1
输入

3661

输出

1 1 1

参考答案:

#include <stdio.h>
int main()
{int sec = 0;scanf("%d", &sec);int h = sec/60/60;int m = sec/60%60;int s = sec%60;printf("%d %d %d\n", h,m,s);return 0;
}
#include<stdio.h>
int main()
{int tmp=0;scanf("%d",&tmp);int hour=tmp/3600;int min=(tmp/60)-(hour*60);int sec=tmp-(hour*3600)-(min*60);printf("%d %d %d",hour,min,sec);return 0;
}

答案解析:

计算好对应的数字,按照格式打印就行。

BC24-总成绩和平均分的计算

https://www.nowcoder.com/practice/0fa5132c156b434da4347ad051c4be22?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

依次输入一个学生的3科成绩,在屏幕上输出该学生的总成绩以及平均成绩。

输入描述:

一行,3科成绩,成绩之间用一个空格隔开。

输出描述:

一行,总成绩和平均成绩(小数点后保留两位),用一个空格隔开。

示例1
输入

79.5 80.0 98.0

输出

257.50 85.83

参考答案:

#include <stdio.h>
int main()
{int i = 0;float sum = 0.0;float avg = 0.0;float score = 0.0;for(i=0; i<3; i++)
{scanf("%f", &score);sum += score;
}printf("%.2f %.2f\n", sum, sum/3.0);return 0;
}
#include<stdio.h>
int main()
{float a,b,c,sum,ave;scanf("%f %f %f",&a,&b,&c);sum=a+b+c;ave=sum/3.0;printf("%.2f %.2f",sum,ave);return 0;
}

答案解析:

1. 本题在接收数据的同时就可以计算分数的总和,不一定非要等数据全部接收完毕。
2. 按照格式打印就行。

BC25-计算体重指数

https://www.nowcoder.com/practice/422f6341cf1b4212a7f8c703df111389?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

问题:计算BMI指数(身体质量指数)。BMI指数(即身体质量指数,简称体质指数又称体重,英文为
Body Mass Index,简称BMI),是用体重公斤数除以身高米数平方得出的数字,是目前国际上常用的
衡量人体胖瘦程度以及是否健康的一个标准。主要用于统计用途,当我们需要比较及分析一个人的体重
对于不同高度的人所带来的健康影响时,BMI值是一个中立而可靠的指标。

输入描述:

一行,两个整数,分别表示体重(公斤),身高(厘米),中间用一个空格分隔。

输出描述:

一行,BMI指数(保留两位小数)。

示例1
输入

70 170

输出

24.22

参考代码:

#include <stdio.h>
int main()
{int weight = 0;int height = 0;double bmi = 0.0;scanf("%d%d", &weight, &height);bmi = weight/((double)height*height/10000);printf("%.2lf\n", bmi);return 0;
}
#include<stdio.h>
int main()
{int kilo=0;int meter=0;float ret=0.0;scanf("%d %d",&kilo,&meter);ret=kilo/((meter/100.0)*(meter/100.0));printf("%.2f",ret);return 0;
}

答案解析:

要得到浮点数,要进行浮点数除法,这里就得保证 / 两端的操作数至少有一个数是浮点数。

BC26- 计算三角形的周长和面积

https://www.nowcoder.com/practice/109a44d649a142d483314e8a57e2c710?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

根据给出的三角形3条边a, b, c(0 < a, b, c < 100,000),计算三角形的周长和面积。

输入描述:

一行,三角形3条边(能构成三角形),中间用一个空格隔开。

输出描述:

一行,三角形周长和面积(保留两位小数),中间用一个空格隔开,输出具体格式详见输出样例。

示例1
输入

3 3 3

输出

circumference=9.00 area=3.90

参考代码:

#include <stdio.h>
#include <math.h>int main()
{int a = 0;int b = 0;int c = 0;scanf("%d %d %d", &a, &b, &c);float len = a+b+c;float p = (a+b+c)/2.0;float area = sqrt(p*(p-a)*(p-b)*(p-c));printf("circumference=%.2f area=%.2f\n", len, area);return 0;
}
#include<stdio.h>
#include<math.h>
int main()
{float a=0.0;float b=0.0;float c=0.0;float cir=0.0;float area=0.0;float p=0.0;scanf("%f %f %f",&a,&b,&c);cir=a+b+c;printf("circumference=%.2f ",cir);//海伦公式p=cir/2.0;area=sqrt(p*(p-a)*(p-b)*(p-c));printf("area=%.2f",area);return 0;
}

答案解析:
如果仅仅有3个边要计算周长简单,计算面积,这时得借助:海伦公式
如果不知道海伦公式也没关系,查一下就知道了。

BC27-计算球体的体积

https://www.nowcoder.com/practice/0f5d9bfcd63b47fda2052a583b1fbd1f?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述
给定一个球体的半径,计算其体积。其中球体体积公式为 V = 4/3*πr^3,其中 π= 3.1415926。

输入描述:

一行,用浮点数表示的球体的半径。

输出描述:

一行,球体的体积,小数点后保留3位。

示例1
输入

3.0

输出

113.097

参考代码:

#include <stdio.h>
int main()
{double pi = 3.1415926;double r = 0.0;scanf("%lf", &r);double v = (4.0/3)*pi*(r*r*r);printf("%.3f\n", v);return 0;
}
#include<stdio.h>
#define PI 3.1415926
int main()
{float r=0.0;scanf("%f",&r);double V=(4/3.0)*PI*r*r*r;printf("%.3f",V);return 0;
}

答案解析:

注意,输入输出,照着公式写代码就行。
这个题目,如果使用 float 来求解,答案的精度是不够的,所以试错后,使用double类型合适。

BC28-大小写转换

https://www.nowcoder.com/practice/4e089ee8966a4ed4b306f64e68d45264?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

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

输入描述:

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

输出描述:

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

示例1
输入

A
B

输出

a
b

备注:

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

参考答案:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{int ch = 0;//循环数据输入//EOF 是 end of file 是 -1while ((ch = getchar()) != EOF){printf("%c\n", (ch + 32));//输入缓冲区getchar();//处理多余的\n字符}return 0;
}

答案解析:

1. 多组数据输入的问题。
2. getchar 清理缓冲区的问题,这里得理解 输入缓冲区 的问题。

BC29-2的n次方计算

https://www.nowcoder.com/practice/35a1e8b18658411388bc1672439de1d9?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算。

输入描述:

多组输入,每一行输入整数n(0 <= n < 31)。

输出描述:

针对每组输入输出对应的2的n次方的结果。

示例1
输入

2
10

输出

4
1024

参考代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){printf("%d\n", 1 << n);}return 0;
}

答案解析:

本题为多组输入,要使用循环输入
注意<<(左移操作符的使用,左移一位有乘2的效果)

BC30-kiki和酸奶

https://www.nowcoder.com/practice/c7721f3a1b1a47a783974453e82cadbb?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述
BoBo买了一箱酸奶,里面有n盒未打开的酸奶,KiKi喜欢喝酸奶,第一时间发现了酸奶。KiKi每h分钟能
喝光一盒酸奶,并且KiKi在喝光一盒酸奶之前不会喝另一个,那么经过m分钟后还有多少盒未打开的酸
奶?

输入描述:

多组输入,每组输入仅一行,包括n,h和m(均为整数)。输入数据保证m <= n * h。

输出描述:

针对每组输入,输出也仅一行,剩下的未打开的酸奶盒数。

示例1
输入

8 5 16

输出

4

参考答案:

#include <stdio.h>
int main()
{int n = 0;int h = 0;int m = 0;while(scanf("%d %d %d", &n, &h, &m) != EOF){if(m%h>0)printf("%d\n", n-m/h-1);elseprintf("%d\n", n-m/h);}return 0;
}

答案解析:

1. 注意多组输入
2. 如果h分钟喝一瓶酸奶,那么m分钟喝汽水的瓶数就是h/m瓶,但是如果m%h有余数,就说明又打
开了一瓶,只是没来得及喝完,那么位打开的就少一瓶。

BC31-发布会信息

https://www.nowcoder.com/practice/20e59d0f388448c68f581b9d3ca66049?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

你的手机丢了,在屏幕上输出信息告诉大家。

输入描述:

输出描述:

I lost my cellphone!

参考代码:

#include <stdio.h>
int main()
{printf("I lost my cellphone!\n");return 0;
}

答案解析:

本题是个入门题目,直接按照要求输出结果就是了。

BC32-输出学生信息

https://www.nowcoder.com/practice/8e94458049eb4e838f711bbd1be0045e?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

学生信息管理系统是学校教学管理的重要工具,现有一名学生基本信息如下:姓名-Jack,年龄-18,性别-Man,请按照输出样例的格式输出该学生的信息。

输入描述:

输出描述:

输出分为三行,分别为标题行,分隔行,信息行。
第一行,标题行,每个标题之间间隔4个空格。
第二行,分隔行,一共21个减号"-"。
第三行,信息行,每列输出信息和标题首字母对齐。输出样例如下:

Name    Age    Gender
---------------------
Jack    18     man

参考答案:

#include<stdio.h>
int main()
{printf("Name    Age    Gender\n");printf("---------------------\n");printf("Jack    18     man\n");return 0;
}

答案解析:

这是一个简单题,按照题目要求的格式输出就行了。

BC33-计算平均成绩

https://www.nowcoder.com/practice/30a28eb88c3f4e87be1a5b397ddd6fe2?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

从键盘输入5个学生的成绩(整数),求他们的平均成绩(浮点数,保留一位小数)。

输入描述:

一行,连续输入5个整数(范围0~100),用空格分隔。

输出描述:

一行,输出5个数的平均数(保留一位小数)。

示例1
输入

75 80 43 67 96

输出

72.2

参考答案:

#include <stdio.h>
int main()
{int i = 0;int sum = 0;int input = 0;for(i=0; i<5; i++){scanf("%d", &input);sum += input;}printf("%.1f\n", sum/5.0);return 0;
}

答案解析:

在获取输入数据的同时,计算成绩总和,然后求出平均值,按照格式输出就行。

BC34-进制A+B

https://www.nowcoder.com/practice/6187581174ac48278ca3bccf8d534897?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

输入一个十六进制数a,和一个八进制数b,输出a+b的十进制结果(范围-231~231-1)。

输入描述:

一行,一个十六进制数a,和一个八进制数b,中间间隔一个空格。

输出描述:

一行,a+b的十进制结果。

示例1
输入

0x12 05

输出

23

备注:

十六进制Hexadecimal一般以0x开头,例如0xFF。八进制Octal,一般以0开头,例如07。

参考代码:

#include<stdio.h>
int main()
{int a = 0;int b = 0;scanf("%x %o", &a, &b);int sum = a+b;printf("%d\n", sum);return 0;
}    

答案解析:

1. 首先要理解十进制、十六进制、八进制只是一种数据的表示形式,不是数据的存储形式。
2. 不同格式的数据的输出在C语言中有不同的格式指定,比如:%x是十六进制格式,%o就是八进制格式。
3. 不同进制的数据存放都整形变量中都是整形值,直接计算就行,计算交给计算机。

BC35-判断字母

https://www.nowcoder.com/practice/44d2d63103664913bc243d3836b4f341?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

从键盘任意输入一个字符,编程判断是否是字母(包括大小写)。

输入描述:

多组输入,每行输入包括一个字符。

输出描述:

针对每行输入,输出该字符是字母(YES)或不是(NO)。

示例1
输入

H
9

输出

YES
NO

参考代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{int ch = 0;while ((ch = getchar()) != EOF){//判断是不是字母if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))printf("YES\n");elseprintf("NO\n");getchar();}return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{int ch = 0;while ((ch = getchar()) != EOF){//判断是不是字母if (isalpha(ch))printf("YES\n");elseprintf("NO\n");getchar();}return 0;
}

代码解析:
1. 本地是多组输入,一定要注意循环输入的问题
2. 字符的判断可以自己写,也可以借助于库函数,要熟悉库函数都有哪些。

BC36-健康评估

https://www.nowcoder.com/practice/08b28e61ff6345febf09969b3a167f7e?tpId=107&tqId=33317&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking&tab=answerKey

题目描述

BMI指数(即身体质量指数)是用体重公斤数除以身高米数平方得出的数字,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。例如:一个人的身高为1.75米,体重为68千克,他的BMI=68/(1.75^2)=22.2(千克/米^2)。当BMI指数为18.5~23.9时属正常,否则表示身体存在健康风险。编程判断人体健康情况。

输入描述:

一行,输入一个人的体重(千克)和身高(米),中间用一个空格分隔。

输出描述:

一行,输出身体Normal(正常)或Abnormal(不正常)。

示例1

输入

68 1.75

输出

Normal

示例2

输入

67.5 1.65

输出

Abnormal

参考代码:

#include<stdio.h>
int main()
{float weight;float high;float BMI;scanf("%f%f",&weight,&high);BMI=weight/(high*high);if(BMI<=23.9&&BMI>=18.5){printf("Normal");}else{printf("Abnormal");}return 0;
}

C++参考代码:

#include<iostream>
using namespace std;
int main()
{float weight;float high;float BMI;cin>>weight;cin>>high;BMI=weight/(high*high);if(BMI<=23.9&&BMI>=18.5){cout<<"Normal";}else{cout<<"Abnormal";}return 0;
}

BC37-网购

https://www.nowcoder.com/practice/5d7dfd405e5f4e4fbfdff6862c46b751?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi非常喜欢网购,在一家店铺他看中了一件衣服,他了解到,如果今天是“双11”(11月11日)则这件
衣服打7折,“双12” (12月12日)则这件衣服打8折,如果有优惠券可以额外减50元(优惠券只能在双
11或双12使用),求KiKi最终所花的钱数。

输入描述:

一行,四个数字,第一个数表示小明看中的衣服价格,第二和第三个整数分别表示当天的月份、当天的日期、
第四个整数表示是否有优惠券(有优惠券用1表示,无优惠券用0表示)。

输出描述:

一行,小明实际花的钱数(保留两位小数)。(提示:不要指望商家倒找你钱)

示例1
输入

1000.0 11 11 1

输出

650.00

示例2
输入

999.8 12 12 0

输出

799.84

示例3
输入

66.6 11 11 1

输出
0.00
参考代码:
//代码1

#include <stdio.h>
int main()
{float price = 0.0;int m = 0;int d = 0;int flag = 0;scanf("%f%d%d%d", &price, &m, &d, &flag);if(m == 11 && d == 11){price *= 0.7;if(flag == 1)price -= 50;}else if(m==12 && d == 12){price *= 0.8;if(flag == 1)price -= 50;}if(price < 0.0)price = 0.0;printf("%.2f\n", price);return 0;
}

//代码2

#include <stdio.h>
int main()
{float price = 0.0;int m = 0;int d = 0;int flag = 0;float cut = 0;scanf("%f%d%d%d", &price, &m, &d, &flag);if(m == 11 && d == 11){cut = 0.7;}else if(m==12 && d == 12){cut = 0.8;}price = price*cut-flag*50.0;if(price < 0.0)price = 0.0;printf("%.2f\n", price);return 0;
}

答案解析:
1. 本地理解好题目意思,然后计算机就可以
2. 注意抵扣完后价格小于0,只能按照0计算
3. 按照格式输出

BC38-变种水仙花数

https://www.nowcoder.com/practice/c178e3f5cc4641dfbc8b020ae79e2b71?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和
461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。
例如:

655 = 6 * 55 + 65 * 5
1461 = 1*461 + 14*61 + 146*1

求出 5位数中的所有 Lily Number。

输入描述:

输出描述:

一行,5位数中的所有 Lily Number,每两个数之间间隔一个空格。

参考答案:

#include <stdio.h>
int main()
{int i = 0;for(i=10000; i<=99999; i++){//判断i是否为lily numberint j = 10;int sum = 0;int tmp = i;for(j=10; j<=10000; j*=10){sum += (tmp%j)*(tmp/j);}if(sum == i)printf("%d ", i);}return 0;
}
#include<stdio.h>
int main()
{int i = 0;for (i = 10000; i <= 99999; i++){int ten = 10;int tmp = 0;while (i / ten){tmp += (i / ten) * (i % ten);ten *= 10;}if (tmp == i)printf("%d ", i);}return 0;
}

答案解析:

分析题目后发现,lily数求和的每一项都是对同一个数(10/100/1000...)的取模或者整除取商。
这样的话,产生10,100,1000,10000 这些数字,分别对被判断的数字取模或者取商,然后乘起来,再
计算和,再判断就行。

BC39-争夺前五名

https://www.nowcoder.com/practice/cd052308a1c44a88ad00255f312c3e14?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

期中考试开始了,大家都想取得好成绩,争夺前五名。从键盘输入n个学生成绩(不超过40个),输出每组排在前五高的成绩。

输入描述:

两行,第一行输入一个整数,表示n个学生(>=5),第二行输入n个学生成绩(整数表示,范围0~100),用空格分隔。

输出描述:

一行,输出成绩最高的前五个,用空格分隔。

示例1
输入

6
99 45 78 67 72 88

输出

99 88 78 72 67

参考代码:
//代码1

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int cmp_int(const void* e1, const void* e2)
{return *(int*)e1 - *(int*)e2;
}
int main()
{int n = 0;int score[40] = { 0 };scanf("%d", &n);int i = 0;for (i = 0; i < n; i++){scanf("%d", &score[i]);}//对所有数字排序int j = 0;//使用库函数排序qsort(score, n, 4, cmp_int);for (i = 0; i < 5; i++){printf("%d ", score[--n]);}return 0;
}

//代码2

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>int main()
{int n = 0;int score[40] = { 0 };scanf("%d", &n);int i = 0;for (i = 0; i < n; i++){scanf("%d", &score[i]);}//对所有数字排序-冒泡排序int j = 0;for (i = 0; i < n; i++){for (j = 0; j < n - i - 1; j++){if (score[j] < score[j + 1]){int tmp = score[j];score[j] = score[j + 1];score[j + 1] = tmp;}}}for (i = 0; i < 5; i++){printf("%d ", score[i]);}return 0;
}

答案解析:

1. 要学会使用C语言库函数提供qsort函数。
2. 或者自己实现一个简单的整形数组排序代码。

BC40-竞选社长

https://www.nowcoder.com/practice/45a30e3ef51040ed8a7674984d6d1553?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

假设你们社团要竞选社长,有两名候选人分别是A和B,社团每名同学必须并且只能投一票,最终得票多的人为社长.

输入描述:

一行,字符序列,包含A或B,输入以字符0结束。

输出描述:

一行,一个字符,A或B或E,输出A表示A得票数多,输出B表示B得票数多,输出E表示二人得票数相等。

示例1
输入

ABBABBAAB0

输出

B

参考代码:

#include<stdio.h>
int main()
{char ch = 0;char ret = 0;int count_A = 0;int count_B = 0;while (((ch = getchar()) != '0') && ch != EOF){if (ch == 'A')count_A++;elsecount_B++;}if (count_A > count_B)ret = 'A';else if (count_A < count_B)ret = 'B';else if (count_A == count_B)ret = 'E';printf("%c\n", ret);return 0;
}

答案解析:
1. 本题有很多解法。
2. 主要就是读取输入数据的问题要解决好,输入有2个结束条件(遇到读取结束EOF,或者'0')。
3. 剩余的工作就是统计个数后,然后根据情况按照格式输出。

BC41-你是天才吗?

https://www.nowcoder.com/practice/557cc54704bb4d56b73b62d1a5455331?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

据说智商140以上者称为天才,KiKi想知道他自己是不是天才,请帮他编程判断。输入一个整数表示一
个人的智商,如果大于等于140,则表明他是一个天才,输出“Genius”。

输入描述:

多组输入,每行输入包括一个整数表示的智商。

输出描述:

针对每行输入,输出“Genius”。

示例1
输入

160

输出

Genius

参考代码:

#include <stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){if (n >= 140)printf("Genius");}return 0;
}
#include <stdio.h>
int main()
{int n = 0;//这种写法是因为scanf读取失败返回EOF,EOF是-1,所以按位取反后的结果是0,0为假,可以让循环停止。while (~scanf("%d", &n)){if (n >= 140)printf("Genius");}return 0;
}

答案解析:

关于对组输入的题目,一定要处理好多组数据的输入问题,然后考虑循环如何结束。
方法1和方法2,给出了2种多组输入的方法。

BC42-完美成绩

https://www.nowcoder.com/practice/8312e497509a450f968d9a6a2381ce32?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi想知道他的考试成绩是否完美,请帮他判断。从键盘输入一个整数表示的成绩,编程判断成绩是否在90~100之间,如果是则输出“Perfect”。

输入描述:

多组输入,每行输入包括一个整数表示的成绩(90~100)。

输出描述:

针对每行输入,输出“Perfect”。

示例1
输入

98

输出

Perfect

参考代码:

#include <stdio.h>
int main()
{int score = 0;while (scanf("%d", &score) != EOF){if (score >= 90 && score <= 100)printf("Perfect");}return 0;
}

答案解析:

1. 多组输入。
2. 数学中的 90<=score<=100 的写法,在C语言中直接写是有bug的。

BC43-及格分数

https://www.nowcoder.com/practice/56513524333148b38945e1989bc7df4e?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi想知道他的考试分数是否通过,请帮他判断。从键盘任意输入一个整数表示的分数,编程判断该分
数是否在及格范围内,如果及格,即:分数大于等于60分,是输出“Pass”,否则,输出“Fail”。

输入描述:

多组输入,每行输入包括一个整数表示的分数(0~100)。

输出描述:

针对每行输入,输出“Pass”或“Fail”。

示例1
输入

94

输出

Pass

示例2
输入

44

输出

Fail
参考代码:

#include <stdio.h>
int main()
{int score = 0;while (scanf("%d", &score) != EOF){if (score >= 60)printf("Pass\n");elseprintf("Fail\n");}return 0;
}

答案解析:

无。

BC44-判断整数的奇偶性

https://www.nowcoder.com/practice/a8b018667e274af29b5f76a6673450fc?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi想知道一个整数的奇偶性,请帮他判断。从键盘任意输入一个整数(范围-2^31~2^31-1),编程判断它的奇偶性。

输入描述:

多组输入,每行输入包括一个整数。

输出描述:

针对每行输入,输出该数是奇数(Odd)还是偶数(Even)。

示例1
输入

4
7

输出

Even
Odd

参考代码:

#include <stdio.h>
int main()
{int num = 0;while (scanf("%d", &num) != EOF){if (num % 2 == 1)printf("Odd\n");elseprintf("Even\n");}return 0;
}

答案解析:

BC45-最高分数

https://www.nowcoder.com/practice/52c18a3b49a54fc98107fbdde1415f90?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi参加了语文、数学、外语的考试,请帮他判断三科中的最高分。从键盘任意输入三个整数表示的分数,编程判断其中的最高分。

输入描述:

多组输入,每行输入包括三个整数表示的分数(0~100),用空格分隔。

输出描述:

针对每行输入,输出为一行,即三个分数中的最高分。

示例1
输入

94 98 99
100 88 60

输出

99
100

参考代码:

#include <stdio.h>
int main()
{int i = 0;int score[3] = { 0 };while (scanf("%d %d %d", &score[0], &score[1], &score[2]) != EOF){int max = 0;//每一组测试,max都恢复到0int i = 0;for (i = 0; i < 3; i++){if (score[i] > max)max = score[i];}printf("%d\n", max);}return 0;
}

答案解析:

1. 多组输入
2. 每组输入接受3个数字,求出最大值,因为成绩不能是负数,所以假设max期初是0.

BC46-判断元音还是辅音

https://www.nowcoder.com/practice/7eb4df4d52c44d309081509cf52ecbc4?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi开始学习英文字母,BoBo老师告诉他,有五个字母A(a), E(e), I(i), O(o),U(u)称为元音,其他所有字
母称为辅音,请帮他编写程序判断输入的字母是元音(Vowel)还是辅音(Consonant)。

输入描述:

多组输入,每行输入一个字母。

输出描述:

针对每组输入,输出为一行,如果输入字母是元音(包括大小写),输出“Vowel”,如果输入字母是非元音,
输出“Consonant”。

示例1
输入

A
b

输出

Vowel
Consonant

参考代码:
//方法1

#include <stdio.h>
int main()
{char ch = 0;char arr[] = "AEIOUaeiou";while ((ch = getchar()) != EOF){int i = 0;for (i = 0; i < 10; i++){if (ch == arr[i]){printf("Vowel\n");break;}}if (i == 10)printf("Consonant\n");getchar();//去除每个字符后的\n}return 0;
}

//方法2

#include <stdio.h>
int main()
{char ch = 0;char arr[] = "AEIOUaeiou";//在%c的前面写一个空格会消化掉前面所有的空白字符,然后读取一个字符while (scanf(" %c", &ch) != EOF){int i = 0;for (i = 0; i < 10; i++){if (ch == arr[i]){printf("Vowel\n");break;}}if (i == 10)printf("Consonant\n");}return 0;
}

//方法3

#include <stdio.h>
int main()
{char ch = 0;char arr[] = "AEIOUaeiou";//在%c的后边发给一个'\n',其实在输入时候就会消化掉这个\n字符//不会为下次留下空白字符的隐患while (scanf("%c\n", &ch) != EOF){int i = 0;for (i = 0; i < 10; i++){if (ch == arr[i]){printf("Vowel\n");break;}}if (i == 10)printf("Consonant\n");}return 0;
}

BC47-判断是不是字母

https://www.nowcoder.com/practice/91a588dd4cd244bfa616f17603ec123c?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi想判断输入的字符是不是字母,请帮他编程实现。

输入描述:

多组输入,每一行输入一个字符。

输出描述:

针对每组输入,输出单独占一行,判断输入字符是否为字母,输出内容详见输出样例。

示例1
输入

A
6

输出

A is an alphabet.
6 is not an alphabet.

参考代码:

#include <stdio.h>int main()
{int ch = 0;while ((ch = getchar()) != EOF){//判断字母//if((ch>='A'&& ch<='Z') || (ch>='a' && ch<='z'))if (isalpha(ch))printf("%c is an alphabet.\n", ch);elseprintf("%c is not an alphabet.\n", ch);//清理掉\ngetchar();}return 0;
}

答案解析:

本题和BC46是一个道理的,三种方法均可使用。

BC48-字母的大小写转换

https://www.nowcoder.com/practice/850ebd30a2a34cfc87199da3fc15786a?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi想完成字母大小写转换,有一个字符,判断它是否为大写字母,如果是,将它转换成小写字母;反之则转换为大写字母。

输入描述:

多组输入,每一行输入一个字母。

输出描述:

针对每组输入,输出单独占一行,输出字母的对应形式。

示例1
输入

a
A
Z

输出

A
a
z

参考代码:

#include <stdio.h>
int main()
{int ch = 0;//多组输入while ((ch = getchar()) != EOF){if (islower(ch))printf("%c\n", toupper(ch));elseprintf("%c\n", tolower(ch));//处理'\n'getchar();}return 0;
}

答案解析:

本地和BC46、BC47题一样。

BC49-判断两个数的大小关系

https://www.nowcoder.com/practice/f05358b9e8164b27871c87d3097f4dab?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking&tab=answerKey

题目描述

KiKi想知道从键盘输入的两个数的大小关系,请编程实现。

输入描述:

题目有多组输入数据,每一行输入两个整数(范围(1 ~231-1),用空格分隔。

输出描述:

针对每行输入,输出两个整数及其大小关系,数字和关系运算符之间没有空格,详见输入输出样例。

示例1

输入

1 1

输出

1=1

示例2

输入

1 0

输出

1>0

示例3

输入

0 1

输出

0<1

参考代码:

#include<stdio.h>
int main()
{int num1;int num2;while(scanf("%d %d",&num1,&num2)!=EOF){if(num1==num2)printf("%d=%d\n",num1,num2);else if(num1>num2)printf("%d>%d\n",num1,num2);elseprintf("%d<%d",num1,num2);}return 0;
}

C++参考代码:

#include<iostream>
using namespace std;
int main()
{int a,b;while(cin>>a>>b){if(a>b)cout<<a<<">"<<b<<endl;else if (a==b)cout<<a<<"="<<b<<endl;elsecout<<a<<"<"<<b<<endl;}return 0;
}

BC50-计算单位阶跃函数

https://www.nowcoder.com/practice/0b23793ae48a4e6cb7dfff042c959a04?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi最近学习了信号与系统课程,这门课里有一个非常有趣的函数,单位阶跃函数,其中一种定义方式为:


现在试求单位冲激函数在时域t上的值。

输入描述:

题目有多组输入数据,每一行输入一个t(-1000<t<1000)表示函数的时域t。

输出描述:

输出函数的值并换行。

示例1
输入
11
0
-11

输出

1
0.5
0

参考代码:

#include<stdio.h>
int main()
{int t = 0;while (scanf("%d", &t) != EOF){if (t > 0)printf("%d\n", 1);else if (t == 0)printf("%.1f\n", 0.5f);elseprintf("%d\n", 0);}return 0;
}

答案解析:

BC51-三角形判断

https://www.nowcoder.com/practice/689ec1e742394e09b1059556fc167b65?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi想知道已经给出的三条边a,b,c能否构成三角形,如果能构成三角形,判断三角形的类型(等边三角形、等腰三角形或普通三角形)。

输入描述:

题目有多组输入数据,每一行输入三个a,b,c(0<a,b,c<1000),作为三角形的三个边,用空格分隔。

输出描述:

针对每组输入数据,输出占一行,如果能构成三角形,等边三角形则输出“Equilateral triangle!”,

等腰三角形则输出“Isosceles triangle!”,

其余的三角形则输出“Ordinary triangle!”,

反之输出“Not a triangle!”。

示例1

输入
2 3 2
3 3 3

输出

Isosceles triangle!
Equilateral triangle!

参考代码:

#include <stdio.h>int main()
{int a = 0;int b = 0;int c = 0;while (scanf("%d %d %d", &a, &b, &c) != EOF){//满足条件就是三角形if (a + b > c && b + c > a && c + a > b){if (a == b && b == c)printf("Equilateral triangle!\n");else if ((a == b && a != c) || (a == c && a != b) || (b == c && b != a))printf("Isosceles triangle!\n");elseprintf("Ordinary triangle!\n");}elseprintf("Not a triangle!\n");}return 0;
}

答案解析:

这里就是搞清楚三角形的判断规则,并去一一穷举就行了,因为只有三条边。

BC52-衡量人体胖瘦程度

https://www.nowcoder.com/practice/4d604603fae94a26b59b7bc18f363bc0?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

在计算BMI(BodyMassIndex ,身体质量指数)的案例基础上,判断人体胖瘦程度。BMI中国标准如下表所示。


输入描述:

多组输入,每一行包括两个整数,用空格隔开,分别为体重(公斤)和身高(厘米)。

输出描述:

针对每行输入,输出为一行,人体胖瘦程度,即分类。

示例1
输入

80 170
60 170
90 160
50 185

输出

Overweight
Normal
Obese
Underweight

参考代码:

#include <stdio.h>
int main()
{float weight = 0.0;float hight = 0.0;while (scanf("%f %f", &weight, &hight) != EOF){float bmi = weight / (hight * hight / 100 / 100);if (bmi < 18.5)printf("Underweight\n");else if (bmi >= 18.5 && bmi <= 23.9)printf("Normal\n");else if (bmi > 23.9 && bmi <= 27.9)printf("Overweight\n");else printf("Obese\n");}return 0;
}

答案解析:

1. 多组输入
2. 浮点数除法要保证除号的两端至少有一个浮点数

BC53-计算一元二次方程

https://www.nowcoder.com/practice/7da524bb452441b2af7e64545c38dc26?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

从键盘输入a, b, c的值,编程计算并输出一元二次方程ax2 + bx + c = 0的根,

当a = 0时,输出“Notquadratic equation”,

当a ≠ 0时,根据△ = b2 - 4ac的三种情况计算并输出方程的根。

输入描述:

多组输入,一行,包含三个浮点数a, b, c,以一个空格分隔,表示一元二次方程ax2 + bx + c = 0的系数。

输出描述:

针对每组输入,输出一行,输出一元二次方程ax2 + bx +c = 0的根的情况。

如果a = 0,输出“Not quadratic equation”;

如果a ≠  0,分三种情况:

△ = 0,则两个实根相等,输出形式为:x1=x2=...

△  > 0,则两个实根不等,输出形式为:x1=...;x2=...,其中x1  <=  x2。

△  < 0,则有两个虚根,则输出:x1=实部-虚部i;x2=实部+虚部i,即x1的虚部系数小于等于x2的虚部系数,实部为0时不可省略。实部= -b / (2*a),虚部= sqrt(-△ ) / (2*a)

所有实数部分要求精确到小数点后2位,数字、符号之间没有空格。
示例1
输入

2.0 7.0 1.0

输出

x1=-3.35;x2=-0.15

示例2
输入

0.0 3.0 3.0

输出

Not quadratic equation

示例3
输入

1 2 1

输出

x1=x2=-1.00

示例4
输入

2 2 5

输出

x1=-0.50-1.50i;x2=-0.50+1.50i

示例5
输入

1 0 1

输出

x1=0.00-1.00i;x2=0.00+1.00i

参考代码:

#include <stdio.h>
#include <math.h>int main()
{float a = 0.0;float b = 0.0;float c = 0.0;while (scanf("%f %f %f", &a, &b, &c) != EOF){if (a != 0){float disc = b * b - 4 * a * c;if (disc > 0.0)printf("x1=%.2f;x2=%.2f\n",(-b - sqrt(disc)) / (2 * a),(-b + sqrt(disc)) / (2 * a));else if (disc < 0.0)printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n",(-b) / (2 * a), sqrt(-disc) / (2 * a),(-b) / (2 * a), sqrt(-disc) / (2 * a));elseprintf("x1=x2=%.2f\n", (-b) / (2 * a));}elseprintf("Not quadratic equation\n");}return 0;
}

答案解析:

1. 多组输入
2. 根据不同的限制条件给出相应的计算结果
3. 小点数后位数有限制

BC54-获得月份天数

https://www.nowcoder.com/practice/13aeae34f8ed4697960f7cfc80f9f7f6?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi想获得某年某月有多少天,请帮他编程实现。输入年份和月份,计算这一年这个月有多少天。

输入描述:

多组输入,一行有两个整数,分别表示年份和月份,用空格分隔。

输出描述:
针对每组输入,输出为一行,一个整数,表示这一年这个月有多少天。

示例1
输入

2008 2

输出

29

参考代码:

//普通闰年:公历年份是4的倍数的,且不是100的倍数,为普通闰年(如2004年、2020年就是闰年)。
//世纪闰年:公历年份是整百数的,必须是400的倍数才是世纪闰年(如1900年不是世纪闰年,2000年是世纪闰年)。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int IsLeapYear(int n)
{if (((n % 4 == 0) && (n % 100 != 0)) || (n % 400 == 0))return 1;elsereturn 0;
}int main()
{int year = 0;int month = 0;while (scanf("%d %d", &year, &month) != EOF){switch (month){case 1: case 3: case 5: case 7: case 8: case 10: case 12:printf("31\n");break;case 2:if (IsLeapYear(year)){printf("29\n");break;}else{printf("28\n");break;}case 4: case 6: case 9: case 11:printf("30\n");break;}}return 0;
}
#include <stdio.h>
int main()
{int y = 0;int m = 0;int days[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };while (scanf("%d%d", &y, &m) != EOF){int day = days[m - 1];if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)){if (m == 2)day += 1;}printf("%d\n", day);}return 0;
}

代码解析:

1. 多组输入
2. 判断闰年,如果是闰年,2月多一天,其他都正常。

BC55-简单计算器

https://www.nowcoder.com/practice/b8f770674ba7468bb0a0efcc2aa3a239?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi实现一个简单计算器,实现两个数的“加减乘除”运算,用户从键盘输入算式“操作数1运算符操作数2”,

计算并输出表达式的值,如果输入的运算符号不包括在(+、-、*、/)范围内,输出“Invalidoperation!”。

当运算符为除法运算,即“/”时。如果操作数2等于0.0,则输出“Wrong!Division by zero!”

输入描述:

多组输入,一行,操作数1运算符操作数2(其中运算符号包括四种:+、-、*、/)。
输出描述:
针对每组输入,输出为一行。

如果操作数和运算符号均合法,则输出一个表达式,操作数1运算符操作数2=运算结果,各数小数点后均保留4
位,数和符号之间没有空格。

如果输入的运算符号不包括在(+、-、*、/)范围内,输出“Invalid operation!”。当运算符为除法运
算,即“/”时。

如果操作数2等于0.0,则输出“Wrong!Division by zero!”。

示例1
输入

1.0+3.0
1.0;4.0
44.0/0.0

输出

1.0000+3.0000=4.0000
Invalid operation!
Wrong!Division by zero!

参考代码:
精度尽量保持高
这个题使用float精度不满足要求

#include<stdio.h>
int main()
{double left=0.0;double right=0.0;char oper=0;while(scanf("%lf%c%lf",&left,&oper,&right)!=EOF){switch(oper){case '+':printf("%.4f%c%.4f=%.4f",left,oper,right,left+right);break;case '-':printf("%.4f%c%.4f=%.4f",left,oper,right,left-right);break;case '*':printf("%.4f%c%.4f=%.4f",left,oper,right,left*right);break;case '/':if(right!=0.0){printf("%.4f%c%.4f=%.4f",left,oper,right,left/right);break;}else{printf("Wrong!Division by zero!");break;}default:printf("Invalid operation!");break;}}return 0;
}

代码解析:

1. 多组输入
2. 按照格式接收,按照要求编写代码就行
3. switch语句

BC56-线段图案

https://www.nowcoder.com/practice/a95744270f274a14a8a0dafe10421589?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的线段图案。

输入描述:

多组输入,一个整数(1~100),表示线段长度,即“*”的数量。

输出描述:

针对每行输入,输出占一行,用“*”组成的对应长度的线段。

示例1
输入

10
2

输出

**********
**

#include <stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){int i = 0;for (i = 0; i < n; i++){printf("*");}printf("\n");}return 0;
}

答案解析:

1. 多组输入
2. 每次打印一个*,按照输入的个数打印后换行就行

BC57-正方形图案

https://www.nowcoder.com/practice/1304bb23c2e344989d5c7a578d263e4c?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的正方形图案。

输入描述:

多组输入,一个整数(1~20),表示正方形的长度,也表示输出行数。

输出描述:

针对每行输入,输出用“*”组成的对应边长的正方形,每个“*”后面有一个空格。

示例1
输入

4

输出

* * * *
* * * *
* * * *
* * * *

示例2
输入

5

输出

* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
 
参考代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){int i = 0;int j = 0;for (i = 0; i < n; i++){for (j = 0; j < n; j++){printf("* ");}printf("\n");}}return 0;
}

答案解析:

1. 多组输入
2. 每组是由n组*+空格组成

BC58-直角三角形图案

https://www.nowcoder.com/practice/00dd93f7c7074754b7511bf56d1f15ac?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的直角三角形图案。

输入描述:

多组输入,一个整数(2~20),表示直角三角形直角边的长度,即“*”的数量,也表示输出行数。

输出描述:

针对每行输入,输出用“*”组成的对应长度的直角三角形,每个“*”后面有一个空格。

示例1
输入

4

输出

*
* *
* * *
* * * *

示例2
输入

5

输出

*
* *
* * *
* * * *
* * * * *

参考代码:

#include<stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){int i = 0;//控制行数for (i = 1; i <= n; i++){//每一行int j = 0;for (j = 1; j <= i; j++){printf("* ");}printf("\n");}}return 0;
}

答案解析:

1. 多组输入
2. 每一行的输出要有计算清楚

BC59-翻转直角三角形图案

https://www.nowcoder.com/practice/2cdea429fa414fbba26e6c821724ca06?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的翻转直角三角形图案。

输入描述:

多组输入,一个整数(2~20),表示翻转直角三角形直角边的长度,即“*”的数量,也表示输出行数。

输出描述:

针对每行输入,输出用“*”组成的对应长度的翻转直角三角形,每个“*”后面有一个空格。

示例1
输入

5

输出

* * * * *
* * * *
* * *
* *
*

示例2
输入

6

输出

* * * * * *
* * * * *
* * * *
* * *
* *
*

参考代码:

#include <stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){int i = 0;for (i = n; i >= 1; i--){int j = 0;for (j = i; j >= 1; j--){//这里注意空格printf("* ");}printf("\n");}}return 0;
}

答案解析:

1. 多组输入
2. 每两个*中间有空格,要注意
3. 控制好一行输出的内容

BC60-带空格的直角三角形

https://www.nowcoder.com/practice/192d1039c3d44155bb868073f5482670?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的带空格直角三角形图案。

输入描述:

多组输入,一个整数(2~20),表示直角三角形直角边的长度,即“*”的数量,也表示输出行数。

输出描述:

针对每行输入,输出用“*”组成的对应长度的直角三角形,每个“*”后面有一个空格。

示例1
输入

5

输出

        * * * * * * * * * *
* * * * *

示例2
输入

4

输出

      * * * * * *
* * * *

参考代码:

//代码1-常规写法
#include <stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){int i = 0;//行数控制for (i = 0; i < n; i++){//空格int j = 0;for (j = 0; j < n - 1 - i; j++){printf("  ");}//*for (j = 0; j <= i; j++){printf("* ");}printf("\n");}}return 0;
}
//代码2
#include <stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){int i = 0;int j = 0;//行数for (i = 0; i < n; i++){//一行for (j = 0; j < n; j++){//行和列的和//这里可以把行数和列数标出来就能看明白if (i + j < n - 1){printf("  ");}else{printf("* ");}}printf("\n");}}return 0;
}

答案解析:

1. 多组输入
2. 方法2中i+j<n-1理解
在红色三角范围内的每个坐标上,横纵坐标之和小于n-1的。

BC61-金字塔图案

https://www.nowcoder.com/practice/d84e8339f9444bb6b29bd3f227c8e538?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的金字塔图案。

输入描述:

多组输入,一个整数(2~20),表示金字塔边的长度,即“*”的数量,,也表示输出行数。

输出描述:

针对每行输入,输出用“*”组成的金字塔,每个“*”后面有一个空格。

示例1
输入

4

输出

*
  * *
 * * *
* * * *

示例2
输入

5

输出

*
   * *
  * * *
 * * * *
* * * * *

参考代码:

#include <stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){int i = 0;for (i = 0; i < n; i++){//一行int j = 0;//空格for (j = 0; j < n - 1 - i; j++){printf(" ");}//*for (j = 0; j <= i; j++){printf("* ");}printf("\n");}}return 0;
}

答案解析:

1. 多组输入
2. 每一行的前边应该是空格,后边是*+空格,控制好个数就行

BC62  翻转全字塔图案

题目描述

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的翻转金字塔图案。

输入描述:

多组输入,一个整数(2~20),表示翻转金字塔边的长度,即“*”的数量,也表示输出行数。

输出描述:

针对每行输入,输出用“*”组成的金字塔,每个“*”后面有一个空格。

示例1

输入

5

输出

* * * * * * * * * * * * * * * 

示例2

输入

6

输出

* * * * * * * * * * * * * * * * * * * * * 

参考代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{int line = 0;while(scanf("%d", &line)!=EOF){ int i = 0;int j = 0;int k = 0;int tmp = 0;//打印一行for (k = line; k > 0; k--){//打印空格for (j = 0; j < tmp; j++){printf(" ");}//打印*for (i = line; i > tmp; i--){printf("* ");}printf("\n");tmp++;}}return 0;
}

BC63 菱形图案

题目描述

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的菱形图案。

输入描述:

多组输入,一个整数(2~20)。

输出描述:

针对每行输入,输出用“*”组成的菱形,每个“*”后面有一个空格。

示例1

输入

2

输出

  * * *
* * * * * * 

示例2

输入

3

输出

   * * * * * *
* * * * * * * * * * 

示例3

输入

4

输出

    * * * * * * * * * *
* * * * * * * * * * * * * * * 

参考代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{int line = 0;while (scanf("%d", &line) != EOF){//打印上半部分int i = 0;for (i = 0; i < line+1; i++){//1.打印空格int j = 0;for (j = 0; j < line - i; j++){printf(" ");}//2.打印* for (j = 0; j < i + 1; j++){printf("* ");}//3.换行printf("\n");}//打印下半部分for (i = 0; i < line; i++){int j = 0;//1.打印空格for (j = 0; j < i + 1; j++){printf(" ");}//2.打印*for (j = 0; j <line-i; j++){printf("* ");}//3.换行printf("\n");}}return 0;
}

BC64 K形图案

题目描述

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的K形图案。

输入描述:

多组输入,一个整数(2~20)。

输出描述:

针对每行输入,输出用“*”组成的K形,每个“*”后面有一个空格。

示例1

输入

2

输出

* * *
* *
*
* *
* * * 

示例2

输入

3

输出

* * * *
* * *
* *
*
* *
* * *
* * * * 

示例3

输入

4

输出

* * * * *
* * * *
* * *
* *
*
* *
* * *
* * * *
* * * * * 

参考代码:

//要求补成长方形
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{int line = 0;while (scanf("%d", &line) != EOF){//打印上半部分int i = 0;for (i = 0; i < line+1; i++){int j = 0;//打印* for (j = 0; j < line+1-i; j++){printf("* ");}//打印空格for (j = 0; j < i*2; j++){printf(" ");}//换行printf("\n");}//打印下半部分for (i = 0; i < line; i++){int j = 0;//打印*for (j = 0; j <2+i; j++){printf("* ");}//打印空格for (j = 0; j < (line-i-1) * 2; j++){printf(" ");}//换行printf("\n");}}return 0;
}

BC65-BC138:由于有练习C++的需要,所以剩下的题将会提供C语言以及C++的两个参考代码

BC65-BC138:https://blog.csdn.net/aiqq136/article/details/115298433

BC139 KiKi定义电子日历类

https://www.nowcoder.com/practice/e4c67097cdb242d9a3f38b7cfe839396?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi学习了面向对象技术,学会了通过封装属性(变量)和行为(函数)定义类,现在他要设计一个电子日历类TDate。

它有3个私有数据成员:Month,Day,Year和若干个公有成员函数,要求:

(1)带有默认形参值的构造函数,默认值为0, 0, 0;
(2)输出日期函数,用“日/月/年”格式输出日期;
(3)设置日期函数,从键盘输入年、月、日。

输入描述:

一行,三个整数,用空格分隔,分别表示年、月、日。

输出描述:

一行,用“日/月/年”格式输出日期。

示例1

输入

2019 12 30

输出

30/12/2019
#include<stdio.h>
int main()
{int day,month,year;scanf("%d%d%d",&year,&month,&day);printf("%d/%d/%d",day,month,year);return 0;
}

答案解析:

按要求输出

BC140 KiKi设计类继承

https://www.nowcoder.com/practice/699ba050e2704591ae3e62401a856b0e?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

KiKi理解了继承可以让代码重用,

他现在定义一个基类shape,私有数据为坐标点x,y,

由它派生Rectangle类和Circle类,它们都有成员函数GetArea()求面积。

派生类Rectangle类有数据:矩形的长和宽;

派生类Circle类有数据:圆的半径。

Rectangle类又派生正方形Square类,定义各类并测试。

输入三组数据,分别是矩形的长和宽、圆的半径、正方形的边长,

输出三组数据,分别是矩形、圆、正方形的面积。圆周率按3.14计算。

输入描述:

输入三行,

第一行为矩形的长和宽,

第二行为圆的半径,

第三行为正方形的边长。

输出描述:

三行,分别是矩形、圆、正方形的面积。

小数点后没有小数,则按照int型整数格式输出,小数点后仅一位小数,则直接输出。小数点后如果有两位或者大于两位,则保留两位小数输出

示例1

输入

7 8
10
5

输出

56
314
25

参考代码:

#include <stdio.h>
int main()
{int c,k,r,l;scanf("%d%d%d%d",&c,&k,&r,&l);printf("%d\n%g\n%d\n",c*k,r*r*3.14,l*l);return 0;
}

答案解析:

%g用来输出实数,它根据数值的bai大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的0。即%g是根据结果自动选择科学记数法还是一般的小数记数法

printf("%g\n", 0.00001234);printf("%g\n", 0.0001234);printf("%.2g\n", 123.45);printf("%.2g\n", 23.45);上面四句输出结果为:
1.234e-05
0.0001234
1.2e+02
23

C语言刷题训练营-自我补全相关推荐

  1. c语言刷题(牛客网)

    c语言刷题(牛客网100道基础题) 学习没有捷径,唯有重复多练,这是浩克为大家找的牛客网刷题资源,如果你正在学或者学完了都可以来检验一下自己能力. 浩克也会专门开个专栏来讲解c语言刷题,让大家对c语言 ...

  2. 关于C语言刷题(#define宏定义函数的常见错误)

    关于C语言刷题(#define宏定义函数的常见错误) 首先我们来先看对#define的定义 define,宏定义,C语言中预处理命令一种.分为无参宏定义和带参宏定义.无参宏定义的一般形式为:#defi ...

  3. Nowcoder《C语言刷题笔记》BC1-BC15

    Nowcoder <C语言刷题笔记> BC1-BC15 文章目录 Nowcoder <C语言刷题笔记> BC1-BC15 0x00 写在前面 0x01 简单输出 BC1 Now ...

  4. [刷题]剑指offer C++语言刷题-多解法尝试

    自己刷题时的代码,一般会尝试多种解法,都是AC的,时间超时的解法保留了,但是会注明:给大家刷题做一个参考: 基于leetcode平台,但是建议搭配着用牛客,leetcode有些题目改变了原书中的题意 ...

  5. C语言刷题(8)——“C”

    各位CSDN的uu你们好呀,今天,小雅兰的内容是复习之前所学习的知识点,因为最近C语言马上就要更完啦,接下来,小雅兰会更新一些数据结构与算法的知识点,那么,复习最好的方式就是写题目,现在,让我们开始复 ...

  6. 【每日进步一点点】C语言刷题技巧及训练1

    恭喜你发现宝藏,这里是刹那芳间,很高兴为您服务~ C语言编程题 相信很多同学学校的C语言考试是上机做编程题叭,不要慌,这里将带你进行一个初步的入门,进行一些简单的编程题练习. Anyway, 请一定要 ...

  7. 【Go语言刷题篇】Go完结篇|函数、结构体、接口、错误入门学习

    Go从0到入门6-Go完结篇 前言 Q1:函数-数字的阶乘 Q2:函数-绝对值 Q3:函数-加减乘除 Q4:结构体-学生信息1 Q5:结构体-学生信息2 Q6:接口-动物和老虎 Q7:错误-网络延迟 ...

  8. 计算机二级C语言刷题笔记

    目录 前言 1.题目 1068: 二级C语言-温度转换 2.题目 1067: 二级C语言-分段函数 3.题目 1060: 二级C语言-同因查找 4.题目 1058: 二级C语言-求偶数和 前言 作者: ...

  9. C语言刷题之动态规划进阶(二)

    目录 1.前言 2.最大子矩阵 1.题目 2.初步分析 3.代码实现 3.龙与地下城游戏问题 1.题目 2.初步分析 3.代码实现 4.过河 1.题目 2.初步分析 3.代码实现 1.前言 读者们好, ...

最新文章

  1. 30年前未曾发行的任天堂红白机游戏,被这个团队从21张软盘中重新恢复了,还是3D的...
  2. hdu 1224 最长路
  3. 数据结构 - 树(二叉树的 前序、中序、后序 遍历)
  4. fwrite在任意位置写入文件,并可修改文件内容
  5. transactionManager 以及datasource type解析
  6. Oryx 2.1.2版本: src源码编译
  7. ubuntu16.04安装python.h_ubuntu16.04安装python3.6踩过的坑
  8. Android视频录制-MediaRecorder流程
  9. 47. PHP 魔术方法
  10. mock模拟接口测试_Python接口测试之mock(上)
  11. Shell编程之变量的高级用法
  12. [RK3399][Android7.1] 调试笔记 --- 播放音乐没有声音
  13. java 中的枚举_说说Java中的枚举(一)
  14. ANR发生的原理是什么, 怎么排查
  15. eclipse命令大全
  16. html、css做一个带搜索图标的搜索框
  17. 容联与腾讯云牵手!这一合作背后有何深意?
  18. 乐视网复牌即跌停,仍有千万买单甘作“接盘侠”
  19. 怎么从安卓设备转移数据到苹果_换手机了数据怎么办?这样做安卓、苹果手机数据一键转移...
  20. 个人人民币定期存款-存本取息Personal CNY Time Deposit – Schedule

热门文章

  1. 论坛复制乱码消除小程序
  2. 基于SpringBoot+MyBatis实现一套电商后台管理系统
  3. 你能背着“逃避”背多久?
  4. yii2 开源商城Fecshop
  5. 华为麦芒5云空间升级_华为麦芒5原版系统rom刷机包_华为麦芒5最新升级包更新下载...
  6. 哈希表(散列表)—Hash表解决地址冲突 C语言实现
  7. 人脑是量子计算机科学实验,新发现!人类大脑就是台量子计算机:如此神奇
  8. HBase与Hive练习题
  9. 需要更新以前的Visual Studio 2010实例
  10. ►奇说总001期:《“中本聪”,你去哪儿了?》0928