C语言第二篇:分支程序设计(正差值、三数最大值、发工资)

项目一:正差值

1.1 源代码

/*
*Copyright (c)2016,刘兵马俑
*All rights reserved.
*文件名称:main.c
*作    者:刘兵马俑
*完成日期:2016/03/16
*版 本 号:v1.0
*问题描述:给定两个正整数,求出两数的正差值并输出
*程序输出:正差值
*/
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,b,sub,tmp;
    printf("请输入两个正整数:");//调程序时发现原来bug源于分号“;”我输成汉语模式下的了
    scanf("%d %d",&a,&b);
    if(a<b)
    {
        tmp=a;
        a=b;
        b=tmp;
    }
    sub=a-b;
    printf("这两个正整数的正差值为:%d\n",sub);
    return 0;
}


1.2 运行结果



1.3 bug调试

第一遍运行时,报错了,提示如下:

经过百度,得到了如下解释:

error243——代表编译器在编译源文件时遇到了不可识别的非法字符。其值为ascii码值243。
这一个值并不在合法的英文字符范围(0~127)范围内,所以一般都是由于误输入造成的。
出现这类问题时,需要根据提示错误的行数,找到对应行,然后重点查找以下几个方面:
1 是否存在汉字。
大多数的C编译器并不识别汉字,所以变量名中不要使用汉字。
2 是否存在汉语标点。
这种情况是最常见的。C语言要求所有的符号必须是英文半角符号,当有中文标点符号出现时,就会有此类错误出现,比如逗号应为',' 而不能是','。
3 是否有全角英文字符。
在C中,全角字符同样是非法的,比如a写作a。
对于这一点,需要注意的是全角的空格,由于空格的不可见性,全角空格比较难查,当无法查到有显式的错误符号时,可以尝试删除所有空格,重新编译。



项目二:三数最大值

2.1 源代码

/*
*Copyright (c)2016,刘兵马俑
*All rights reserved.
*文件名称:main.c
*作    者:刘兵马俑
*完成日期:2016/03/16
*版 本 号:v1.0
*问题描述:求三个整数中的最大值
*程序输出:最大值
*/
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a=0,b=0,c=0,max=0;
    printf("请输入三个整数:");
    scanf("%d %d %d",&a,&b,&c);//我写成了<span style="font-family: Arial, Helvetica, sans-serif;">scanf("%d %d &d",&a,&b,&c);   </span><span style="font-family: Arial, Helvetica, sans-serif;">把%写成了&,导致c没有接收到到来自键盘的输入</span>

    //先求出a和b的大值
    if(a>b)
    {
        max=a;
    }
    else
    {
        max=b;
    }
    //求出c和max中的大值
    if(c>max)
    {
        max=c;
    }
    printf("这三个正整数中的最大值为:%d\n",max);
    return 0;
}


2.2 运行结果


2.3 bug调试

还是出了个警告,提示为:


我写成了<span style="font-family: Arial, Helvetica, sans-serif;">scanf("%d %d &d",&a,&b,&c);   </span><span style="font-family: Arial, Helvetica, sans-serif;">把%写成了&,导致c没有接收到到来自键盘的输入</span>
拼写错误



项目三:发工资

3.1 源代码

/*
*Copyright (c)2016,刘兵马俑
*All rights reserved.
*文件名称:main.c
*作    者:刘兵马俑
*完成日期:2016/03/16
*版 本 号:v1.0
*问题描述:按工作时间发工资
*程序输出:本月工资
*/
#include <stdio.h>
#include <stdlib.h>

int main( )
{
    int time,salary;
    printf("Please enter working hours:");
    scanf("%d",&time);
    //标准是每小时制20元
    if(time<=40)
        salary=20*time;
    //若员工周工作时间超过40小时,超出部分每小时30元
    else
        salary=20*40+30*(time-40);
    printf("salary is %d RMB.\n",salary);
    return 0;
}


运行结果


3.3 bug调试



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值