整数加减法练习

程序自动产生随机数(srand 设置种子为系统时间,以保证每次运行程序产生的随机数有差别
),然后用户输入结果,程序判断用户输入是否正确

减法运算时要保证随机产生的a要大于b(用while循环判断,当然前提条件是用户选择的为减法运算,这里只保证式子产生的结果为非负整数)。


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
int a,b,c,sign,max;
char sign1;
printf("please select sign(1 or other,1:-,oteher:+):\n");
scanf("%d",&sign);
printf("please select the max number(<10000):\n");
scanf("%d",&max);
srand((unsigned long)time((time_t *)NULL));
a=rand()%max;
b=rand()%max;
while((a<b)&&(sign==1))
{
a=rand()%max;
b=rand()%max;

}
sign1=(sign==1?‘-‘:‘+‘);
printf("\n%d%c%d=",a,sign1,b);
scanf("%d",&c);
if((sign==1)&&(a-b==c)||(sign!=1)&&(a+b==c))
{
printf("OK!\n");
}
else
printf("The result is wrong!\n");

}

程序运行结果如下:

最后附上本程序涉及到的函数原型


















srand(设置随机数种子)

相关函数

rand,random
srandom

表头文件

#include<stdlib.h>

定义函数

void srand (unsigned
int seed);

函数说明

srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,通常可以利用geypid()或time(0)的返回值来当做seed。如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。





















rand(产生随机数)

相关函数

srand,random,srandom

表头文件

#include<stdlib.h>

定义函数

int
rand(void)

函数说明

rand()会返回一随机数值,范围在0至RAND_MAX
间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。关于随机数种子请参考srand()。

返回值

返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,其值为2147483647。




















相关函数

ctime,ftime,gettimeofday

表头文件

#include<time.h>

定义函数

time_t
time(time_t *t);

函数说明

此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。如果t
并非空指针的话,此函数也会将返回值存到t指针所指的内存。

返回值

成功则返回秒数,失败则返回((time_t)-1)值,错误原因存于errno中。
   

整数加减法练习,码迷,mamicode.com

时间: 2024-12-20 18:56:44

整数加减法练习的相关文章

用双向链表实现超长整数加减法

学校数据结构的课程实验之一. 用到的数据结构:双向链表 主要功能:对由用户输入的两个任意长的整数进行加减运算 主函数: 1 int main() 2 { 3 4 short num;//临时数据段 5 char optr;//运算符 6 char ch;//临时字符接收 7 char choice = 'y'; 8 9 while (choice == 'y') 10 { 11 List<List_entry> *list1 = new List<List_entry>(); 12

高精度计算-大整数加减法

问题描述 求两个不超过 200 位的非负整数的和. 输入数据 有两行,每行是一个不超过 200 位的非负整数,没有多余的前导 0. 输出要求 一行,即相加后的结果.结果里不能有多余的前导 0,即如果结果是 342,那么就不能 输出为 0342. 输入样例 22222222222222222222 33333333333333333333 输出样例 Output Sample: 55555555555555555555 解题思路 C/C++中的 int 类型能表示的范围是[?231,?231–1]

【华为OJ】【039-无线OSS-高精度整数加法】

[华为OJ][算法总篇章] [华为OJ][039-无线OSS-高精度整数加法] [工程下载] 题目描述 在计算机中,由于处理器位宽限制,只能处理有限精度的十进制整数加减法,比如在32位宽处理器计算机中, 参与运算的操作数和结果必须在-231~231-1之间.如果需要进行更大范围的十进制整数加法,需要使用特殊 的方式实现,比如使用字符串保存操作数和结果,采取逐位运算的方式.如下: 9876543210 + 1234567890 = ? 让字符串 num1="9876543210",字符串

不太完美的四则运算

拖啊拖,终于记得把它上传了! 题目 写一个能自动生成小学四则运算题目的命令行"软件",分别满足下列各种需求.下面这些需求都可以用命令行参数的形式来指定: a.)除了整数以外,还支持真分数的运算.(例如1/6+1/8=7/24). b.)让程序能接受用户输入的答案,并判断对错.最后给出总对/错的数量. c.)逐步扩展功能和可以支持的表达式类型,最后希望能支持下面类型的题目(最多10个运算符,括号的数量不限制): 25-3*4-2/2+89=?          1/2+1/3-1/4=?

Mutual Review

import java.util.Random; import java.util.Scanner; public class Sizeyunsuan { public static void main(String[] args){ Scanner input=new Scanner(System.in); System.out.println("请输入要输出多少道运算题"); int h=input.nextInt(); String [] arr1=new String[h];

LeetCode No.2 Add Two Numbers

You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list. Input: (2 -> 4 -> 3) + (5 -> 6 ->

华为上机题汇总(六)

华为上机题汇总(六) 注:编译环境为Visual Studio 2012,答案仅供参考. 目录 华为上机题汇总六 目录 第二十六题 第二十七题 第二十八题 第二十九题 第三十题 第二十六题 26.一副牌中发五张扑克牌给你:让你判断数字的组成: 有以下几种情况: 1:四条:即四张一样数值的牌(牌均不论花色)2:三条带 一对 3:三条带两张不相同数值的牌 4:两对 5:顺子 包括 10,J,Q,K,A 6:什么都不是 7:只有一对 #include <iostream> #include <

基本图形生成算法

1.直线生成算法 所谓图元的生成,是指完成图元的参数表示形式(由图形软件包的使用者指定)到点阵表示形式(光栅显示系统刷新时所需的表示形式)的转换.通常也称扫描转换图元. 直线的扫描转换:确定最佳逼近于该直线的一组像素,并且按扫描线顺序对这些像素进行写操作. 三个常用算法:1.数值微分法DDA:2.中点画线法:3.Bresenham算法. 生成目标,求与直线段充分接近的像素集 生成前提条件:1.像素网格均匀,坐标为整数值:2.直线段的宽度为1:3.直线段的斜率k的取值范围为[-1,1]. 1.1

基础野:细说浮点数

Brief 本来只打算理解JS中0.1 + 0.2 == 0.30000000000000004的原因,但发现自己对计算机的数字表示和运算十分陌生,于是只好恶补一下. 本篇我们一起来探讨一下基础——浮点数的表示方式和加减乘除运算. 在深入前有两点我们要明确的: 1. 在同等位数的情况下,浮点数可表示的数值范围比整数的大: 2. 浮点数无法精确表示其数值范围内的所有数值,只能精确表示可用科学计数法m*2e表示的数值而已. (如0.5的科学计数法是2-1,则可被精确存储:而0.2则无法被精确存储)