c-我自己数组中的随机整数AND字符



所以我试图创建我的第一个程序,但我被卡住了。基本上,我想做的是创建一个包含字符串/字符和整数的数组,然后我希望程序可以随机打印出它喜欢的任何内容。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {    
    srand(time(NULL));
    int *test[] = { 1, 2, 3, 444, 5, 'Hi', 7 };
    int i;
    int j;
    for (j = 0; j < 7; j++) {
        printf("%dn", rand(*test));
    }
    return(0);
}

由于某种原因,这无法正常工作,因为我得到了2299717678等的输出

我的第二个问题是代码的另一部分。我正在尝试打印整个数组,我希望它同时打印为字符和整数。

for (i = 0; i < 7; i++) {
    printf("n%dn", test[i]);
}

这里我得到了所有的整数,但字符串"Hi"是ASCII值。有没有什么方法可以在数组中同时包含整数和字符,并在同一个循环中打印出来?另外,为什么我只能在这个数组中使用一个短字符串,而不能使用"HelloTherefriend"之类的东西?

请澄清一下,因为这对我有很大帮助!

不能在C数组中混合不同类型。数组只能包含相同类型的值。您可以尝试使用union的解决方案,但这可能超出了您的技能水平。最好改变你的方法。试试这个:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {    
    const char *test[] = { "1", "2", "3", "444", "5", "Hi", "7" };
    int i, j;
    srand(time(NULL));
    for (j = 0; j < 7; j++) {
        if (isdigit((unsigned char)*test[i]))
            printf("%dn", rand() % atoi(test[j]));
        else
            printf("%sn", test[i]);
    }
    return 0;  // no need for parentheses here
}

请注意,rand实际上不接受任何参数。

最新更新