第1关:逐一挑出来
任务描述
本关需要完成一个输出某个三位数各个位上的数字的小程序。
相关知识
算数运算符
%
是取模运算符,获得整除后的余数。
/
是通过分子除以分母,获得整除后的整数部分。
floor
floor()
是返回一个浮点型的整数部分,即向下取整。
语法:
floor(double x)
说明:x
是需要传入的浮点型数。
举例如下:
float val = 1.2
floor(val) = 1
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
输入一个三位数的整数,分别输出其个位、十位、百位上的数字。
注意:
- 输出的各数字间有一个空格。
举例说明:
测试输入:345
。 预期输出:5 4 3
。
提示:方法不唯一,可以尽量尝试多种方式实现。
测试说明
平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
# include<stdio.h>
# include<math.h>
int main()
{
/*********begin*********/
int n;
scanf("%d",&n);
while(n!=0)
{
printf("%d ",n%10);
n=n/10;
}
printf("\n");
return 0;
/*********end*********/
}
第2关:我不喜欢4
任务描述
本关需要统计出10000
至99999
的整数之中,不包含数值4
的整数个数的小程序。
相关知识
我不想再啰嗦各种知识点了,而我相信大家经过反复的练习,已经将该记住的都记住了,那么我们直接看代码回顾吧!
代码片段1
:
// 当分数score小于60时,输出"考试不合格!"
int score = 58;
if (score < 60){
System.out.println("考试不合格!");
}
代码片段2
:
输出结果:
不及格
这个月零花钱没啦!
这个月零花钱没啦
代码片段3
:
// 当分数score大于等于60时输出"考试合格!",否则输出"考试不合格!"
int score = 80;
if (score >= 60)
System.out.println("考试合格!");
else {
System.out.println("考试不合格!");
}
代码片段4
:
#include <stdio.h>
int main ()
{
/* 局部变量定义 */
int a = 10;
/* while 循环执行 */
while( a < 20 )
{
printf("a 的值: %d
", a);
a++;
}
return 0;
}
输出结果::
a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 15
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19
代码片段5
:
for(var a=10; a<20 ;i++){
printf("a 的值: %d
", a);
}
输出结果:
a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 15
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
统计10000
至99999
中,不包含4
的数值的个数。
测试说明:
预期输入: 预期输出:10000~99999中不包含4的个数为:52488
。
测试说明
平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
#include<stdio.h>
int main()
{
/*********begin*********/
int a,j,i;
int s=0;
for(i=10000;i<=99999;i++)
{
a=i;
j=0;
while(a)
{
j=a%10;
if(j==4)
break;
a/=10;
}
if(j!=4)
s++;
}
printf("10000~99999中不包含4的个数为:%d",s);
/*********end*********/
}
第3关:一元二次方程,其实很简单
任务描述
本关需要完成求解指定一元二次方程式的根的小程序。效果如下:
测试集输入:-2.5 3.8 1.2
。 测试集输出:x1=-0.27 x2=1.79
。
相关知识
if-else语句
if...else
比if
语句的操作多了一步,当条件成立时,则执行 if
部分的代码块; 条件不成立时,则进入 else
部分。
例如,如果今天不下雨,就出门逛街,否则就宅在家玩游戏。
用法如下:
if (<条件>) {
<条件成立执行的代码>
}else {
<条件不成立执行的代码>
}
执行过程如下:
例如:
// 当分数score大于等于60时输出"考试合格!",否则输出"考试不合格!"
int score = 80;
if (score >= 60)
System.out.println("考试合格!");
else {
System.out.println("考试不合格!");
}
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
求ax2+bx+c=0方程的根。
由键盘输入任意值a
,b
,c
,需要在程序中进行判断:
如果a=0,输出错误提示系数a不能为零
; 如果b2−4ac<0,输出方程无实根
的信息; 如果b2−4ac>=0,计算并输出方程的两个实根。
测试说明:
测试输入:2 3 4
。 预期输出:方程无实根
。
测试说明
平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
#include <stdio.h>
#include<math.h>
int main()
{
/*********begin*********/
float a,b,c,x1,x2,s;
scanf("%f%f%f",&a,&b,&c);
s=b*b-4*a*c;
x1=(-b+sqrt(s))/(2*a);
x2=(-b-sqrt(s))/(2*a);
if(a==0)
printf("系数a不能为零\n");
else
{
if(s<0)
printf("方程无实根\n");
if(s>=0)
printf("x1=%.2f x2=%.2f",x1,x2);
}
return 0;
/*********end*********/
}
第4关:复数不再是难题
任务描述
本关需要完成复数运算的小程序。效果如下:
测试集输入:2.5 3.6 1.5 4.9
//依次为a,b,c,d
。
测试集输出:1.00+-1.30i
//无论a
,b
是否小于等于0
都按该a+bi
的输出。
相关知识
运算公式
(a+i*b)+(c+i*d) = (a+c)+i*(b+d)
(a+i*b)-(c+i*d) = (a-c)+i*(b-d)
(a+i*b)*(c+i*d) = (ac-bd)+i*(bc+ad)
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
设有两个复数a+i*b
和c+i*d
,要求:
-
定义一个结构体类型来描述复数;
-
复数之间的加法、减法、乘法和除法分别用不用的函数来实现;
-
必须使用结构体指针的方法把函数的计算结果返回。
输入格式:
输入只有一行,其格式为:运算符号(+
,-
,*
)a
, b
,c
, d
。
输出格式:
输出:a+bi
,输出时不管a
,b
是小于0
或等于0
都按该格式输出,输出时a
,b
都保留两位。
注:
- 使用
scanf
和printf
输入输出,要输出保留两位小数点,使用%.2lf
。
测试举例:
测试输入:* 2.5 3.6 1.5 4.9
。 预期输出:-13.89+17.65i
。
测试说明
平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct {
double real;
double i;
}complex;
complex* add(complex a, complex b){
/*********begin*********/
complex *c;
c=(complex*)malloc(sizeof(complex));
c->real=a.real+b.real;
c->i=a.i+b.i;
return c;
/*********end*********/
}
complex* minus(complex a, complex b){
/*********begin*********/
complex *c;
c=(complex*)malloc(sizeof(complex));
c->real=a.real-b.real;
c->i=a.i-b.i;
return c;
/*********end*********/
}
complex* multiply(complex a, complex b){
/*********begin**********/
complex *c;
c=(complex*)malloc(sizeof(complex));
c->real=(a.real*b.real)-(a.i*b.i);
c->i=a.real*b.i+a.i*b.real;
return c;
/*********end*********/
}
int main()
{
/*********begin**********/
char c;
complex a,b;
complex d;
scanf("%c%lf%lf%lf%lf",&c,&a.real,&a.i,&b.real,&b.i);
switch(c){
case '+':
d=*add(a,b);
break;
case '-':
d=*minus(a,b);
break;
case '*':
d=*multiply(a,b);
break;
}
if(d.i<0)
printf("%.2lf+(%.2lf)i",d.real,d.i);
else
printf("%.2lf+%.2lfi",d.real,d.i);
return 0;
/*********end**********/
}