【问题标题】:Why I'm getting wrong symbols? C++为什么我得到错误的符号? C++
【发布时间】:2014-04-28 17:44:00
【问题描述】:

我需要 ASCII 范围内的随机符号

http://i.imgur.com/ZeNZa8b.jpg

但我得到的是一些奇怪的符号。为什么?

http://i.imgur.com/XxyfMV3.jpg

#include <iostream>
#include <stdio.h>
#include <time.h>
using namespace std;

int main()
{
    char k;
    int i;
    srand(time(0));
    for (i = 1; i < -10; i++)
    {
        k=(rand() % 33) + 15;
        printf("%c", k);
    }
    return 0;
}

【问题讨论】:

  • 为什么这个问题被否决了?
  • @Grammin:可能是因为这是一个非常基本的问题。

标签: c++ random symbols


【解决方案1】:

好的。你需要更好地理解 mod:给你

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
main()
{
    char k;
    int i;
    srand(time(NULL));
    for(i = 1; i <= 10; i++)
    {
            k=(rand() % 14) + 33; //range is (47 - 33), add 33 to get that range.
            printf("%c", k);
    }
    return 0;
}

mod 会取数字 n,并将其置于 0-13 之间,然后我们添加 33 将其置于 33 至 47 之间

希望这会有所帮助。

您所做的是取数字并将其置于 0 到 32 的范围内,然后添加 15 将其置于 15 和 47 的范围内(SI - '/')

【讨论】:

  • 无论如何,是否可以将范围设为负数?例如从 -5 到 5?
  • @user3582421 k = (rand() % 10) - 5
猜你喜欢
  • 2017-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
相关资源
最近更新 更多