// 编写一个程序, 创建两个线程, 一个线程负责打印奇数, 另一个线程负责打印偶数, 要求打印的结果为1、2、3、4、5、6..., 直到指定的最大值。 #include #include #include void *printOdd(void *data) // 打印奇数 { int *n = (int *)data; for (int i = 1; i <= *n; i++) { usleep(100 * 1000); // 睡眠 0.1 秒 if (i % 2 == 1) { printf("%d", i); if (i != *n) // 不是最后一个字符,则追加'、' printf("、"); else if (i == *n) // 到最后一个字符,则追加'\n'换行 printf("\n"); fflush(stdout); } } return NULL; } void *printEven(void *data) // 打印偶数 { int *n = (int *)data; for (int i = 1; i <= *n; i++) { usleep(100 * 1000); // 睡眠 0.1 秒 if (i % 2 == 0) { printf("%d", i); if (i != *n) printf("、"); else if (i == *n) printf("\n"); fflush(stdout); } } return NULL; } int main(int argc, char const **argv) { int *n; printf("请输入最大值: "); fflush(stdout); scanf("%d", n); pthread_t tid1, tid2; pthread_create(&tid1, NULL, printOdd, (void *)n); pthread_create(&tid2, NULL, printEven, (void *)n); pthread_join(tid1, NULL); pthread_join(tid2, NULL); return 0; }