一、题目描述:
两个线程分别打印26个英文字母的元音字母和辅音字母,分别按照字母序输出。
二、解题思路:
(1) 如果要求输出一行
感觉看代码都可以看明白了…
(2)如果要求输出两行
由于线程之间共享全局变量,所以可以将26个字母保存到一个全局数组中,并且保存当前访问到数组元素的下标。然后再创建两个数组分别保存元音字母和辅音字母,不同的线程添加不同类型的字母到对应的字母表中,最后遍历打印元音字母表和辅音字母表即可。
代码:
///
// @title 按字母序同时输出元音字母和辅音字母(输出一行)
// @author 分时天月 on 2019/6/28
///
#include <stdio.h>
#include <pthread.h>
char pool[27] = "abcdefghijklmnopqrstuvwxyz";
int index = 0;
void* PrintVowels(void* arg){
while(1){
if(index <= 27){
switch(pool[index]){
//如果pool中当前元素为元音字母,则添加到元音字母数组中
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
printf("%c", pool[index++]);
fflush(stdout);
break;
}
}else{
break;
}
}
return