鱼C论坛

 找回密码
 立即注册
查看: 2749|回复: 15

[已解决]这道c语言题求大佬们指点

[复制链接]
发表于 2020-11-9 18:43:24 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
7-14 然后是几点 (15分)有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530;0 点 30 分表示为 030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。输入格式:输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530;0 点 30 分表示为 030。流逝的分钟数可能超过 60,也可能是负数。输出格式:输出四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。输入样例:1120 110输出样例:1310
最佳答案
2020-11-16 09:08:49
Screenshot_20201116_090709_com.tencent.mtt.jpg 没在电脑前,查了下以前的提交
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-9 19:05:52 From FishC Mobile | 显示全部楼层
这题我用了三个if,输出什么的都对,但是那个gsdPTA就是不给我过
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-10 08:46:56 | 显示全部楼层
北落紫霄 发表于 2020-11-9 19:05
这题我用了三个if,输出什么的都对,但是那个gsdPTA就是不给我过

看看你的代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-11 06:34:31 | 显示全部楼层

我给删了,忘了保存了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-11 06:37:07 | 显示全部楼层

我看看我能不能重打一遍
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-11 06:39:27 | 显示全部楼层
  1. #include<stdio.h>
  2. int main(){
  3.     int time,past,hour;
  4.     scanf("%d %d",&time,&past);
  5.     hour=time/100+past/60+(time%100+past%60)/60;
  6.     if (time+past<=0){
  7.         printf("0");
  8.     }
  9.     else if(time/100%60+past%60<60&&(time+past)%100>=10){
  10.     printf("%d%d",hour,time%100+past%60);    }
  11.     else if(time/100%60+past%60<60&&(time+past)%100<10){
  12.     printf("%d0%d",hour,time%100+past%60);   }
  13.     else if(time/100%60+past%60>=60){
  14.     printf("%d%d",hour,time%100+past%60-60);    }
  15.     return 0;
  16. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-11 09:40:07 | 显示全部楼层
本帖最后由 rt3 于 2020-11-11 10:56 编辑

你的代码有个错误 是 第一个 输入的 变量 即 1120 表示的应该是11点20分,所以 应该把11和20分开处理。但是 你把它当成 一个十进制数操作了。下面是我写的。
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         long a=0;
  5.         char time[5];//={'\0'};
  6.         char hour1[3];
  7.         long hour2=0;
  8.         long hour3=0;
  9.         char minute1[3];
  10.         long minute2=0;
  11.         long minute3=0;
  12.         long duration=0;
  13.         char endptr[5];
  14.         char* endptr2=&endptr;

  15. //        char ch;
  16. //        while((ch = getchar()) != '\n' && ch != EOF);
  17. //
  18.         scanf("%s %ld",&time,&duration); //接收 用户 输入
  19.        
  20.         for(long b=0;b<2;b++)hour1[b]=time[b];
  21.         hour1[2]='\0';
  22.         for(long b=0;b<2;b++)minute1[b]=time[b+2];
  23.         minute1[2]='\0';
  24.         printf("time==");
  25.         for(long b=0;b<5;b++)printf("%ld, ",(long)time[b]);
  26.         printf("time==");
  27.         for(long b=0;b<5;b++)printf("%c, ",time[b]);
  28.         putchar('\n');
  29.         printf("hour1==%s,minute1==%s.\n",hour1,minute1);
  30.         //拆分 字符串 time
  31.        
  32.         printf("duration==%ld\n",duration);
  33.         hour2=strtol(hour1,&endptr2,10);                //字符串格式 转换到 数值格式

  34.         minute2=strtol(minute1,&endptr2,10);                //字符串格式 转换到 数值格式
  35. //        printf("hour2==%ld,minute2==%ld.\n",hour2,minute2);

  36.         hour3=hour2+(minute2+duration)/60;
  37.         minute3=(minute2+duration)%60;
  38. //        printf("minute2==%ld,duration==%ld\n",minute2,duration);
  39.         //计算 结果
  40.        
  41.         printf("%ld%ld\n",hour3,minute3);
  42.     return 0;
  43. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-11 16:52:55 | 显示全部楼层
rt3 发表于 2020-11-11 09:40
你的代码有个错误 是 第一个 输入的 变量 即 1120 表示的应该是11点20分,所以 应该把11和20分开处理。但是 ...

大佬,我没认真看你的代码,毕竟它实在太长了,首先说一下你的代码对我的题来讲超纲了,其次编译就出问题了,你头文件少一个,你用了strtol函数却不包含stdlib?然后说你的指针,你把一个指针指向数组就用不着取地址符了,最后我改了这些之后,1120 110那个倒是对了,但是当小时不足十的时候就不对了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-11 19:29:34 | 显示全部楼层
本帖最后由 不二如是 于 2020-11-12 19:17 编辑

"当小时不足十的时候就不对了"这个问题从技术上说也是可以解决的。但问题是
很难帮你做事.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-12 07:10:46 From FishC Mobile | 显示全部楼层
rt3 发表于 2020-11-11 19:29
"当小时不足十的时候就不对了"这个问题从技术上说也是可以解决的。但问题是

额…你是开玩笑的是吗?这不是个免费交流网站吗?又不是csdn社区…
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-12 07:47:46 | 显示全部楼层
北落紫霄 发表于 2020-11-12 07:10
额…你是开玩笑的是吗?这不是个免费交流网站吗?又不是csdn社区…

鱼币也行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-12 20:54:39 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-15 23:04:50 | 显示全部楼层
这样的题目,看着都头晕
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-16 09:08:49 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
Screenshot_20201116_090709_com.tencent.mtt.jpg 没在电脑前,查了下以前的提交
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-16 09:11:08 From FishC Mobile | 显示全部楼层
先全部转换为分钟再转换过去
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-9 11:30:18 From FishC Mobile | 显示全部楼层
c语言都快忘完了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-4 20:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表