如何在终端中用c语言打印集合中的随机字母?
我想每2秒钟在终端上打印一个随机的音符,在我的陶笛上练习。这组音符是(A、B、C、D、E、F和G),这是我需要帮助的代码,因为我不熟悉编码如何在终端中用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”,注释)
#包括
#包括
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}
tochar 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