Delphi中2位数随机加减乘除运算程序
时间: 2024-03-08 08:47:45 浏览: 21
下面是一个简单的Delphi程序,可以随机生成两个0到99的整数,然后进行加减乘除运算,最后输出运算结果。你可以根据自己的需要进行修改和扩展。
```delphi
program RandomCalc;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
a, b, c: Integer;
op: Char;
begin
Randomize; // 初始化随机数生成器
// 随机生成两个0到99的整数
a := Random(100);
b := Random(100);
// 随机选择一个运算符
case Random(4) of
0: op := '+';
1: op := '-';
2: op := '*';
3: op := '/';
end;
// 进行运算
case op of
'+': c := a + b;
'-': c := a - b;
'*': c := a * b;
'/': c := a div b; // 注意处理除数为0的情况
end;
// 输出运算式和结果
WriteLn(a, op, b, '=', c);
ReadLn; // 暂停程序,等待用户输入
end.
```
运行程序后,会输出类似下面的结果:
```
49-26=23
```
这表示随机生成了两个数49和26,进行减法运算得到结果23。
相关问题
delphi 加减乘除和次方计算
在 Delphi 中,可以使用基本的算术运算符进行加减乘除的计算,使用 Math 库中的 Power 函数进行次方计算。
以下是一个简单的示例代码:
```delphi
program arithmetic;
{$APPTYPE CONSOLE}
uses
SysUtils, Math;
var
a, b: Double;
begin
Write('Enter the first number: ');
ReadLn(a);
Write('Enter the second number: ');
ReadLn(b);
WriteLn('Addition: ', a + b);
WriteLn('Subtraction: ', a - b);
WriteLn('Multiplication: ', a * b);
WriteLn('Division: ', a / b);
WriteLn('Power: ', Power(a, b));
ReadLn;
end.
```
在上面的示例中,用户输入两个数字,然后使用加减乘除和次方运算符进行计算,并使用 WriteLn 函数输出结果。Power 函数使用了 Math 库,需要在代码中声明使用该库。
你可以将上面的代码复制到 Delphi IDE 中并运行,输入两个数字进行测试。
delphi sm2加密中文乱码
在 Delphi 中进行 SM2 加密时,可能会遇到中文乱码的问题。这通常是因为 SM2 加密算法使用的是字节流而不是字符流。在处理中文字符时,需要进行字符编码的转换。下面是一个示例代码,展示了如何使用 Delphi 进行 SM2 加密并处理中文乱码问题:
```delphi
uses
System.SysUtils, IdSSLOpenSSL, IdCTypes, IdHMACSHA1, IdOpenSSLHeaders, IdOpenSSLIOHandler;
function SM2Encrypt(const input: AnsiString; const publicKey: AnsiString): AnsiString;
var
ctx: PSSL_CTX;
ecKey: PEC_KEY;
bio: PBIO;
cipherText: TIdBytes;
len: Integer;
begin
SSL_load_error_strings();
OpenSSL_add_all_algorithms();
SSLeay_add_all_algorithms();
ctx := SSL_CTX_new(EVP_sm2());
if ctx = nil then
raise Exception.Create('Failed to create SSL context');
bio := BIO_new_mem_buf(PAnsiChar(publicKey), Length(publicKey));
ecKey := PEM_read_bio_EC_PUBKEY(bio, nil, nil, nil);
if ecKey = nil then
raise Exception.Create('Failed to read public key');
len := SM2_encrypt(ctx, ecKey, PByte(input), Length(input), nil, @len);
if len <= 0 then
raise Exception.Create('Failed to encrypt data');
SetLength(cipherText, len);
if SM2_encrypt(ctx, ecKey, PByte(input), Length(input), PByte(cipherText), @len) <= 0 then
raise Exception.Create('Failed to encrypt data');
SSL_CTX_free(ctx);
EC_KEY_free(ecKey);
BIO_free(bio);
Result := TIdEncoderMIME.EncodeBytes(cipherText);
end;
```
在调用 `SM2Encrypt` 函数时,传入待加密的中文字符串以及公钥的字符串形式。函数会返回经过加密后的密文字符串。注意,此处使用了 `TIdEncoderMIME.EncodeBytes` 方法对密文进行 Base64 编码,以确保返回的结果是可打印字符。
希望这个示例能帮助你解决中文乱码的问题。如果还有其他疑问,请随时提问。