第1关:求绝对值

  • 任务描述
  • 相关知识
    • abs()
    • fabs()语句
  • 编程要求
  • 测试说明

任务描述

本关需要你完成一个求整数绝对值的小程序。

相关知识

什么是绝对值?一个正数和0的绝对值是它本身,一个负数的绝对值是它的相反数。总之,一个数的绝对值是非负数。

C语言中求绝对值的函数有两个:abs()fabs()

  • abs() 是用来求整型表达式的绝对值;

  • fabs() 是用来求浮点型表达式的绝对值,主要是求精度要求更高的doublefloat 型的绝对值。

abs()

用法如下:

 
  1. #include<stdio.h>
  2. #include<stdlib.h> // abs函数头文件
  3. int abs (int j);

例如:

 
  1. #include <stdlib.h>
  2. main(){
  3. int ansert;
  4. answer = abs(-15);
  5. printf("%d", answer);
  6. }

fabs()语句

用法如下:

 
  1. #include <stdio.h>
  2. #include <math.h> //fabs函数头文件
  3. double fabs (double x);
  4. float fabs (float x);

例如:

 
  1. #include "stdio.h"
  2. #include "math.h"
  3. int main(void){
  4. double x=2.5478,y=-x;
  5. printf("x = %f fabs(x) = %f
  6. ",x,fabs(x));
  7. printf("y = %f fabs(y) = %f
  8. ",y,fabs(y));
  9. return 0;
  10. }

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

  • 根据输入数据输出该值的绝对值,效果如下: 输入:-25。 输出:25

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。


验货啦,验货啦,开始你的任务吧!

#include <stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
	//获取参数方式 scanf
    //int x  =0;
    //int y = 0;
    //scanf("%d", &x);

    //结果输出使用prinf
    //printf("%d",x);

 	// 请在此添加你的代码
    /********** Begin ********/
    int i,num;
    scanf("%d",&i);
    num = abs(i);
    printf("%d",num);
	/********** End **********/
}

第2关:求m以内的奇数之和

100

  • 任务要求
  • 参考答案
  • 评论166
  • 任务描述
  • 相关知识
    • while循环
    • do…while循环
    • for循环
  • 编程要求
  • 测试说明

任务描述

本关需要你完成一个求奇数之和的小程序。

相关知识

什么是奇数?奇数又称单数, 整数中,能被2整除的数是偶数,不能被2整除的数是奇数,奇数的个位为13579

公式:

C语言中循环控制语句主要有while循环语句、do-while循环语句和for循环语句。

while循环

基本语法:

 
  1. while(表达式){
  2. 循环体;//或者称为语句块

语义:

  1. 选判断表达式是否成立,如果成立,则跳转到2,否则跳转到3

  2. 执行循环体,执行完毕跳转到1

  3. 跳出循环,循环结束。

例如:

 
  1. //打印1-100的值
  2. #include<stdio.h>
  3. int main() {
  4. int i = 1;
  5. while( i<=100 ) {
  6. printf("%d ",i);
  7. i++;
  8. }
  9. return 0;
  10. }
 
  1. 运行结果是: 2

while循环需要注意的地方:

  • 防止死循环; 避免条件永真或者永假。如果永真则死循环;如果永假则不循环,写起来毫无意义;
  • while``循环后面,不要加分号,即在while后面不要加分号;`;

  • 不要忘记写循环的结束语句;

  • while``循环和if语句的相同点:大括号可以省略,但省略后只能控制离它最近的一条语句。也就是说当循环体只有一条语句的的时候,可以省略大括号,前提是这条语句不能是声明语句(如:int num = 10;` )。

do…while循环

基本语法:

 
  1. do{
  2. 循环体;//或者称为语句块
  3. }while(表达式);

语义:

  1. 先执行循环体,跳转到2

  2. 先判断表达式是否成立,如果成立,则跳转到1,否则跳转到3

  3. 跳出循环,循环结束。

所以do…while循环中,循环体至少会被执行1次。

do…while循环和while循环最大的区别是:do…while循环先执行循环体,再判断表达式;while循环是先判断循环体,再执行。即:

while里的循环体可能1次都不会被执行; do…while循环里面的循环体至少会被执行1次。

例如:

 
  1. #include<stdio.h>
  2. int main() {
  3. int i = 1;
  4. do{
  5. i++;
  6. printf("%d ",i);
  7. }while( i>10 );
  8. return 0;
  9. }

特别注意:do…while循环语句中在while括号后要加分号,否则会报错。

for循环

基本语法:

 
  1. for(表达式1;表达式2;表达式3){
  2. 循环体;

语义:

  1. 先执行表达式1,跳转到2

  2. 判断表达式2是否成立,如果成立,则跳转到3,否则跳转到5

  3. 执行循环体,执行完毕,跳转到4

  4. 执行表达式3,执行完毕,跳转到2

  5. 跳出循环,循环结束。

例如:

 
  1. //打印1-100的值
  2. #include<stdio.h>
  3. int main() {
  4. for(int i=1;i<=100 ;i++){
  5. printf("%d ",i);
  6. };
  7. return 0;
  8. }

其他格式:

表达式1、表达式2、表达式3都可以省略。

注意:

  • 表达式2没写的话会进入死循环;

  • 就算表达式1、表达式3不写,也要记得写分号;

  • 表达式1、表达式3可以写任意语句,需要用逗号隔开。

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

给定一个整数m,求m以内的奇数之和,并将其输出。

例如,当m=50时, 即求1+3+5+7+……+49,当m=9时,即求1+3+5+7+9。 效果如下:

输入:9。 输出:25

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。


开始你的任务吧!

#include <stdio.h>
int main()
{
	//获取参数方式 scanf
    //int x  =0;
    //int y = 0;
    //scanf("%d", &x);

    //结果输出使用prinf
    //printf("%d",x);

 	// 请在此添加你的代码
    /********** Begin *********/
    int m,i=1,num=0;
    scanf("%d",&m);
    do{
        num+=i;
        i+=2;
    }while(i<=m);
    printf("%d",num);
	/********** End **********/
}

第3关:排除此数还是输出此数

100

  • 任务要求
  • 参考答案
  • 评论166
  • 任务描述
  • 相关知识
    • 整除/符号
    • 取余%符号
    • 逻辑或||
  • 编程要求
  • 测试说明

任务描述

本关需要完成你求一个整数能被3整除或者百位数是3且输出结果。

相关知识

C语言中的运算符号分为10类:算术运算符、关系运算符、逻辑运算符、位操作运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符和特殊运算符。

本关语法涉及到算术运算符和逻辑运算符。

C语言中整除是/符号,%符号是取余运算符。

整除/符号

除法运算符/,二元运算符,具有左结合性。参与运算的量均为整型时,结果为整型,舍去小数。如果运算量中有一个为实型,结果为双精度实型。

整除运算符/需要注意的就是运算结果会自动转换为与被除数一致的数据类型。

举例说明如下:

 
  1. int a=5, b=2;
  2. float c;
  3. c = a/b;

取余%符号

求余运算符%,二元运算符,具有左结合性。参与运算的量均为整型。求余运算的结果等于两个数相除后的余数。

举例说明如下:

 
  1. int a;
  2. int a = 10%3;

逻辑或||

逻辑或||相当于生活中的“或者”,当两个条件中有任一个条件满足,“逻辑或”的运算结果就为“真”。

定义如下:

 
  1. expression1 || expression2

编程要求

在程序中输入一个整数,如果这个整数能被3整除或者百位数是3,则打印输出,否则输出“排除此数”。

效果如下: 输入:90。 输出:90

输入:110。 输出:排除此数

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。


开始你的任务吧,祝你成功!

#include <stdio.h>
int main()
{
	//获取参数方式 scanf
    //int x  =0;
    //int y = 0;
    //scanf("%d", &x);

    //结果输出使用prinf
    //printf("%d",x);

 	// 请在此添加你的代码
    /********** Begin *********/
    int n;
    scanf("%d",&n);
    if(n%3==0&&n/100==0){
        printf("%d",n);
    }else if(n/100==3){
        printf("%d",n);
    }else{
        printf("排除此数");
    }
	/********** End **********/
}

第4关:医院收费

100

  • 任务要求
  • 参考答案
  • 评论166
  • 任务描述
  • 相关知识
    • 基本类型
    • 整数类型
    • 浮点类型
  • 编程要求
  • 测试说明

任务描述

本关需要练习不同数据类型的使用、通过输入输出函数与用户进行数据交互,然后完成一个用于医院收费的小程序。

相关知识

C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。

基本类型

它们是算术类型,包括两种类型:整数类型和浮点类型。

整数类型

整数:

a. 默认为10进制 ,10 20;

b. 以0开头为8进制,045021;

c. 以0b开头为2进制,0b11101101;

d. 以0x开头为16进制,0x21458adf

例如:

 
  1. #include <stdio.h>
  2. int main()
  3. {
  4. printf("int 存储大小 : %lu
  5. ", sizeof(int));
  6. return 0;
  7. }

输出结果:

 
  1. int 存储大小 : 4

浮点类型

小数:

单精度常量:2.3f 。 双精度常量:2.3,默认为双精度。

例如:

 
  1. #include <stdio.h>
  2. #include <float.h>
  3. int main()
  4. {
  5. printf("float 存储最大字节数 : %lu
  6. ", sizeof(float));
  7. printf("float 最小值: %E
  8. ", FLT_MIN );
  9. printf("float 最大值: %E
  10. ", FLT_MAX );
  11. printf("精度值: %d
  12. ", FLT_DIG );
  13. return 0;
  14. }

输出结果:

 
  1. float 存储最大字节数 : 4
  2. float 最小值: 1.175494E-38
  3. float 最大值: 3.402823E+38
  4. 精度值: 6

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

输入所在医院费用(药品费、床位费(元/天)、住院天数),打印出应付钱数;再输入病人所付款数,打印出找零金额。

要求按照下面的运行结果编写函数代码,请注意数据类型的选择、输出格式(保留2位小数)。

效果如下:

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。


验货啦,验货啦,开始你的任务吧!

#include <stdio.h>
int main()
{
	//获取参数方式 scanf
    //int x  =0;
    //int y = 0;
    //scanf("%d", &x);

    //结果输出使用prinf
    //printf("%d",x);

 	// 请在此添加你的代码
    /********** Begin *********/ 
    double y,num,sum,t,c,k;
    scanf("%lf %lf %lf %lf",&y,&c,&t,&k);
    num=y+c*t;
    printf("请输入药品费、床位费/天、住院天数:应付款:%.2lf\n",num);
    sum=k-num;
    printf("实付款:应找零:%.2lf",sum);
	/********** End **********/
}

第5关:相反次序重新组合

100

  • 任务要求
  • 参考答案
  • 评论166
  • 任务描述
  • 相关知识
    • 基本算术运算符:
    • 算术运算符的优先级
  • 编程要求
  • 测试说明

任务描述

本关请完成将一个整数按相反次序重新组合成另一个整数输出的小程序。

相关知识

什么是算术运算符?C语言的运算符主要用于构成表达式,同一个符号在不同的表达式中,其作用并不一致。需要特别指出,在C语言标准中,并没有结合性的说法。

基本算术运算符:

+: 就是把两个数据相加,得到和;

-: 就是把两个数据相减,得到差;

*: 就是把两个数据相乘,得到积;

/: 就是把两个数据相除,得到商;

%: 就是把两个数据相除,得到余数。

算术运算符的优先级

说明:

同一优先级的运算符,运算次序由结合方向所决定。简单记就是: > 算术运算符 > 关系运算符 > && > || > 赋值运算符

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

编写一个程序,输入一个4位的整数,将其各位按相反次序重新组合成另一个整数输出。

输入值为一个4位整数,输出值也是一个4位整数,但数字顺序相。

注意:输入不足4位的整数,用0填补(例如:120012);输入超出4位整数,则截取其前4位后进行运算(例如: 1234561234)。 效果如下:

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。


开始你的任务吧!

//注意
    //1:该程序每次运行的时间必须小于200毫秒,否则会超时,程序超时将不会测试剩余的测试集
    //2:该程序每次运行使用的内存不能超过1M,否则会返回错误
    //3:该程序每次运行输出的结果最多显示1000个字符(多余的不显示),每行末尾的所有空格用□表示
#include <stdio.h>
int main()
{
	//获取参数方式 scanf
    //int x  =0;
    //int y = 0;
    //scanf("%d", &x);

    //结果输出使用prinf
    //printf("%d",x);

 	// 请在此添加你的代码
    /********** Begin *********/
    int n,x;
    int mask=1000,num=0;
    scanf("%4d",&n);
    do{
        x=n%10;
        num=x*mask+num;
        mask/=10;
        n/=10;
    }while(n>0);
    printf("请输入一个4位整数:重新组合后:%d",num);
	/********** End **********/
    return 0;
}

更多推荐

C语言基本语法入门练习题