Re: [問題] 九九乘法表不用迴圈是叫我直接從1列到81?

作者: Schottky (順風相送)   2018-08-03 02:43:07
我知道這樣子程式跑得慢了點,但是大家是在斯文寫考卷又不是在火拚對吧
一秒印一行,大不了 64 秒也是印得完,而且都在睡也沒浪費 CPU time
啊就真的沒有用到迴圈,我用 alarm() 去推動也是會動
最後面用 getchar() 來等待,原因是 sleep() 會被 signal 打斷,
好死不死 alarm() 就是使用 SIGALRM,這樣不用 loop 沒辦法繼續睡到飽。
$ cat alarm.c
/* https://ideone.com/yz26vP */
#include <stdio.h>
#include <signal.h>
#include <time.h>
#include <unistd.h>
int n=0;
void beep(int sig)
{
printf("%d x %d = %d\n", n/8+2, n%8+2, (n/8+2)*(n%8+2));
n++;
if (n<64) { alarm(1); } /* rearm alarm */
}
int main(void)
{
signal(SIGALRM, beep);
alarm(1);
printf("Press ENTER to stop the program.\n");
getchar();
return 0;
}
$ gcc alarm.c
$ ./a.out
Press ENTER to stop the program.
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27
4 x 2 = 8
4 x 3 = 12
4 x 4 = 16
4 x 5 = 20
4 x 6 = 24
4 x 7 = 28
4 x 8 = 32
4 x 9 = 36
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
6 x 2 = 12
6 x 3 = 18
6 x 4 = 24
6 x 5 = 30
6 x 6 = 36
6 x 7 = 42
6 x 8 = 48
6 x 9 = 54
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
8 x 2 = 16
8 x 3 = 24
8 x 4 = 32
8 x 5 = 40
8 x 6 = 48
8 x 7 = 56
8 x 8 = 64
8 x 9 = 72
9 x 2 = 18
9 x 3 = 27
9 x 4 = 36
9 x 5 = 45
9 x 6 = 54
9 x 7 = 63
9 x 8 = 72
9 x 9 = 81

Links booklink

Contact Us: admin [ a t ] ucptt.com