我第一次独立用c完成了一个题目

刚上大学没多久,专业是软件工程,c老师上课讲的我也都能听懂,但一到实验课我就无从下手,一度觉得自己不适合学计算机,所以开始有了摆烂的心态。

昨天下午三点多,我室友发了一道题目给我,是她朋友的作业,让我看看会不会。秉着试一试的想法,我开始研究起了题目。

题目:# 火车站对乘客退票收取一定的费用,收费的方法是:按票价每10元(不足10元按10元计算)收2元,2元及2元以下的不退,请实现手动输入票价,计算乘客的应退金额并输出

看完了题目,我很快有了思路,拿起了铅笔和草稿纸演算,再打开电脑vs把代码敲上去,期间还看了一下老师上课讲的笔记,最终写下以下代码

// 火车站对乘客退票收取一定的费用,收费的方法是:按票价每10元(不足10元按10元计算)
//收2元,2元及2元以下的不退,请使用手动输入票价,计算乘客的 应退金额并输出。

#include<stdio.h>
#include<windows.h>
void main()
{
 
 double y,x,n;
 printf("请您输入票价:");
 scanf("%lf", &x);
 y = x / 10;
 if ((int)x % 10 == 0)
 {
  n = x-2 * y;
  printf("应退金额为:'%lf'", n);
 }
 else if ((int)x % 10 != 0)
 {
  n = x-2 *(y+1);
  printf("应退金额为:'%lf'", n);
 }
 else if (x <=2)
 {
  printf("暂不支持退票");
 }
 system("pause");
}

我激动的开始运行,如果成功的话,这将是我大学写出来的第一个代码,但结果是运行失败。

我想了很久也没想出来错在哪里,应该怎么改,于是我鼓起勇气把代码发在了csdn提问里,只有一个人回应了我,但并没有解决问题。

于是我再一次鼓起勇气把代码发给了c老师询问,但过了很久也没回我,我又自己看了看,觉得自己少了个条件,所以在代码的末尾又加上了一步。

else if(x>2 && x<10)

printf("应退金额为:10");

我又一次心潮澎湃的开始运行,但又一次的失败了。

我大概知道不是函数的问题,而是格式的问题,我翻了老师讲的笔记,又在csdn里找输出格式,遗憾的是依旧没有解决问题,所以我又开始了摆烂。

就在今天晚上,我的室友又开始研究起了那道题,想着反正也无聊,打开再试试吧。

昨天在csdn回答我的那哥们让我把报错贴出来,我刚截完图准备贴出来的时候瞟了一眼,看到了一个关键字scanf_s,突然想起来老师上课时说过vs最近几年的版本中scanf的格式要写成scanf_s,但因为我用的2015版,之前跟着老师写的代码一直用的scanf也正常运行了,就没在意。

我试了试把scanf改为scanf_s,由于多次运行失败,我的期待已经没有刚开始这么高了,但出乎意料的是它成功了,我看着屏幕上的“请您输入票价:”愣了一下,赶紧随便输了个数字,答案是对的,但数字后面跟着很多的.0000000,并且居然出现了负数,我又把数据类型全部改成了int,输出类型也改为了%d,试了很多组数据,都是对的,我有了满满的成就感。

写完发现我室友还在研究,我就自豪的告诉她我写出来了,她过来试了几组数据,说了一句“还真是对的”,开始研究起了我的代码,不一会她指着我最后加上去的那个条件说,“这个一步写错了吧,虽然答案是对的,但是好多余”,我仔细看了一下题目,“不足十元按十元来算”,也就是2-10元票价,都算10元,最后只扣费2元,而我的代码意思则为2-10元都退费10元。

意识到错误,我默默地删除了这两行代码,暗骂自己当时脑子真是抽了。

我第一次写成功代码历程就是这样,最终代码是这样的:


/* 火车站对乘客退票收取一定的费用,收费的方法是:按票价每10元(不足10元按10元计算)
收2元,2元及2元以下的不退,请使用手动输入票价,计算乘客的 应退金额并输出。*/

#include<stdio.h>
#include<windows.h>
void main()
{
    
    int y,x,n;
    printf("请您输入票价:");
    scanf_s("%d", &x);
    y = x / 10;
    if (x % 10 == 0)
    {
        n = x-2 * y;
        printf("应退金额为:%d", n);
    }
    else if (x % 10 != 0)
    {
        n = x - 2 * (y + 1);
        printf("应退金额为:%d", n);
    }    
    else if (x <=2)
        printf("暂不支持退票");
    system("pause");
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值