printf 不工作(尝试了其他解决方案,仍然不工作)
printf not working (tried other solutions, still doesn't work)
好的。所以基本上,我正在尝试制作一个应用程序来检查是否有一个包含所有数字 (0-9) 的数字可以被所有数字整除。我正在使用 rand() 函数来获取数字组合,以防万一。这是我的代码(仍然不完整,我只是想看看我的代码是否能正常运行):
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int randLessThanTen(int randNum);
int main()
{
srand(time(0));
int taken[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int num = 0;
for(int i = 0; i < 9; i++)
{
int randNum = rand();
randLessThanTen(randNum);
while(taken[randNum] == 1)
{
randNum = rand();
randLessThanTen(randNum);
}
num+=randNum*(pow(10, i));
taken[randNum] = 1;
}
//wtf
printf("the number is %d/n", num);
return 0;
}
int randLessThanTen(int randNum)
{
while(randNum>9)
{
randNum = rand();
}
return randNum;
}
并且如上所述,printf() 语句不起作用。并不是没有打印数字,而是根本没有打印任何东西,甚至连字符串都没有。
我是 运行 Code::Blocks 20.03,也许这里有人可以帮助我吗?
您在 for 循环中调用了 RandlessThanTen 函数,但没有将其返回值存储在变量中。所以尝试在 for 循环中替换:
RandNum = randlessThanTen(RandNum);
现在您的 RandNum 将受到您调用的函数的影响。
taken
初始化大小为 10。
rand()
可以产生比这大得多的数字。
由于从未使用过 randLessThanTen()
的 return 值,因此您试图访问 taken[]
超出其范围的方式,这会导致您的程序在到达 printf()
.[=20 之前崩溃=]
此外,您通过生成随机数直到其中一个在您想要的范围内的方法非常耗时。
我也倾向于 modulo 10
,比如 user3386109 建议:
#include <stdio.h>
#include <time.h>
#include <math.h>
int main()
{
srand(time(0));
int taken[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int num = 0;
for(int i = 0; i < 9; i++)
{
int randNum = rand() % 10;
while(taken[randNum] == 1)
{
randNum = rand() % 10;
}
num+=randNum*(pow(10, i));
taken[randNum] = 1;
}
printf("the number is %d\n", num);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#include <time.h>
int randLessThanTen(int randNum);
int main() {
srand(time(0));
int taken[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int num = 0;
for (int i = 0; i < 9; i++) {
int randNum = rand();
randNum = randLessThanTen(randNum);
while(taken[randNum] == 1) {
randNum = rand();
randNum = randLessThanTen(randNum);
}
num += (int) randNum * (pow (10.0,(double) i));
taken[randNum] = 1;
}
//wtf
printf("the number is %d\n", num);
return 0;
}
int randLessThanTen(int randNum) {
return (randNum) % 10;
}
您需要从“randLessThanTen”函数中获取 return 并为 pow() 函数使用“#include”。
如果你懂指针,尝试在函数中使用pionter。
void randLessThanTen(int *randNum) {
*randNum = *randNum % 10;
}
好的。所以基本上,我正在尝试制作一个应用程序来检查是否有一个包含所有数字 (0-9) 的数字可以被所有数字整除。我正在使用 rand() 函数来获取数字组合,以防万一。这是我的代码(仍然不完整,我只是想看看我的代码是否能正常运行):
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int randLessThanTen(int randNum);
int main()
{
srand(time(0));
int taken[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int num = 0;
for(int i = 0; i < 9; i++)
{
int randNum = rand();
randLessThanTen(randNum);
while(taken[randNum] == 1)
{
randNum = rand();
randLessThanTen(randNum);
}
num+=randNum*(pow(10, i));
taken[randNum] = 1;
}
//wtf
printf("the number is %d/n", num);
return 0;
}
int randLessThanTen(int randNum)
{
while(randNum>9)
{
randNum = rand();
}
return randNum;
}
并且如上所述,printf() 语句不起作用。并不是没有打印数字,而是根本没有打印任何东西,甚至连字符串都没有。 我是 运行 Code::Blocks 20.03,也许这里有人可以帮助我吗?
您在 for 循环中调用了 RandlessThanTen 函数,但没有将其返回值存储在变量中。所以尝试在 for 循环中替换:
RandNum = randlessThanTen(RandNum);
现在您的 RandNum 将受到您调用的函数的影响。
taken
初始化大小为 10。
rand()
可以产生比这大得多的数字。
由于从未使用过 randLessThanTen()
的 return 值,因此您试图访问 taken[]
超出其范围的方式,这会导致您的程序在到达 printf()
.[=20 之前崩溃=]
此外,您通过生成随机数直到其中一个在您想要的范围内的方法非常耗时。
我也倾向于 modulo 10
,比如 user3386109 建议:
#include <stdio.h>
#include <time.h>
#include <math.h>
int main()
{
srand(time(0));
int taken[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int num = 0;
for(int i = 0; i < 9; i++)
{
int randNum = rand() % 10;
while(taken[randNum] == 1)
{
randNum = rand() % 10;
}
num+=randNum*(pow(10, i));
taken[randNum] = 1;
}
printf("the number is %d\n", num);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#include <time.h>
int randLessThanTen(int randNum);
int main() {
srand(time(0));
int taken[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int num = 0;
for (int i = 0; i < 9; i++) {
int randNum = rand();
randNum = randLessThanTen(randNum);
while(taken[randNum] == 1) {
randNum = rand();
randNum = randLessThanTen(randNum);
}
num += (int) randNum * (pow (10.0,(double) i));
taken[randNum] = 1;
}
//wtf
printf("the number is %d\n", num);
return 0;
}
int randLessThanTen(int randNum) {
return (randNum) % 10;
}
您需要从“randLessThanTen”函数中获取 return 并为 pow() 函数使用“#include
void randLessThanTen(int *randNum) {
*randNum = *randNum % 10;
}