首页 > 其他分享 >C语言解题 || 牛牛的时钟

C语言解题 || 牛牛的时钟

时间:2024-02-07 20:33:04浏览次数:19  
标签:hour 牛牛 ++ C语言 60 int second 解题 minute

题目:

描述

牛牛在午夜12点(0点0分0秒)正在思考,在 t 秒之后是什么时间。他思考了 n 次这个问题。

输入描述:

第一行输入一个正整数 n。

第二行输入 n 个正整数 t ,表示 t 秒之后。    

输出描述:

输出 n 行,每行输出 t 秒之后的时间。

例:

//输入
4
60 61 1 2
  
//输出
0 1 0//表示60秒之后是0点1分0秒
0 2 1//表示再过61秒之后是0点2分1秒
0 2 2//...
0 2 4

实现思想:

因为输入的是秒数,所以我们将所有数据都存到秒中。

然后进循环,秒数每至60,分数+1,秒数-60,以此类推。

代码实现:

1.利用结构体,输入时直接计算、打印结果,且不存储数据

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

//存放时分秒
struct Time
{
	int hour;
	int minute;
	int second;
};

int main()
{
	int i = 0;
	int n = 0;
	int sum = 0;
	int tem_second = 0;
	
	struct Time s = { 0 };

	scanf("%d", &n);

	for (i = 0; i < n; i++)
	{
		scanf("%d", &tem_second);
		
    //直接计算此次时间
		s.second += tem_second;
		while (s.second >= 60)
		{
			s.second -= 60;
			s.minute++;
		}
		while (s.minute >= 60)
		{
			s.minute -= 60;
			s.hour++;
		}

		printf("%d %d %d\n", s.hour, s.minute, s.second);
	}

	return 0;
}

2.利用动态开辟空间,存放多组数据,然后集中计算输出

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <assert.h>
#include <malloc.h>

int main()
{
	int n = 0;
	int* p = NULL;
	int i = 0;
	int hour = 0;
	int minute = 0;
	int second = 0;

	scanf("%d", &n);

	p = (int*)calloc(n, sizeof(int));

	if (p == NULL)
	{
		perror("calloc");
		return 1;
	}

	//输入
	for (i = 0; i < n; i++)
	{
		scanf("%d", p + i);
	}

	//计算
	for (i = 0; i < n; i++)
	{
		second += *(p + i);

		while (second >= 60)
		{
			second -= 60;
			minute++;
		}
		while (minute >= 60)
		{
			minute -= 60;
			hour++;
		}

		printf("%d %d %d\n", hour, minute, second);
	}

	free(p);
	p = NULL;

	return 0;
}

运行结果:

C语言解题 || 牛牛的时钟_代码人生

标签:hour,牛牛,++,C语言,60,int,second,解题,minute
From: https://blog.51cto.com/u_16509575/9640011

相关文章

  • C语言解题 || 逼近π
    题目:利用公式求m的近似值,直到发现某一项的绝对值小于10的-10次方为止(该项不累加)代码实现:#include<stdio.h>intmain(){ longdoublepi=0; longdoublesum=0; inti=0;//分母位 ints=0;//符号位 s=1;//符号起始为正 for(i=1;1.0/i>=10e-10;i+=......
  • C语言解题 || 调整数列
    题目:有n个整数,使其前面各数顺序向后移m个位置,移出的数再从头移入,使得最后m个数变成前面m个数。例:设n为6,m为2,当n个数为{1,2,3,4,5,6},函数使之变为{5,6,1,2,3,4}编写一个函数move,实现以上功能,该函数的声明如下:voidmove(int*x,intn,intm)实现思想:拿出最后一个数,然后其他数字......
  • C语言解题 || 计算数字矩阵的2条对角线之和
    题目:写一个函数calc_matrix(intn)实现如下功能:先输入整数n,然后输入nn个整数,构成nn矩阵,计算对角线上的数之和,并输出该和。例如:先输入3,然后输入1,2,3,4,5,6,7,8,9对角线上是数之和为:1+5+9+3+7=25。写出完整的程序代码,在main函数中调用上述函数calc_matrix题目分析:通过研究数......
  • 牛牛的等差数列(树状数组,区间加等差数列、区间求和)
    https://ac.nowcoder.com/acm/contest/5157/C区间加等差数列,区间求和树状数组,二阶差分\(b_i=a_i-a_{i-1}\)\(c_i=b_i-b_{i-1}\)\[\sum_{i=1}^na_i=\sum_{i=1}^n\sum_{j=1}^ib_j=\sum_{i=1}^n\sum_{j=1}^i\sum_{k=1}^jc_k\\=\sum_{k=1}^nc_k\sum_{i,j}[k\......
  • 探索C语言结构体:编程中的利器与艺术
    ✨✨欢迎大家来到贝蒂大讲堂✨✨......
  • 探索C语言结构体:编程中的利器与艺术
    ✨✨欢迎大家来到贝蒂大讲堂✨✨......
  • (C语言)代码学习||2024.2.6||题目是codewars上的【 IP Validation】
    C语言#sscanf#代码学习#codewars题目链接:IPValidation|Codewars代码如下:#include<stdio.h>intis_valid_ip(constchar*addr){unsignedn[4],i,nc;//Mustbe4integersseparatedbydots:if(sscanf(addr,"%d.%d.%d.%d%n",&n[0],&n......
  • C语言解题 || 箭型图案
    题目:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*"组成的箭形图案。输入描述:本题多组输入,每行个整数(2~20)。输出描述:针对每行输入,输出用“”组成的箭形。代码实现:#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intmain(){ intinput=......
  • C语言解题 || 公务员面试
    题目:公务员面试现场打分。有7位考官,从键盘输入若干组成绩,每组7个分数(百分制),去掉一个最分和一个最低分,输出每组的平均成绩。(注:本题有多组输入)输入描述:每一行,输入7个整数(0~100),代表7个成绩,用空格分隔。输出描述:每一行,输出去掉最高分和最低分的平均成绩,小数点后保留2位......
  • C语言学习12
    函数的递归例子此程序只能倒着打印,是不行的函数的递归,先递后归补充知识点:例子不创建临时变量输出字符串长度但是所以递归思想题目:正解疑问:......