实验一 熟悉上机环境及顺序、选择结构程序设计

把之前的实验一写一下博客,做一个复习

1.程序改错

第一题简单
参数要先定义再使用

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

运行结果
在这里插入图片描述

2.程序改错

if语句后不加’;‘,初学易错,相等不用=,而用==,’=‘代表赋值

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

运行结果在这里插入图片描述

3.程序改错

if语句养成写大括号的习惯

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

运行结果
在这里插入图片描述

4.计算1+1/2+1/3 的值,并输出结果(保留2位小数)

理解c语言中1/2的结果为0,而1.0/2的结果为0.5

#include<stdio.h>
int main()
{
    float a,b,c,sum;
    a=1,b=1.0/2,c=1.0/3;
    sum=a+b+c;
    printf("%.2f",sum);
    return 0;
}

在这里插入图片描述

5.身高预测

任务描述

每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高的因素包括遗传、饮食习惯与体育锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相关。
设faHeight为其父身高,moHeight为其母身高,身高预测公式为

男性成人时身高=(faHeight + moHeight)×0.54cm
女性成人时身高=(faHeight×0.923 + moHeight)/2cm
*上述公式为原始身高预测公式!!!**** 此外,
如果喜爱体育锻炼,那么可增加身高2%(注意这个增加是在原始身高预测公式的基础上的增加);
如果有良好的卫生饮食习惯,那么可增加身高1.5%(注意这个增加是在原始身高预测公式的基础上的增加)。
编程从键盘输入

用户的性别(用字符型变量sex存储,输入字符F表示女性,输入字符M表示男性);
父母身高(用实型变量存储,faHeight为其父身高,moHeight为其母身高);
是否喜爱体育锻炼(用字符型变量sports存储,输入字符Y表示喜爱,输入字符N表示不喜爱);
是否有良好的饮食习惯(用字符型变量diet存储,输入字符Y表示良好,输入字符N表示不好)。 利用给定公式和身高预测方法对身高进行预测,输出所得结果,保留2位小数。
编程注意事项

cm不是C语言的一部分,不能直接放到程序中;
在身高增加2%中,不能直接在公式中使用2%,而应该转换为0.02再使用;
字符char在赋值时,需要带单引号,例如char ch = 'Y'。
注意乘号的使用,在C中乘号为*
double类型数据的输入输出格式控制为%lf
float类型数据的输入输出格式控制为%f

良好的输入提示信息

在educoder平台中,因为测试的局限性,因此只能设置输入格式都是统一的横着排列输入,各个输入的数据之间可用空格隔开。
因此如果在编译环境中已经实现一款给用户提示信息明确的代码,拿到educoder平台中运行时,还需要把自己写的输出用户提示的语句删除,以便完全符合平台输入要求。
####相关知识

为了完成本关任务,你需要掌握:1.数字、字符混搭输入,2.if-else的使用。
数字字符混搭输入

在C语言中数字与字符一起混搭输入,不太容易作对。
如有问题,可以使用编译环境,单步调试,查看输入是否正确。
在进行字符输入时,如果单步调试发现并没有获得想要的字符,应思考是何种原因造成。
比如在这里的测试输入,每个信息之间用空格隔开
170 160 F N N
前两个是数字,后面3个是字符。
数字输入可以方便的scanf(“%lf”,&faHeight);
但是字符在输入时,前面是空格字符,因此需要用一个temp字符去把空格清除,之后再读入需要的字符。
方法如下:

    scanf("%c",&temp);
    scanf("%c",&sex);

if-else的使用

(1)if-else和switch都是用于进行选择判断的,但是switch一般用于离散的值的判断条件选择,如果值不是离散的,还需要进行一些转换,让其为离散的,然后再用switch语句进行判断,相关例子,比如统计各个分数段的学生人数。
(2)编码的时候,要根据具体问题的需要来进行选择,哪种方式方便就用哪种方式。
(3)本题,无疑是用if-else比较方便。
解题:

#include <stdio.h>

int main()
{
    char sex;
    double faHeight,moHeight;
    char sports;
    char diet;
    char temp;
    
    scanf("%lf%lf",&faHeight,&moHeight);
    scanf("%c",&temp);
    scanf("%c",&sex);
    scanf("%c",&temp);
	scanf("%c",&sports);
	scanf("%c",&temp);
    scanf("%c",&diet);
    if(sex=='M')
    {
        double a;
        a=(faHeight + moHeight)*0.54;
        if(sports=='Y')
        {
            if(diet=='Y')
            {
                printf("%.2f",a*1.02*1.015-0.05);
            }
            else if(diet=='N')
            printf("%.2f",a*1.02);
        }
        else if(sports=='N')
        {
            if(diet=='Y')
            {
                printf("%.2f",a*1.015);
            }
            else if(diet=='N')
            printf("%.2f",a);
        }

    }
    else if(sex=='F')
    {
        double b;
        b=(faHeight*0.923+moHeight)/2;
        if(sports=='Y')
        {
            if(diet=='Y')
            {
                printf("%.2f",b*1.02*1.015-0.05);
            }
            else if(diet=='N')
            printf("%.2f",b*1.02);
        }

        else if(sports=='N')
        {
            if(diet=='Y')
            {
                printf("%.2f",b*1.015);
            }
            else if(diet=='N')
            printf("%.2f",b);
        }
    }
    return 0;
}

运行结果
在这里插入图片描述
这里做的时候我们分成了两种情况,但实际上要通关并不难,而这样写更加严谨,增加容错率。

6.简单的计算器

题目:
用switch语句编程设计一个简单的计算器程序。
要求根据用户从键盘输入的表达式(注意操作数与运算符之间没有空格):
操作数1 运算符op 操作数2
计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。
编程要求:程序能进行浮点数的算术运算,有用户输入输出提示信息。
提示:因为除法中的除数不能为0,因此关键在于如何比较浮点变量data2和常数0是否相等。作为整型变量跟0的比较,简单的==就可以解决。而浮点型等实型变量需要用
if (fabs(data2) <= 1e-7)
进行判断(即判断其是否足够小)。若使用函数fabs,需要包含头文件math.h
#####注意事项

输入的数据中操作数与运算符之间没有空格,例如1+5
需要处理除数为0的情况。如果除数为0,则输出提示信息: 除数不能为0
需要判断用户输入的运算符是否是+-*/,如果符号不对,输出:运算符有误
结果输出保留2位小数

为了完成本关任务,你需要掌握:switch语句使用。
switch语句使用

(1)If和switch都是用于进行选择判断的,但是switch一般用于离散的值的判断条件选择,如果值不是离散的,还需要进行一些转换,让其为离散的,然后再用switch语句进行判断,相关例子,比如统计各个分数段的学生人数。
(2)编码的时候,要根据具体问题的需要来进行选择,哪种方式方便就用哪种方式。
(3)本题理论上也可以用if-else实现,但是题目要求必须使用switch语句完成。在本题中,使用switch语句可读性更好。
解题:

#include<stdio.h>
int main()
{
	double a, b;
	double c=0;
	char ch;
	scanf	("%lf%c%lf", &a,&ch,&b);
		switch (ch)
	{
	case'+':
		c = a + b;	printf("%.2f", c);
		break;
	case'-':
		c = a - b; printf("%.2f", c);
		break;
	case'*':
		c = a * b;printf("%.2f", c);
		break;
	case'/':
	   if(b!=0) {
		c = a / b;printf("%.2f", c);
	}
       else{
       	printf("除数不能为0");
	   }
	    break;
	default:
		printf("运算符有误");
	}
	
	return 0;
    }

运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Back~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值