【PTA】5-2 下列程序读入时间数值,将其加1秒后输出,时间格式为:hh: mm: ss,即“小时:分钟:秒”,当小时等于24小时,置为0。

本文介绍了一个简单的C语言程序,该程序接收用户输入的时间格式(小时:分钟:秒),然后将秒数增加一,并处理进位情况,确保时间格式正确。当秒数达到60时,会转换成1分钟,分钟数相应加一,同样地处理小时数。

5-2

下列程序读入时间数值,将其加1秒后输出,时间格式为:hh: mm: ss,即“小时:分钟:秒”,当小时等于24小时,置为0。

#include <stdio.h>
struct
{ 
     int hour,minute,second;
}time;
int main(void)
{  
    scanf("%d:%d:%d", &time.hour, &time.minute, &time.second);
    time.second++;
    if(time.second == 60)
	{
        time.minute++; 
        time.second = 0;
        if(time.minute == 60)
		{
			time.hour++; 
			time.minute = 0;
            if( time.hour == 24) 
                 time.hour = 0; 
        }
    }
      printf ("%d:%d:%d\n", time.hour, time.minute, time.second );
      return 0;
}
### 实现格式化输出的方法 对于PTA平台上的6-1题目,实现正确的格式控制输出主要依赖于`printf()`函数的灵活应用。通过指定不同的格式化字符串来精确控制输出的内容和形式。 #### 控制台输出整数序列 当目标是按照特定模式输出一系列整数时,可以利用`printf()`中的格式化选项完成这一操作。例如,在C语言环境下,为了打印一串连续增长的自然数,可采用如下方式: ```c #include <stdio.h> int main() { for (int i = 1; i <= 9; ++i) { printf("%d ", i); } return 0; } ``` 上述代码会依次输出1至9之间的所有正整数,并且每两个数字间留有一个空格作为间隔[^1]。 #### 处理更复杂的格式需求 针对更复杂的场景——比如需要处理不同类型的数据(如浮点数、日期等),则可以通过调整`printf()`内的参数达到预期效果。下面是一个例子,展示了如何基于给定条件执行不同类型的输入输出任务: ```c #include <stdio.h> #include <string.h> void processInput(char type, ...) { va_list args; va_start(args, type); switch(type){ case 'd':{ double d = va_arg(args, double); float f1,f2,f3; f1=va_arg(args,double); f2=va_arg(args,double); f3=va_arg(args,double); printf("%5.2f %5.2f %-5.2f\n", f1,d,f3); // 右侧填充空格,左侧填充空格,直接输出 break; } case 'i':{ int a,b,c,sum; a=va_arg(args,int); b=va_arg(args,int); c=va_arg(args,int); sum=a+b+c; printf("%d\n",sum); break; } case 's':{ char str1[10],str2[10],str3[10]; strcpy(str1,(char*)va_arg(args,char*)); strcpy(str2,(char*)va_arg(args,char*)); strcpy(str3,(char*)va_arg(args,char*)); for(int j=strlen(str1)-1;j>=0;j--) putchar(str1[j]); for(int j=strlen(str2)-1;j>=0;j--) putchar(str2[j]); for(int j=strlen(str3)-1;j>=0;j--) putchar(str3[j]); putchar('\n'); break; } case 'l':{ char line[100]; strcpy(line,(char*)va_arg(args,char*)); for(int k=0;k<strlen(line);k++){ if(line[k]!=' ') putchar(toupper(line[k])); } putchar('\n'); break; } default:{ puts("**输出other**"); } } va_end(args); } int main(){ char cmd; while(scanf("%c",&cmd)!=EOF && getchar()){ switch(cmd){ case 'd': double d,f1,f2,f3; scanf("%lf%f%f%f",&d,&f1,&f2,&f3); processInput('d',d,f1,f2,f3); break; case 'i': int a,b,c; scanf("%d%d%d",&a,&b,&c); processInput('i',a,b,c); break; case 's': char s1[10],s2[10],s3[10]; scanf("%s%s%s",s1,s2,s3); processInput('s',s1,s2,s3); break; case 'l': char l[100]; gets(l); processInput('l',l); break; default: processInput(cmd); } } return 0; } ``` 这段程序能够接收多种类型的数据并根据不同情况作出响应,包括但不限于双精度实数、整型数值以及字符串的操作。特别注意的是,这里实现了对浮点数的小数位数限制、整数求和功能、字符串逆向排列显示以及将整个行转换为大写的逻辑[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值