头歌c语言实训项目-选择结构程序设计进阶

简介: 头歌c语言实训项目-选择结构程序设计进阶

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

目录

第1关:快递费用计算:

题目:

代码思路:

代码表示:

第2关:计算一元二次方程的根:

题目:

代码思路:

代码表示:

第3关:产品信息格式化:

题目:

代码思路:

代码表示:


第1关:快递费用计算:

题目:

本关任务:编写一个计算机快递费的程序。

上海市的某快递公司根据投送目的地距离公司的远近,将全国划分成5个区域:

快递费按邮件重量计算,由起重费用、续重费用两部分构成:

(1) 起重(首重)1公斤按起重资费计算(不足1公斤,按1公斤计算),超过首重的重量,按公斤(不足1公斤,按1公斤计算)收取续重费; (2) 同城起重资费10元,续重3元/公斤; (3) 寄往1区(江浙两省)的邮件,起重资费10元,续重4元; (4) 寄往其他地区的邮件,起重资费统一为15元。而续重部分,不同区域价格不同:2区的续重5元/公斤,3区的续重6.5元/公斤,4区的续重10元/公斤。

提示

续重部分不足一公斤,按1公斤计算。因此,如包裹重量2.3公斤:1公斤算起重,剩余的1.3公斤算续重,不足1公斤按1公斤计算,1.3公斤折合续重为2公斤。如果重量应大于0、区域编号不能超出0-4的范围。

样例输入: 4,4.5

样例输出: Price: 55.00

程序运行结果示例1:

输入:4,4.5 输出:Price: 55.00

程序运行结果示例2:

输入:5,3.2 输出: Error in Area Price: 0.00

代码思路:

这题我在第一次运行的时候出现了一条错误提示:invalid operands to binary %,意思是采用浮点模数时,二进制 % 的操作数无效。那么我们该怎么解决“续重部分不足一公斤,按1公斤计算”这个问题呢?那就要用到ceil函数了,它的头文件是<math.h>,作用是返回大于或者等于指定表达式的最小整数。有了它,就可以用“(b-1)*续重价”解决续重问题,对于整题,我的思路就是一个区一个区分开计算,虽然较为繁琐,但理解起来较为简单

代码表示:  

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main(void)
{
    /*********Begin*********/
    int a;
    float b;
    scanf("%d,%f", &a, &b);
    if (a >= 0 && a <= 4)
    {
        if (a == 0)
        {
            if (b >= 0 && b <= 1)
            {
                printf("Price: 10.00\n");
            }
            else if (b > 1)
            {
                b = ceil(b);
                float c = (b - 1) * 3.0;
                printf("Price: %.2f\n", c + 10);
            }
        }
        else if (a == 1)
        {
            if (b >= 0 && b <= 1)
            {
                printf("Price: 10.00\n");
            }
            else if (b > 1)
            {
                b = ceil(b);
                float d = (b - 1) * 4.0;
                printf("Price: %.2f\n", d + 10);
            }
        }
        else if (a == 2)
        {
            if (b >= 0 && b <= 1)
            {
                printf("Price: 15.00\n");
            }
            else if (b > 1)
            {
                b = ceil(b);
                float d = (b - 1) * 5.0;
                printf("Price: %.2f\n", d + 15);
            }
        }
        else if (a == 3)
        {
            if (b >= 0 && b <= 1)
            {
                printf("Price: 15.00\n");
            }
            else if (b > 1)
            {
                b = ceil(b);
                float d = (b - 1) * 6.5;
                printf("Price: %.2f\n", d + 15);
            }
        }
        else if (a == 4)
        {
            if (b >= 0 && b <= 1)
            {
                printf("Price: 15.00\n");
            }
            else if (b > 1)
            {
                b = ceil(b);
                float d = (b - 1) * 10.0;
                printf("Price: %.2f\n", d + 15);
            }
        }
    }
    else
    {
        printf("Error in Area\n");
        printf("Price: 0.00\n");
    }
    /*********End**********/
    return 0;
}

第2关:计算一元二次方程的根:

题目:

本关任务:根据下面给出的求根公式,计算并输出一元二次方程ax2+bx+c=0的两个实根,要求精确到小数点后4位。其中a,b,c的值由用户从键盘输入。如果用户输入的系数不满足求实根的要求,输出错误提示 "error!"。

输入:1,2,1 输出: Please enter the coefficients a,b,c: x1=-1.0000, x2=-1.0000

输入:2,1,6 输出: Please enter the coefficients a,b,c: error!

代码思路:

