如何为需要 4 个数字输入的 C 程序编写 Bash 脚本? [复制]

     2023-03-06     132

关键词:

【中文标题】如何为需要 4 个数字输入的 C 程序编写 Bash 脚本? [复制]【英文标题】:How do I write a Bash script for a C program that takes 4 numerical inputs? [duplicate] 【发布时间】:2020-12-24 19:37:23 【问题描述】:

我正在为一个 c 程序编写一个 bash 脚本,该程序要求输入 4 个数字引脚。但是,当我编写脚本时,输出似乎在循环中运行,但它并没有中断它被识别为程序将接受的正确数字的位置。

#!/bin/bash

RANGE=9000
count=$RANDOM:0:4

while [[ "$count" -le $RANGE ]]
do
    number=$RANDOM
    (( "number %= $RANGE" ))
    echo $number
    if [[ "$count" == "$RANGE" ]]; then
        break
    fi
done

当我运行它时,我可以在输出中看到一些返回为 2 或 3 位的数字,而不是 4。所以理论上,我想要做的是找到一个 4 位的随机数,程序将采取,但我不知道随机数是什么,所以本质上它是一种蛮力,或者只是我手动猜测密码。

【问题讨论】:

你为什么要把你的算术表达式放在引号里?只是(( number %= RANGE ));不需要$s 引号。 无论如何,如果你得到一个 3 位数字,这意味着第一个数字是 0;如果您得到一个 2 位数字,则 前两位 数字为 0。 ...顺便说一句,在这种情况下,不清楚您所说的“对于 C 程序”是什么意思。 这是一个要求输入数字的 c 程序。 c程序不是我自己写的。此外,当我在引号中键入算术表达式时,我仍然是 bash 的新手,但我会在以后的脚本中考虑到这一点。 【参考方案1】:

如果您只需要一个随机的 4 位数字,您可以这样做:

printf -v number "%04d" $((RANDOM % 10000))

$RANDOM 为您提供一个随机数 0..32767% 10000 将其转换为范围 0..9999(不是完美分布,但对于大多数用途来说应该足够好),并且printf 确保附加前导零(例如,您将看到0042 而不是42)。


您可以使用以下脚本对其进行测试:

(( total = 0 ))
(( bad = 0 ))
for i in 1..10000 ; do
    printf -v x "%04d" $((RANDOM % 10000))
    (( total += 1 ))
    [[ "$x" =~ ^[0-9]4$ ]] ||  echo Bad $x; (( bad += 1 )); 
done
(( good = total - bad ))
echo "Tested: $total, bad $bad, good $good"

应该给你:

Tested: 10000, bad 0, good 10000

【讨论】:

只要 OP 试图猜测一个数字,它可能无法猜测第一个数字为 0 的组合。 顺便说一句,考虑printf -v x '%04d' "$x" 而不是命令替换;使代码特定于 bash,但速度更快(而且它已经是特定于 bash 的)。 好点,@Charles,我已经在船上购买了它们,并进行了另一项轻微改进,将随机生成与printf 结合在一起。我不认为特定于 bash 是一个问题,因为这个问题是 tagged bash. 感谢您的帮助,这消除了有关脚本编写的一些困惑。我应该知道数字显示为 2 位的情况是这样的,当时我很确定我只要求一定范围的数字。

如何用c语言编写一个程序,输入10个0-9之间的整数,请统计每个数字出现的个数,并输出?

#include<stdio.h>intnum[10],count[10],i=0,temp;//判断输入的数字是否是0到9之间的数intinput(intnum)if(num>=0&&num<=9)return1;elsereturn0;//初始化计数的数组voidinitCount()inti=0;for(i=0;i<10;i++)count[i]=0;//统计每个数字出现的次数voidnumCount(intnum)inti... 查看详情

如何用python的while循环来编写1,2,3,4个数字,能组成多少个互不相同且无重复数

不太明白你的题目要求1、2、3、4四个数只能组成4*3*2*1=24个互不重复的四位数参考技术Aa=0n=0while(a<4):a=a+1b=0while(b<4):b=b+1c=0while(c<4):c=c+1if(a!=bandb!=candc!=a):n+=1print(a,b,c)print("由1,2,3,4组成的三位数共有"+str(n)+"个") 查看详情

如何为通用数字编写函数?

】如何为通用数字编写函数?【英文标题】:Howtowriteafunctionforgenericnumbers?【发布时间】:2011-01-1907:17:03【问题描述】:我对F#很陌生,发现类型推断确实是一件很酷的事情。但目前看来,这也可能导致代码重复,这不是一件很酷... 查看详情

如何为 C/C++ 编写二进制算法

】如何为C/C++编写二进制算法【英文标题】:HowtowriteabinaryalgorithmforC/C++【发布时间】:2009-12-0909:16:28【问题描述】:我在用C/C++编写二进制算法时遇到了麻烦。我的问题是这样的:应用二进制算法在猜数游戏中搜索从1到100的数字... 查看详情

如何为平板电脑上的输入字段自动打开数字键盘?

