如何在终端中以c语言打印一组随机字母?

如何在终端中以c语言打印一组随机字母?

问题描述:

我想在终端上每2秒打印一次随机音乐笔记,以在我的ocarina上进行练习。音乐笔记的集合是(A,B,C,D,E,F和G),这是我需要帮助的代码,因为我是编码新手。如何在终端中以c语言打印一组随机字母?


#include <stdio.h> 
    #include <unistd.h> 
    int main(){ 
       char A, B, C, D, E, F, G; 
       char notes[7] = { A, B, C, D, E, F, G }; 

       while (1) { 

         printf("%c\n", notes); 
         sleep(2); 

         } 
    } 

编译时我得到这个错误。

warning:format ‘%c’ expects argument of type ‘int’, but argument 2 has type ‘char*’ [-Wformat=] printf("%c\n", notes);

当我改变的printf的%C到%s所有我在终端“@”每2秒搞定,我究竟做错了什么? 我的问题的另一部分如何添加打印散记 我需要添加哪些代码?

+4

查一查'srand'和'rand' –

+2

变化'炭笔记[7] = {A,B,C,d,E, F,G};'到'炭笔记[] = {“ABCDEFG”;' –

+1

,一旦你找出如何使用RAND,初始化变量i,其获取阵列音符之间0和6访问随机数[I ] –

你并不需要单独申报char变量,只是你想要的音符初始化数组。

然后,为了采取的第一个音符,你需要做的notes[0],第二notes[1],第三notes[2],...,以及最后notes[sizeOfArray - 1]。因此,在一般情况下,你做notes[i]访问数组的第i个元素,其中索引从0

所以开始,你不能这样做printf("%c\n", notes);,因为%c预计单个字符,而notes是字符数组(你可以说)。如果您使用%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; 
} 

输出:

D 
F 
A 
G 
G 
+1

谢谢你帮了我很多学习后,学习编程, ,我将研究所有这些代码(即第一次我看到他们) – badboys

+0

如何接受的答案我没有给你+1 – badboys