Chuyển đổi thời gian định dạng 12 giờ thành định dạng 24 giờ bằng C

có thể bỏ một if đi không?

2 Likes

À ừ nhỉ, bỏ được, cứ nghĩ nó trong if nên chưa có giá trị nên mới tách ra


#include<stdio.h>
int main(int c,char a[]){
    if(
        scanf("%d:",&c),
        gets(a),
        a[6]=='P'&&c<12?c+=12:1,
        a[5]='\0',
        printf("%d:%s",c,a)
    ){}
}
2 Likes

Tks @Dark.Hades =)) vì chi tiết đưa biến vào argv của main =))

Code mình (124 chars):

#include<stdio.h>
char s[10],m[3];
int main(int H){
	if(scanf("%d:%s%s",&H,&s,&m)==3,printf("%d:%s",H+12*(m[0]=='P'),s)){}
}

Sao @Dark.Hades đưa char a[] vào argv của main được nhỉ, mình không quen viết C lắm @@

2 Likes

Nó là biến nhận giá trị ở lúc khởi tạo runtime.
Mình không nhầm thì chương trình/ngôn ngữ nào cũng có cái này, tiếng anh là argument thì phải:

./p.exe --help
c=2 // count của arg
a[0]=p.exe
a[1]=--help
2 Likes

Quả đề oái oăm thật :3, làm cái này thì không biết có tác dụng gì nhỉ, em thấy code của bác @sueruan012 là khó đọc lắm r, cơ mà chân thành cảm ơn các bác @sueruan012, @graktung, @MeigyokuThmn@Dark.Hades đã đóng góp ý kiến để giải bài này. Mặc dù vẫn có 1 dấu chẩm phẩy nhưng em tạm set thành answer đã :3.

p/s: Chắc em cứ truyền thống mà phang cho dễ đọc vậy, chẳng ham hố làm gì đau mắt quá (trình C của em còn cùi, em cũng mới nhập môn thôi) :((

1 Like

Thật ra làm cái này biết cho vui thôi. Hãy nghĩ đơn giản như thế này, nếu điều đó hay ho thì 90% (không phải tuyệt đối nhé) sẽ được chia sẻ lên trên Internet, mọi người được biết :smile:) Vả lại code là cần sự dễ hiểu không chỉ cho bạn mà còn người khác. Code nhiều dòng chưa biết được giỏi hay dỡ và code ít dòng cũng thế.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?