】如何为平板电脑上的输入字段自动打开数字键盘?【英文标题】:Howtoopennumberkeypadautomaticallyforaninputfieldonatablet?【发布时间】:2017-11-0207:22:06【问题描述】:我正在开发一个Angular2应用程序。对于输入字段,应自动打开数字小... 查看详情

如何为需要从以前的订单计算的库存数量编写 SQL

】如何为需要从以前的订单计算的库存数量编写SQL【英文标题】:HowtowriteSQLforstockquantitythatrequirescalculationfrompreviousorders【发布时间】:2015-03-0508:59:54【问题描述】:我有两张表,一张用于当前产品的总库存,一张用于产品订单... 查看详情

如何为 API Gateway Websocket 编写 Java Lambda 处理程序?

】如何为APIGatewayWebsocket编写JavaLambda处理程序?【英文标题】:HowtowriteJavaLambdahandlerforAPIGatewayWebsocket?【发布时间】:2019-02-1814:24:17【问题描述】:我很难弄清楚如何编写处理Websocket消息的JavaLambda函数,其中Websocket由2018年底刚刚... 查看详情

如何为任何输入添加带有快捷方式的特殊字符?

】如何为任何输入添加带有快捷方式的特殊字符?【英文标题】:Howtoaddspecialcharacterwithshortcuttoanyinput?【发布时间】:2018-03-3014:49:06【问题描述】:我有一个应用程序,每次用户按下快捷键Ctrl+D时,我都需要添加特殊字符、表情... 查看详情

如何用c语言编写一个程序:输入字符串,统计出某指定字符在字符串中出现的次数?

...main()inti,a=0,b=0,c=0,d=0,n=0;/*分别用于统计英文字符、空格、数字、其它字符、所有字符的统计*/printf("Pleaseinputastring!\n");while(getchar()!='\n')n++;i=getchar();if(65<=i<=90||97<=i<=122)a++;elseif(i=0)b++;elseif(48<=i<=57)c++... 查看详情

实训报告1

...入圆的半径,计算圆的面积并输出。编写程序:实现一个数字加密器。运行时输入加密前的整数,通过加密运算后,输出加密后的结果,加密结果仍为一整数。加密规则为:加密结果=(整数*10+5)/2+3.14159编写程序公鸡5元/只,母鸡3... 查看详情

如何为特定活动禁用 Android 软键盘?

】如何为特定活动禁用Android软键盘?【英文标题】:HowtodisableAndroidSoftKeyboardforaparticularactivity?【发布时间】:2011-08-1614:50:37【问题描述】:我有一个带有一个EditText的活动,我只需要输入数字。现在,我已将EditText的输入类型定... 查看详情

如何为 ios6 和 ios7 编写 iphone 3.5 英寸屏幕和 4 英寸屏幕的代码

】如何为ios6和ios7编写iphone3.5英寸屏幕和4英寸屏幕的代码【英文标题】:howcaniwritethecodeforiphone3.5inchesscreenand4inchesscreenforios6&ios7【发布时间】:2013-11-3007:39:38【问题描述】:我正在开发一个应用程序。在应用程序中,我为ios7... 查看详情

如何为以下描述编写 mongodb 聚合查询

】如何为以下描述编写mongodb聚合查询【英文标题】:howtowriteamongodbaggregationqueryforfollowingdescription【发布时间】:2018-07-2009:48:29【问题描述】:我需要查询:其用户ID为:“userId”:“111b/c”,“userId”:“111a”。根据用户ID,他... 查看详情

如何为具有多种父类型的子场景编写 EF 代码优先映射

】如何为具有多种父类型的子场景编写EF代码优先映射【英文标题】:HowtowriteEFCodefirstmappingforChildwithManyParentTypesscenario【发布时间】:2011-12-1110:09:29【问题描述】:我有4个课程。供应商、客户、员工和地址。前3种类型中的任何... 查看详情

如何为python中的每个元素添加一个数字? [复制]

】如何为python中的每个元素添加一个数字?[复制]【英文标题】:HowdoIaddanumbertoeverysingleelementinpython?[duplicate]【发布时间】:2021-01-0523:52:53【问题描述】:如何在元素中添加数字?假设我想为数组中的每个元素添加10我希望我的输... 查看详情

如何为 Eclipse 编写代码模板?

】如何为Eclipse编写代码模板?【英文标题】:HowdoIwriteacodetemplateforeclipse?【发布时间】:2016-06-1712:06:50【问题描述】:我有一些我需要的特定代码,以便能够拥有某些我不想每次都编写的I/O内容,我只想能够添加一个java类,以... 查看详情

如何为表单创建可变数量的输入?

】如何为表单创建可变数量的输入?【英文标题】:HowdoIcreateavariable-numberofinputsforaform?【发布时间】:2020-02-2301:51:32【问题描述】:我有一个数据库,用于存储需要定期更新的各种项目的参考信息(例如,项目A可能具有“完成... 查看详情

在用户输入时输入2个数字,以间距分隔(代码片段)

...,它将两个2x2矩阵相乘。我在用户输入时遇到问题,用户需要输入2位代表矩阵的一行。userin=int(input("Enterfirst2x2matrix:")).split('')print(userin)我收到一个错误说:int()的基数为10的无效文字:'34'我想要得到的是:Enterfirst2x2matrix:34Ent... 查看详情