c语言生成1 100随机数求和,c语言 产生1~100随机数,输入一个数字,和第x个随机数一致的话,计算1~x个随机数的和...

满意答案

00e27ab806e4881f8254fe7ae8741834.png

ftgwvl

2016.12.01

00e27ab806e4881f8254fe7ae8741834.png

采纳率:50%    等级:12

已帮助:8609人

12345678910111213141516171819202122232425#include\#include#includemain(){    int i, a[50], n, sum = 0;    srand((unsigned) time(NULL));    for(i=0; i<50; i++){        a[i] = rand()%100+1; // 要将这些随机数保存起来        printf("%3d", a[i]);      }    printf("\n");    // 输入一个数    scanf("%d", &n);    // 和产生的随机数进行比较,直到遇到相等的结束    for(i = 0; i = 0)            sum += a[i--];        printf("%d\n", sum);    }    else printf("没有与%d一致的随机数\n", n);}追问: 谢谢

但是运行了下 说

15行 for(i = 0; i < 50 && n != a[i]; i++); for附近

有错误

怎么改一下比较好呢?

追答:是编译时报的错吗?

看看for语句后面的分号没少吧?或者前面少分号?将错误的详细信息描述一下。

我编译运行都正常

追问: 我貌似题目没描述清楚

题目要求的是无限生成1~100之间的数(不用显示),然后输入一个数,和随机数第x个一致的话,去计算1~x的和,所以不会出现没有数的情况

追答:不可能是无限生成,内存不是无限的,只能改为先输入一个数,然后再循环生成随机数,直到等于之前输入的数为止

main()

{

int i=1, a, n, sum = 0;

// 先输入一个数

scanf("%d", &n);

// 和产生的随机数进行比较,直到遇到相等的结束

srand((unsigned) time(NULL));

do {

a = rand()%100+1;

sum += a;

i++;

} while(a != n);

printf("第1到第%d个随机数的和是:%d\n", i, sum);

}

追问: 谢谢,就是这样,还有个小问题,如何让他可以不直接结束,可以多次输入结果,

然后在那个黑色的运行框里按ctrl+z结束?

貌似按ctrl+z结束的语句貌似是 while(scanf("%d",&n)!=EOF){

追答:这样改也可以:

main()

{

int i, a, n, sum;

srand((unsigned) time(NULL));

while(scanf("%d", &n) == 1) {

i = 1;

sum = 0;

do {

a = rand()%100+1;

sum += a;

i++;

} while(a != n);

printf("第1到第%d个随机数的和是:%d\n", i, sum);

}

}

00分享举报

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值