如何在终端中用c语言打印集合中的随机字母?

如何在终端中用c语言打印集合中的随机字母?,c,arrays,random,printf,C,Arrays,Random,Printf,我想每2秒钟在终端上打印一个随机的音符,在我的陶笛上练习。这组音符是(A、B、C、D、E、F和G),这是我需要帮助的代码,因为我不熟悉编码 #包括 #包括 int main(){ 字符A、B、C、D、E、F、G; 字符注释[7]={A,B,C,D,E,F,G}; 而(1){ printf(“%c\n”,注释); 睡眠(2); } } 我在编译时遇到这个错误 警告:格式“%c”要求参数类型为“int”,但参数2的类型为“char*”[-Wformat=] printf(“%c\n”,注释)

我想每2秒钟在终端上打印一个随机的音符,在我的陶笛上练习。这组音符是(A、B、C、D、E、F和G),这是我需要帮助的代码,因为我不熟悉编码


#包括
#包括
int main(){
字符A、B、C、D、E、F、G;
字符注释[7]={A,B,C,D,E,F,G};
而(1){
printf(“%c\n”,注释);
睡眠(2);
}
}

我在编译时遇到这个错误

警告:格式“%c”要求参数类型为“int”,但参数2的类型为“char*”[-Wformat=]
printf(“%c\n”,注释)

当我每2秒将printf中的%c更改为终端“@”中的%s时,我做错了什么? 对于我问题的另一部分,如何添加打印随机便笺
我需要添加哪些代码

您不需要单独声明
char
变量,只需使用所需的注释初始化数组即可

然后,为了记第一个笔记,你需要做
笔记[0]
,第二个
笔记[1]
,第三个
笔记[2]
,…,最后一个
笔记[sizeOfArray-1]
。因此,一般来说,您可以通过执行
notes[i]
来访问数组的第i个元素,其中索引从0开始

因此,您不能执行
printf(“%c\n”,notes)
,因为
%c
需要一个字符,而
notes
是一个字符数组(可以说是一个sting)。如果使用
%s
,它将打印整个字符串,但我们不希望这样

如果要打印数组的第一个字符,我们将执行以下操作:

printf("%c\n", notes[0]);
现在,我们想要随机访问数组,因此我们不想要0,而是随机的,它将在允许的范围内(我们必须小心不要超出范围)。所以,这将是一件好事:

printf("%c\n", notes[randomIndex]);
您可以用一个函数调用替换该
randomIndex
,该函数调用将返回一个随机索引,就像我下面提到的
randomRange()
一样

例如:

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <unistd.h>

int randomRange(int min, int max)
{
    return ( rand() % ( max - min + 1 ) ) + min;
}

int main(void)
{
    srand( (unsigned int)time ( NULL ) );
    const int size = 7;
    char notes[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G' };
    for(int i = 0; i < 5; ++i) {
        printf("%c\n", notes[randomRange(0, size - 1)]);
        sleep(2);
    }
    return 0;
}

查找
srand
rand
更改
char注释[7]={A,B,C,D,E,F,G}
to
char notes[]={“ABCDEFG”
一旦你知道如何使用rand,初始化一个变量i,该变量获取0到6之间的随机数,以notes[i]的形式访问数组为什么要在
C
中使用它?几乎任何其他流行语言都会使这变得更容易。非故意双关语-注意变量A..G未初始化,因此当你用它们的值初始化
notes
数组时,你使用的是不确定的值。这不好。你真的不需要单独的v变量。您确实需要使用
rand()
,也可能需要使用
srand()
,但仅限于-或等效的东西来生成新值。您将字符数组(等效地,指向
char
)传递给
printf()
;你告诉它你要通过一个
字符
。当你撒谎的时候事情不太好。谢谢你帮了我很多忙,我会研究所有这些代码(这是我第一次看到它们)
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <unistd.h>

int randomRange(int min, int max)
{
    return ( rand() % ( max - min + 1 ) ) + min;
}

int main(void)
{
    srand( (unsigned int)time ( NULL ) );
    const int size = 7;
    char notes[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G' };
    for(int i = 0; i < 5; ++i) {
        printf("%c\n", notes[randomRange(0, size - 1)]);
        sleep(2);
    }
    return 0;
}
D
F
A
G
G