所以我试图创建我的第一个程序,但我被卡住了。基本上,我想做的是创建一个包含字符串/字符和整数的数组,然后我希望程序可以随机打印出它喜欢的任何内容。
#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);
}
由于某种原因,这无法正常工作,因为我得到了22997
、17678
等的输出
我的第二个问题是代码的另一部分。我正在尝试打印整个数组,我希望它同时打印为字符和整数。
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
实际上不接受任何参数。