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