我认为这题的难点有两个,第一个就是是否了解sqrt开平方函数以及其需要的头文件<math.h>,第二个就是求根公式在使用的时候是否注意加括号,乘法符号是否会被省略这类细节问题。只要能解决这两个问题,这题也就能迎刃而解了

代码表示:

#include<stdio.h>
#include<math.h>
int main(void)
{
    /*********Begin*********/
    float a, b, c, x1, x2;
    scanf("%f,%f,%f", &a, &b, &c);
    x1 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
    x2 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
    printf("Please enter the coefficients a,b,c:\n");
    if ((b * b - 4 * a * c) >= 0)
    {
        printf("x1=%.4f, x2=%.4f\n", x1, x2);
    }
    else
    {
        printf("error!\n");
    }
    /*********End**********/
    return 0;
}

第3关:产品信息格式化:

题目:

本关任务:编写一个程序, 对用户录入的产品信息进行格式化。

样例输入:  385

      12.5

      12/03/2015

样例输出:  Enter item number: Enter unit price:

      Enter purchase date (mm/dd/yy):

      Item Unit Purchase

      385 $ 12.50 12032015

代码思路:  

这题只需要根据题目提示,将所需内容输入输出即可

代码表示:

#include<stdio.h>
int main(void)
{
    /*********Begin*********/
    int a, b, c, d;
    float i;
    scanf("%d", &a);
    scanf("%f", &i);
    scanf("%d/%d/%d", &b, &c, &d);
    printf("Enter item number:\n");
    printf("Enter unit price:\n");
    printf("Enter purchase date (mm/dd/yy):\n");
    printf("Item Unit Purchase\n");
    printf("%-9d$ %-9.2f%02d%02d%02d\n", a, i, b, c, d);
    /*********End**********/
    return 0;
}


相关文章
|
2月前
|
网络协议 编译器 Linux
【C语言】结构体内存对齐:热门面试话题
【C语言】结构体内存对齐:热门面试话题
|
1月前
|
存储 搜索推荐 算法
【数据结构】树型结构详解 + 堆的实现(c语言)(附源码)
本文介绍了树和二叉树的基本概念及结构,重点讲解了堆这一重要的数据结构。堆是一种特殊的完全二叉树,常用于实现优先队列和高效的排序算法(如堆排序)。文章详细描述了堆的性质、存储方式及其实现方法,包括插入、删除和取堆顶数据等操作的具体实现。通过这些内容,读者可以全面了解堆的原理和应用。
68 16
|
28天前
|
C语言 Windows
C语言课设项目之2048游戏源码
C语言课设项目之2048游戏源码,可作为课程设计项目参考,代码有详细的注释,另外编译可运行文件也已经打包,windows电脑双击即可运行效果
32 1
|
2月前
|
编译器 C语言 Python
C语言结构
C语言结构
18 0
|
3月前
|
存储 算法 C语言
数据结构基础详解(C语言): 二叉树的遍历_线索二叉树_树的存储结构_树与森林详解
本文从二叉树遍历入手,详细介绍了先序、中序和后序遍历方法,并探讨了如何构建二叉树及线索二叉树的概念。接着,文章讲解了树和森林的存储结构,特别是如何将树与森林转换为二叉树形式,以便利用二叉树的遍历方法。最后,讨论了树和森林的遍历算法,包括先根、后根和层次遍历。通过这些内容,读者可以全面了解二叉树及其相关概念。
|
3月前
|
存储 C语言
C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。
|
3月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
110 4
|
3月前
|
存储 机器学习/深度学习 C语言
数据结构基础详解(C语言): 树与二叉树的基本类型与存储结构详解
本文介绍了树和二叉树的基本概念及性质。树是由节点组成的层次结构,其中节点的度为其分支数量,树的度为树中最大节点度数。二叉树是一种特殊的树,其节点最多有两个子节点,具有多种性质,如叶子节点数与度为2的节点数之间的关系。此外,还介绍了二叉树的不同形态,包括满二叉树、完全二叉树、二叉排序树和平衡二叉树,并探讨了二叉树的顺序存储和链式存储结构。
|
3月前
|
存储 C语言
C语言程序设计核心详解 第九章 结构体与链表概要详解
本文档详细介绍了C语言中的结构体与链表。首先,讲解了结构体的定义、初始化及使用方法,并演示了如何通过不同方式定义结构体变量。接着,介绍了指向结构体的指针及其应用,包括结构体变量和结构体数组的指针操作。随后,概述了链表的概念与定义,解释了链表的基本操作如动态分配、插入和删除。最后,简述了共用体类型及其变量定义与引用方法。通过本文档,读者可以全面了解结构体与链表的基础知识及实际应用技巧。
|
10天前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
29 10