c语言四则运算实验报告

合集下载

利用C语言开发一个“小学生算术四则运算测试系统”

利用C语言开发一个“小学生算术四则运算测试系统”
提示重新输 入自己的答 案
输入答案 temp
flag!=1&&flag !=0
0
非0
继续测试请 按 1,退出测 试请按 0
flag==0 非0
退出
scanf("%d", &flag);
0
int a,b,c;
type==1 非0
a=rand()%999;
b=999-a;
printf("\n% d+%d=? ",a,b);
非0
提示输入代 号错误,重 新输入代号
提示输入 1. 加法……
提示要求学 生输入自己 的答案
学生输入自 己的答案, 并赋给 temp
输入你所选 的题的类型 type
temp!=answer
0 提示输入 答案正确
提示继续测 试请按 1,退 出测试请按 0
学生输入 0 或者 1 赋给 flag
非0
提示答案错 误,重做
a==0
b==0
0
b=1000/ a;
a=rand 0
()%50 c=1000/b;
b=rand() %b
1
非0
b=rand() %500;
printf("\n%d* %d=?",a,b);
return(a*b)
函数调用处
c=rand()%500
c!=0 0ห้องสมุดไป่ตู้
break;
函数调用处
非 0
printf("
1.2 最开始我没有调用函数 srand((unsigned)time(NULL))结果发现连续做两道 相同算法的题目时,两次的题目完全一样,也就说明了此程序并不能随机的出题, 后来使用了函数 srand((unsigned)time(NULL))。srand((unsigned)time(NULL)) 这个函数调用中使用 time(NULL)函数返回值(当前时间)作实参,初始化随机 数发生器。rand()函数调用返回一个随机数,理论上说,rand()返回一个随机数, 但是每次调用时,随机数发生器返回的随机数序列都是一样的,所以,用当前时 间(time(NULL)返回值)作种子对随机数发生器进行初始化,由于每次当前时间不

四则运算实验报告

四则运算实验报告

实验3四则运算表达式求值背景在工资管理软件中,不可避免的要用到公式的定义及求值等问题。

对于数学表达式的计算,虽然可以直接对表达式进行扫描并按照优先级逐步计算,但也可以将中缀表达式转换为逆波兰表达式,这样更容易处理。

问题描述四则运算表达式求值,将四则运算表达式用中缀表达式,然后转换为后缀表达式,并计算结果。

基本要求使用二叉树来实现。

实现提示利用二叉树后序遍历来实现表达式的转换,同时可以使用实验2的结果来求解后缀表达式的值。

输入输出格式:输入:在字符界面上输入一个中缀表达式,回车表示结束。

输出:如果该中缀表达式正确,那么在字符界面上输出其后缀表达式,其中后缀表达式中两相邻操作数之间利用空格隔开;如果不正确,在字符界面上输出表达式错误提示。

选作内容(1)在输入输出方式上要求使用:输入:将中缀表达式存于文本文件中,程序从该文本文件中读出表达式。

输出:如果该中缀表达式正确,则将后缀表达式输出到该文件中原表达式的后面,它们之间用“---”后相连;如果不正确,请在输出表达式错误提示到该文件原表达式的后面,它们之间用“---”相连。

(2) 利用堆栈来实现中缀表达式转换为后缀表达式。

测试用例输入:21+23*(12-6)输出:21 23 12 6 -*+程序代码:#include <iostream>#include <string.h>using namespace std;#define SIZE 100#define STACKINCREMENT 10template<class T>//栈class stack{public:void InitStack() {S.base = (T *)malloc(SIZE * sizeof(T));if(!S.base) exit(0);S.top = S.base;S.stacksize = SIZE;}void DestroyStack(){free(S.base);}void ClearStack(){S.top = S.base;}bool StackEmpty(){if(S.top == S.base) return true;else return false;}int StackLength(){return (S.top - S.base);}bool GetTop(T &t){if(S.top != S.base){t = *(S.top - 1);return true;}else return false;}void Push(T t){if(S.top - S.base >= S.stacksize){S.base = (T *)realloc(S.base,(S.stacksize + STACKINCREMENT) * sizeof(T));if(!S.base) exit(0);S.top = S.base + S.stacksize;S.stacksize += STACKINCREMENT;}*S.top = t;S.top++ ;}bool Pop(T &t){if(S.top == S.base) return false;else S.top-- ;t = *S.top ;return true;}private:struct SqStack{T *base;T *top;int stacksize;}S;};class BiTree{private:struct BiTreeNode{char OPT[10];BiTreeNode *lchild,*rchild;};BiTreeNode *T; //T是根结点int index; //index是后缀表达式转换二叉树时的索引int number_of_point ;//销毁一颗树void DestroyTree(BiTreeNode *T){if(T){DestroyTree(T->lchild);DestroyTree(T->rchild);free(T);}}void DestroyTree(){DestroyTree(T);}//1表示栈顶优先级高于待入栈的元素int compare(char a,char b){ //定义了任意两个运算符的优先级if(a == '(' && b == ')') return 0;else if((a == '+' && b == '*') || (a == '+' && b == '/') || (a == '-' && b == '*') || (a == '-' && b == '/')|| (a != ')' && b == '(') || (a == '(' && b != ')'))return -1;else return 1;}//递归构造start,end分别是一个式子开始值和结束值的索引/*递归构造中缀表达式转化为的二叉树(利用栈) */void InorderCreate(BiTreeNode *&T,char str[30][10],int start,int end){ if(start == end) { //递归终止if(!(T = (BiTreeNode *)malloc(sizeof(BiTreeNode)))) exit(0);strcpy(T->OPT,str[start]);T->lchild = NULL;T->rchild = NULL;}else{stack<char> opt;stack<int> num;num.InitStack();opt.InitStack();char last;int index;int a;bool jump = false;for(int i = start;i <= end;i++) { //begin求解优先级最小的一个运算符if(jump) break;number_of_point = 0 ;if(IsNumber(str[i][0]) || str[i][0] == '-' &&IsNumber(str[i][1]) )continue;else{char c = str[i][0];char b;if(i == start && c == '(') {start += 1;continue;}else if(opt.StackEmpty() || (opt.GetTop(b) && compare(b,c) == -1)){opt.Push(c);num.Push(i);}else{if(c != ')'){opt.Pop(b);num.Pop(a);if(!opt.StackEmpty()){opt.GetTop(b);if(compare(b,c) == 1){opt.Pop(b);num.Pop(a);opt.Push(c);num.Push(i);}else{opt.Push(c);num.Push(i);}}else{opt.Push(c);num.Push(i);}}else{for(opt.GetTop(b);compare(b,c) != 0;opt.GetTop(b)){opt.Pop(b);num.Pop(a);if(opt.StackEmpty()){opt.Push(b);num.Push(a);end -= 1;jump =true;break;}}if(compare(b,c) == 0) {opt.Pop(b);num.Pop(a);}}}}} //end,得到的是该步中的根结点字符last及其索引indexopt.Pop(last);num.Pop(index);if(!opt.StackEmpty()){opt.Pop(last);num.Pop(index);}opt.DestroyStack();num.DestroyStack();if(!(T = (BiTreeNode *)malloc(sizeof(BiTreeNode)))) exit(0);T->OPT[0] = last;T->OPT[1] = '\0';InorderCreate(T->rchild,str,start,index-1);InorderCreate(T->lchild,str,index+1,end);}}bool IsNumber(char a){ //判断一个字符是否为数值形式的if( a == '.' && number_of_point == 0 ) {number_of_point ++ ;return true;}else if('0' <= a && a <= '9') return true ;else return false;}//递归求解树表示的表达式的值double Operate(BiTreeNode *T){if(T->lchild==NULL && T->rchild==NULL){double num = atof(T->OPT); //调用系统函数atof()将字符串转换为浮点数return num;}double ld,rd;ld = Operate(T->lchild);rd = Operate(T->rchild);char c = T->OPT[0];switch(c){case '+': return ld+rd;break;case '-': return rd-ld;break;case '*': return ld*rd;break;case '/': return rd/ld;break;default:cout << " you have entered wrong data ! "<< endl ;return 0;break ;}}void display(BiTreeNode *T){if(T == NULL ) return ;display(T->rchild);display(T->lchild);cout << T->OPT << " " ;public:BiTree() {T = NULL ;index = 0 ;number_of_point = 0 ;}/*以下两个函数重载私有成员函数方便计算*/void InorderCreate(){char OPT[30][10];cout << "输入中缀表达式: " << endl;char c = getchar();bool flag = true;int i = 0,j = 0 ;while(c != 10) { //输入的是空格j = 0;if(c == '-' && flag == true) { //flag判断是否是一个负数的值OPT[i][j++] = c;for(c = getchar() ; IsNumber(c) ; c = getchar() )OPT[i][j++] = c;OPT[i++][j] = '\0';flag = false;}else if(IsNumber(c)){OPT[i][j++] = c;for(c = getchar();IsNumber(c);c = getchar())OPT[i][j++] = c;OPT[i++][j] = '\0';flag = false;}else //运算符时的处理{flag = true;OPT[i][j++] = c;OPT[i++][j] = '\0';c = getchar();}}InorderCreate(T,OPT,0,i-1);}double Operate(){return Operate(T);}void display(){display(T) ;}~BiTree() {DestroyTree();};int main(){BiTree tree;tree.InorderCreate();cout << endl << tree.Operate() << endl;tree.display() ;cout << endl ;return 0;}测试结果:。

【7A版】四则运算表达式求值实验报告

【7A版】四则运算表达式求值实验报告

HUNANUNIVERSITY课程实习报告题目:四则运算表达式求值学生姓名:学生学号:专业班级:指导老师:完成日期:一、需求分析四则运算表达式求值,将四则运算表达式用中缀表达式表示,然后转换为后缀表达式,并计算结果。

本程序要求利用二叉树后序遍历来实现表达式的转换,同时可以使用实验2的结果来求解后缀表达式的值。

在字符界面上输入一个中缀表达式,回车表示结束。

如果该中缀表达式正确,那么在字符界面上输出其后缀表达式,其中后缀表达式中两相邻操作数之间利用空格隔开;如果不正确,在字符界面上输出表达式错误提示。

测试数据输入:21+23G(12-6)输出:2123126-G+二、详细设计输入和输出的格式输入本程序可以将输入的四则运算表达式(中缀表达式)转换为后缀表达式输出后缀表达式为://输出结果的位置表达式的值为://输出结果的位置三、调试分析本次实验的难点主要是在建立二叉树的问题上。

关于如何把中缀表达式存入二叉树中,我参考了网上的一些方法,成功实现了目标,但是却遇到了一个问题,那就是不能处理小数,甚至两位或两位以上的整数。

因为如果采用字符数组来存储操作数,运算符合一位整数还可以处理,但对于两位数就就会出问题,最后我改进采用字符串数组来存储操作数,成功解决了问题。

另外在处理输入的非法表达式问题中,我也费了很大功夫,但总体问题不大。

四、测试结果五、用户使用说明(可选)1、运行程序时提示输入四则运算表达式本程序可以将中缀表达式转化为后缀表达式,并计算结果请输入四则运算表达式:输出后缀表达式为:表达式的值为:程序源代码(c++)#include<iostream>#include<string>#include<stack>#include<iomanip>constintMaG=100;usingnamespacestd;classNode{public:charch[MaG];//考虑到数值有时会是两位数,所以使用字符串数组NodeGlChild;NodeGrChild;Node(){strcpy(ch,"");lChild=rChild=NULL;}~Node(){if(lChild!=NULL)deletelChild;if(rChild!=NULL)deleterChild;}};staticintcount=0;staticchararray[MaG];//保存原始的中缀表达式staticcharstr[2GMaG];//保存后序遍历出来的字符串,为表达式求值提供方便staticintk=0;chargetOp(NodeGtemp);//temp指针保存每个结点,返回的是运算符NodeGcrtTree(NodeGroot);//传入根结点指针,返回根结点指针voidoutput(NodeGroot);//获得处理后的字符串boolisError(char);//判断字符是否有问题voiddeal();//对字符数组进行处理doublevalue(string);//计算后缀表达式,得到其结果。

C语言实验报告范文

C语言实验报告范文

C语言实验报告范文一、实验目的本实验旨在通过实际操作和编程,加深对C语言的理解和掌握,同时提高解决实际问题的能力。

二、实验内容1.利用C语言设计一个简单的计算器程序,实现简单的四则运算功能。

2.利用C语言设计一个简单的学生信息管理系统,实现添加、删除、修改和查询学生信息的功能。

三、实验步骤和代码实现1.计算器程序的设计与实现(1) 定义一个函数addition,传入两个参数,实现两数相加。

(2) 定义一个函数subtraction,传入两个参数,实现两数相减。

(3) 定义一个函数multiplication,传入两个参数,实现两数相乘。

(4) 定义一个函数division,传入两个参数,实现两数相除。

(5)在主函数中,通过用户的输入选择所需进行的运算,并输出结果。

代码如下:```C#include <stdio.h>float addition(float a, float b)return a + b;float subtraction(float a, float b)return a - b;float multiplication(float a, float b)return a * b;float division(float a, float b)if (b == 0)printf("Divisor cannot be zero!\n");return 0;}return a / b;int maiint choice;float num1, num2;printf("Please enter two numbers: ");scanf("%f%f", &num1, &num2);printf("Please choose the operation (1:addition, 2:subtraction, 3:multiplication, 4:division): ");scanf("%d", &choice);switch (choice)case 1:printf("The result is: %.2f\n", addition(num1, num2)); break;case 2:printf("The result is: %.2f\n", subtraction(num1, num2)); break;case 3:printf("The result is: %.2f\n", multiplication(num1, num2)); break;case 4:printf("The result is: %.2f\n", division(num1, num2)); break;default:printf("Invalid choice!\n");break;}return 0;```2.学生信息管理系统的设计与实现(1) 定义一个结构体Student,包含学生的姓名、学号、年龄等信息。

c实验报告

c实验报告

c实验报告实验报告:基于C语言的简易计算器设计一、设计目的:本实验旨在通过使用C语言进行编程,设计一个简易计算器,能够完成基本的四则运算。

二、设计要求:1. 实现加、减、乘、除四种基本运算的功能;2. 能够连续计算,并显示计算结果;3. 能够进行多层嵌套运算。

三、设计原理:1. 首先通过输入函数获取用户输入的数字和运算符;2. 然后通过switch语句判断用户选择的运算符,并执行相应的运算;3. 最后将计算结果输出。

四、设计步骤:1. 首先定义变量,包括两个操作数和一个运算符的字符型变量;2. 利用scanf函数分别获取用户输入的两个操作数和运算符,并进行赋值;3. 利用switch语句判断运算符,执行相应的运算,并将结果保存在一个结果变量中;4. 利用printf函数将计算结果输出。

五、设计代码:```c#include <stdio.h>int main() {double num1, num2, result;char operator;printf("请输入第一个操作数:");scanf("%lf", &num1);getchar(); // 清除缓冲区中的换行符printf("请输入运算符:");scanf("%c", &operator);getchar(); // 清除缓冲区中的换行符printf("请输入第二个操作数:");scanf("%lf", &num2);switch(operator) {case '+':result = num1 + num2;printf("计算结果:%lf\n", result); break;case '-':result = num1 - num2;printf("计算结果:%lf\n", result); break;case '*':result = num1 * num2;printf("计算结果:%lf\n", result);break;case '/':result = num1 / num2;printf("计算结果:%lf\n", result);break;default:printf("错误的运算符\n");break;}return 0;}```六、实验结果:运行程序后,按照提示依次输入操作数和运算符,然后程序会自动计算并显示结果。

实验报告长整数四则运算

实验报告长整数四则运算

实验报告:长整数四则运算实验者:唐怡04120082 题目:设计一个实现任意长的整数进行加法运算的演示程序一.需求分析1.本演示程序中,长整数为任意长的带符号的长整数的输入及求加法后输出的长整数形式为每四位一组,组间用逗号隔开,输入以“回车符”为结束标志。

2.程度执行的命令包括:1)构造整数1,2)构造整数2,3)做加法运算,4)结束3.测试数据(1)0;0;应输出“0”(2)-2345,6789;-7654,3211;应输出“-1,0000,0000”(3)-9999,9999;1,0000,0000,0000;应输出“9999,0000,0001”(4)1,0001,0001;-1,0001,0001;应输出“0”(5)1,0001,0001;-1,0001,0000;应输出“1”(6)-9999,9999,9999;-9999,9999,9999;应输出“-1,9999,9999,9998”(7)1,0000,9999,9999;1;应输出“1,0001,0000,0000”。

二.概要设计为实现上述程序功能,应以有序表实现长整数的存储,为此,需要抽象数据类型:有序表1.有序表的抽象数据类型定义为:ADT Dulinklist{数据对象:D={ai|ai为带符号整数,1,2,…,n,n>=0}数据关系:R1={<ai-1,ai>|ai-1,ai属于集合D,ai-1<ai,i=2,…..,n}基本操作:InitDulinklist(&)操作结果:构造一个空的有序表LDestroyDulinklist(&)初始条件:有序表L已存在操作结果:销毁有序表LDulinklistLength(L)初始条件:有序表L已存在操作结果:返回有序表L的长度DulinklistEmpty(L)初始条件:有序表L已存在操作结果:若有序表L为空表,则返回TUER,否则返回FALSEGetElem(L,pos)初始条件:有序表L已存在操作结果:若干1〈=POS〈=LENGTH(L),则返回有序表L中第POS个数据元素。

C语言实验报告范文

C语言实验报告范文

C语言实验报告范文一、实验目的本实验旨在通过编写C语言程序,加深对C语言基本语法的理解,并运用所学的知识实现基本的程序控制结构。

二、实验内容1.编写一个程序,实现两个整数之间的数值互换。

2.编写一个程序,实现计算学生的平均成绩并输出。

3.编写一个程序,实现一个简单的计算器,能够实现加、减、乘、除四则运算。

三、实验步骤1.实现整数互换程序(1)首先定义两个整数变量a和b,并且分别赋予初值。

(2)使用第三个变量temp作为中间变量,将a的值赋给temp。

(3)将b的值赋给a,即执行a=b。

(4)将temp的值赋给b,即执行b=temp。

(5)输出交换后的a和b的值。

(6)编译并运行程序,验证结果。

2.实现计算学生平均成绩程序(1)首先定义学生的姓名和成绩的变量。

(2)使用scanf函数依次输入学生的姓名和成绩,并将其保存在定义好的变量中。

(3)使用循环控制将所有学生的成绩进行累加。

(4)计算平均成绩,使用累加的成绩除以学生人数。

(5)输出平均成绩。

(6)编译并运行程序,验证结果。

3.实现简单计算器程序(1)定义两个操作数和运算符的变量。

(2)使用scanf函数依次输入两个操作数和运算符,并将其保存在定义好的变量中。

(3)根据运算符的不同,使用不同的控制结构实现加、减、乘、除四则运算。

(4)输出运算结果。

(5)编译并运行程序,验证结果。

四、实验结果1.整数互换程序输入:a=10,b=20输出:交换后:a=20,b=10验证结果正确。

2.计算学生平均成绩程序输入:学生1:姓名:张三,成绩:85学生2:姓名:李四,成绩:90学生3:姓名:王五,成绩:78输出:平均成绩:84.33验证结果正确。

3.简单计算器程序输入:操作数1:10操作数2:5运算符:*输出:运算结果:50验证结果正确。

五、实验总结通过本次实验,我进一步熟悉了C语言的基本语法和程序控制结构,并成功实现了整数互换、计算平均成绩和简单计算器的功能。

c语言四则运算实验报告

c语言四则运算实验报告

深圳大学实验报告课程名称: ________ C 语言实验 ________________实验名称: 100以内的四则运算游戏 _________学 院: ___________ 信息工程学院 ______________指导教师 ______________ 张金凤 __________________报告人: 王文杰 组号:]7 ________学号 2013130073 实验地点 教学楼D506实验时间: 2014 年 4 月 16 日提交时间: ___________ 2014.5.9 ____________________课程编号 1300050027一、实验目的一、学习和掌握c语言函数的泄义与调用:二、进一步掌握随机数、选择结构、循环控制、交互式输入输出等程序设计方法:三、进一步掌握c语言中的数组左义和引用方法:四、学习和掌握根据流程图进行模块化程序设计的思想*二、实验要求产生1到4之间的随机数,决定4则运算的符号,再产生两个0到99的随机数进行运算,并记录下做的题数以及正确的数目,当做题者输入n或N时退出程序并显示出完成题数及正确率。

int num2); int五、对流程图的简要说明:#include <std io. h> #include <stdlib. h> #include Htime. h" #include <conio. h> void max_min(int a, int b); randN1N2(int rN1f int rN2 ); rand0per4(); randL/ntlOO ();addLmt100(int num1vsubLmt100(int num1fmulLmt100(int num1fdivLmt100(int num1f/*主函数的功能如下:在主函数中调用上面定义的五个函数,在屏幕上随机循环出一道 100以内的四则运算题。

C语言四则运算测试程序设计报告

C语言四则运算测试程序设计报告

昆明理工大学《计算机程序设计基础》课程综合实践型教学课题报告课题名称:100以内的整数四则运算测试程序设计组长:学号 040401067 姓名周绍平组员:学号 040401070 姓名邓磊学号 040401106 姓名刘云路学号姓名学号姓名学号姓名学号姓名学院:信自学院专业班级:自动化0421 指导教师:耿植林昆明理工大学计算中心2005 年 6月18日昆明理工大学计算中心《计算机程序设计基础》课程综合实践型教学课题报告课程名称:100以内的整数四则运算测试程序设计正文内容:一、问题描述这是一个进行数学计算的程序,且要求拥有多种功能,包括(1)选项菜单集成各功能函数模块(2)出题(每次出10道题目)(3)答题并评分(4)答错的题给出正确答案(5)显示答卷。

总体看来,大多数功能要求调用错题,所以面临的两个难题便是出题和保存答题者做错的题以便其它函数调用。

另外,由于除法的特殊性——其除数不能为0。

又因为这是一个用于100以内整数的四则运算的程序,又对除法这个特殊成员提出了新的要求——要使得到的结果为整数。

所以有必要把除法单独拿出来作为一个函数处理。

二、问题分析这是一个任务很明确的程序设计—用于100以内的整数的四则运算。

这个程序要求拥有选项菜单、出题、答题评分、显示答卷、错题再解、重复练习的功能。

既然是一个用于计算的程序那它的主要作用就是给练习者答题,并验证答题的正确与否。

当然,还要有一些附加功能,比如:把答卷显示出来,错题给出正解,错题再抽出来再做。

这个程序只要求100以内的四则运算,所以随机出现的数字只能是100以内的,并且要求其为整数。

不论是数据的输入与输出,都要求其为整数。

鉴于这个程序所要求达到的功能,我们小组决定把它分为计算、菜单、答卷、重做、正解、评价、除法七个函数模块。

对各成员的分工如下:计算、正解和菜单(周绍平)评价和除法(邓磊)答卷和重做(刘云路)主函数及各函数的连接则由小组成员共同完成。

C语言实验报告四则运算

C语言实验报告四则运算

《C语言》课内实验报告学生姓名:及学号:学院:班级:课程名称:C语言实验题目:实验二选择结构程序设计指导教师姓名及职称:年月日一、实验目的1.掌握逻辑表达式和if语句、嵌套的if语句、switch语句和break语句的格式、语义。

2.掌握选择结构程序设计方法。

二、实验内容编写程序实现两个数的四则运算,要求从键盘输入进行运算的两个数字以及相应的运算符('+'、'-'、'*'、'/'),程序给出算数表达式及运算结果。

(如下图所示,要求使用if语句和switch语句两种方法实现)三、实验结果1、流程图2、源程序(1)使用if语句#include <stdio.h>void main(){float a,b;char c;printf("please input two numbers:");scanf("%f%f",&a,&b);getchar();printf("\nplease input the operator:");//fflush(stdin);scanf("%c",&c);printf("\n");if(c=='+')printf("%10.2f+%10.2f=%10.2f\n",a,b,a+b);else if (c=='-')printf("%10.2f-%10.2f=%10.2f\n",a,b,a-b);else if (c=='*')printf("%10.2f*%10.2f=%10.2f\n",a,b,a*b);else if (c=='/')printf("%10.2f/%10.2f=%10.2f\n",a,b,a/b);elseprintf("Input error!\n");}(2)使用switch语句#include <stdio.h>void main(){float a,b;char c;printf("please input two numbers:");scanf("%f%f",&a,&b); //输入a,b的值getchar();printf("\nplease input the operator:"); //输入操作符scanf("%c",&c);printf("\n");switch(c) //判断输入操作符{case '+': //若操作符为'+',输出a+b printf("%10.2f+%10.2f=%10.2f\n",a,b,a+b);break;case '-': //若操作符为'-',输出a-b printf("%10.2f-%10.2f=%10.2f\n",a,b,a-b);break;case '*': //若操作符为'*',输出a*b printf("%10.2f*%10.2f=%10.2f\n",a,b,a*b);break;case '/': //若操作符为'/',输出a/b printf("%10.2f/%10.2f=%10.2f\n",a,b,a/b);break;default:printf("Input error!\n");}}2、运行结果输入12、13以及+,得到结果如下:输入12、13以及-,得到结果如下:输入12、13以及*,得到结果如下:输入12、13以及/,得到结果如下:输入12、13以及a,得到结果如下:3、结果分析题目要求编程实现两个数的四则运算,因此只需判断输入的操作符为四则运算中的哪一个,编程时可以使用if语句或者switch语句实现判断过程。

C语言实验报告9篇

C语言实验报告9篇

C语言实验报告C语言实验报告9篇随着个人素质的提升,报告的适用范围越来越广泛,我们在写报告的时候要注意语言要准确、简洁。

写起报告来就毫无头绪?以下是小编为大家整理的C语言实验报告,仅供参考,欢迎大家阅读。

C语言实验报告1一、实习目的1.掌握在集成环境中编辑、编译、连接和运行C程序的方法。

(1)运行TC(2)启动TC集成环境,输入一个源程序,编译并运行。

2.掌握单步执行、设置/去除断点,观察变量或表达式的值。

(3)在该程序中按CTRL+F7单步招待并在观察窗口中查看变量和表达式的值。

(4)设置/去除断点,继续调试。

1、熟练掌握if.switch分支语句的使用。

2、熟练掌握for.while.do.while循环语句的使用。

3、熟练掌握函数的定义、说明、参数传递及嵌套和递归调用方法。

4、熟练掌握一维数组、二维数组、字符数组的定义、说明和使用方法。

熟练掌握结构体和指针的综合应用链表的操作二、实习地点北京交通干部管理学院计算机系机房十三号.三、实习成果熟练掌握TC集成环境的使用方法。

认真编写实习报告和实习总结,描述实习操作和心得体会,总结在这次实习中的业务收获,作出自我评价。

熟练掌握并应用TC程序设计的各个知识点。

掌握结构体和指针的联合使用,学会链表的构造和常用操作方法,认真编写实习日志和实习体会。

并通过各种途径查找所需资料,拓宽视野,培养自学能力。

四、实习心得在短短一周的实习期间使我获取了不少新知识也巩固了许多老知识。

我体会到了老师和同学们的热心帮助,无论面对学习中多大的困难,同学们都会帮助你,老师也会帮助你,大家就像兄弟姐妹一样。

老师安排我们有具有的分工:首先,在计算机机房里同学们积极的对C语言进行巩固与实习,老师热心的讲解同学们提出的问题和实习过程中应该注意的事项和同学们的任何。

老师把我们分为几组,每一组十一个人,并且分配了具体的任务,在我们实习结束后每一组的同学都把自己组里的成果展示给大家一起分享,告诉大家编程的原理、方法等,使同学们既有动手能力,又能提高语言表达能力。

数据结构c语言版算术四则混合运算实验报告

数据结构c语言版算术四则混合运算实验报告

数据结构c语言版算术四则混合运算实验报告一、引言在计算机科学领域,算术四则运算是最基本的运算之一。

本实验旨在通过使用C语言编写程序,实现算术四则运算的混合运算功能。

通过该实验,我们可以提高对数据结构的理解,并掌握在C语言中实现算术四则混合运算的方法。

二、实验目的1. 理解算术四则运算的基本原理;2. 掌握数据结构在算术四则运算中的应用;3. 使用C语言编写程序,实现算术四则混合运算功能。

三、实验方法1. 首先,我们需要定义并实现一个栈数据结构,用于存储运算符和操作数;2. 然后,通过读取用户输入的表达式,将其中的运算符和操作数依次入栈;3. 在入栈的过程中,我们需要判断运算符的优先级,以确保正确的运算顺序;4. 最后,通过出栈的方式,按照正确的运算顺序进行运算,并输出结果。

四、实验步骤1. 定义并实现栈数据结构,包括入栈、出栈等基本操作;2. 读取用户输入的表达式,并将其中的运算符和操作数依次入栈;3. 根据运算符的优先级,确定出栈的顺序,并进行相应的运算;4. 将运算结果入栈,继续进行下一轮的运算,直到表达式中的所有运算符和操作数都被处理完毕;5. 最后,将最终的运算结果出栈,并输出。

五、实验结果通过本实验,我们成功实现了算术四则混合运算的功能。

经过多组测试,程序能够正确处理各种复杂的运算表达式,并给出正确的结果。

六、实验总结通过本次实验,我们进一步加深了对数据结构的理解,并成功将其应用于算术四则混合运算中。

我们掌握了C语言中实现算术四则混合运算的方法,并通过编写程序实现了该功能。

通过本次实验,我们不仅提高了对数据结构的应用能力,还提升了编程能力和问题解决能力。

在今后的学习和工作中,我们将继续深入研究数据结构和算法,不断提升自己的编程技术,为解决实际问题提供更好的解决方案。

七、致谢感谢指导老师对本实验的支持和指导,感谢实验室的同学们在实验过程中给予的帮助和建议。

本次实验的顺利完成离不开你们的支持与帮助。

(完整word版)长整数四则运算实验报告

(完整word版)长整数四则运算实验报告

一、需求分析设计一个实现任意长的整数间进行四则运算的程序,要求完成长整数的加、减运算,乘除运算可选做。

在这里长整数没有范围限制,可任意长。

运算后的进位、借位等都要进行正确处理,可实现动态的输入,实时的输出。

测试数据:0、0;输出“0”2345,6789、-7654,3211;输出“1,0000,0000”1,0000,0000,0000、9999,9999;输出“9999,0000,0001”1,0001,0001、;1,0001,0001;输出“0”自选数据:1,1111;1,1111 输出“0”二、概要设计1、数据结构利用双向循环链表来实现对长整数的存储。

选择该数据结构来完成长整数的加减运算是因为a.要对长整数进行运算,需要对长整数进行存储,选择用链表对长整数存储。

b.存储的顺序是从左到右,运算的顺序则是从右到左,为操作方便选择循环链表。

c.在运算过程中有进位和借位的操作。

2、使用算法三、详细设计typedef struct DoubleNode //定义链表元素void InitNode(DLNode **head) //初始化链表int InsertNode(DLNode *head,int n,DataType x) //向链表第N个位置插入元素Xint digit(int n) //判断整数N有几位void PrintNode(DLNode *head) //打印链表void DestroyNode(DLNode **head)//销毁链表void add(DLNode *h1,DLNode *h2) //两数相加void jian(DLNode *h1,DLNode *h2) //两数相减int main() //入口函数四、调试分析由于在程序设计时,对于指针的不了解,编程时使用双重指针,无形中给自己增添了更多麻烦。

老师在检查的过程中指出并教导了这一点。

五、测试结果1、输入0和0做加法运算,输出“0”,结果如下图:2、输入2345,6789和-7654,3211做减法运算,输出“1,0000,0000”,结果如下图:3、输入1,0000,0000,0000和9999,9999做减法运算,输出“9999,0000,0001”,结果如下图:4、输入1,0001,0001和1,0001,0001做减法运算,输出“0”,结果如下图:5、输入1,1111和1,1111做减法运算,输出“0”结果如下图:六、心得体会本次实验主要是针对双向链表的练习,通过这次试验我们大家对于双向循环链表有了更深刻的记忆。

C语言计算器设计实验报告

C语言计算器设计实验报告

C语言计算器设计实验报告班级:11661 姓名:学号:38号一、实验目的:利用C语言编写一个简单的计算器,并能正确运行+,-,*,/四则运算。

二、实验内容:1、编写前分析;(1)、根据实验目的,要求键盘录入表达式,并运行后输出结果;由于键盘录入的表达式含数字和运算符,所以要选择用字符串数据类型输入。

(2)、由于输入的是字符串,而只有数值类型的数据才能参与运算,所以得把字符(串)类型的数据转换为数值类型的数据。

(3)、四则运算时,括号优先级高于乘除,乘除优先级高于加减,程序必须能正确判断其优先级才能得出正确的结果。

(4)、为了保证运行结果的精确度需正确选择所用变量的数据类型。

2、利用所学知识进一步分析以上内容;(1)、利用gets函数输入表达式,例如:gets(calc);(2)、C语言中将字符类型数据转化成数值类型数据方法很多,该程序利用函数库stdlib.h中的atof函数来实现这一目的。

同时注意主函数前加上预处理指令:#include<stdlib.h>。

(3)、为了能正确判断优先级,该程序利用函数间的多层嵌套,循环调用来实现;从优先级最高的括号开始判断,若有括号,再判断括号内部,若无括号判断是否为乘除,最后判断加减;括号内内容法方类似。

具体判断方法在后面将以实例详细介绍。

(4)、为了保证输出数据的精确度,该程序中函数f1()-f4()返回值均用double 类型;用g格式符输出最终结果让输出结果简明而又能保证其精确度。

3、开始编程:首先编写必要的预处理指令,声明必要的函数,定义必要的变量。

#include<stdio.h> (输入,输出函数需要该指令);#include<stdlib.h> (atof函数需要该指令);全局声明:Double f1(); (用于存放最终输出结果);Char calc[n]; (用于存放输入的表达式);Int n; (用于标注clac中的各个元素);编写主函数:int main(void){printf("请输入表达式:\n");gets(calc);(输入表达式)printf("原式=%g\n",f1());(程序将调用f1(),并输出f1()的结果)return(0);}由于四则运算先算出优先级最高的结果,并对同一优先级采用从左到右的顺序计算,所以最终的运算是对表达式进行加减运算。

深圳大学C程序设计Lab Assignment3实验报告(四则运算)

深圳大学C程序设计Lab Assignment3实验报告(四则运算)

附件(四)本文档仅限于学习交流,禁止抄袭。

程序结果截图非本人信息,请自行修改。

深圳大学实验报告课程名称:C程序设计实验名称:Lab Assignment 3学院:信息工程学院专业:指导教师:报告人:报告人学号:班级:实验时间:报告提交时间:教务处制四、实验结果与数据分析:1.首先,这次实验把我最近学的知识穿插了起来,让我进一步掌握了随机数、选择结构、循环控制、交互式输入输出等程序设计方法。

2.我认识到了写代码的重要性,例如空格,空行,缩进等细节。

因为做到了这些细节,程序一旦发生了错误,修改的时候很容易下手,一目了然,别人看着也舒服。

3.我学会了用visio软件画流程图,这个软件简单快捷易操作。

(注:“指导教师批阅意见”栏请单独放置一页)指导教师批阅意见:实验报告内容完整性(20分)实验数据准确性(程序与程序运行结果)(30分)实验结果与数据分析(20分)实验报告(格式规范、按时完成)(20分)实验态度(实验课考勤、实验表现)(10分)完整20 较完整15不完整10准确30较准确20不够准确10正确20较正确10不正确规范20较规范15不够规范10好10较好5一般2说明:说明:说明:说明:说明:。

c语言随机输出两个两位数进行四则运算

c语言随机输出两个两位数进行四则运算

在C语言中,随机输出两个两位数进行四则运算是一个非常基础但又非常有趣的问题。

通过这个问题,我们可以深入了解C语言中的随机数生成、四则运算、以及数据类型的转换等知识点。

这个问题也能够锻炼我们的逻辑思维能力和编程实践能力。

接下来,我将从简单到复杂的角度来探讨这个问题,希望能够帮助你全面地理解这个主题。

让我们来思考一下如何在C语言中生成两个两位数。

在C语言中,我们可以使用rand函数来生成随机数。

但是,rand函数生成的是一个0到RAND_MAX(通常是32767)之间的整数,如果我们要生成两个两位数,就需要对生成的随机数做一些处理。

一个简单的办法是利用取余和除法来限定生成的随机数在特定的范围内,然后再通过类型转换将其转换为两位数。

可以使用以下代码来生成两个两位数:```c#include <stdio.h>#include <stdlib.h>#include <time.h>int main() {int num1, num2;srand(time(0));num1 = rand() % 90 + 10;num2 = rand() % 90 + 10;printf("随机生成的两个两位数分别为:%d 和 %d\n", num1, num2);return 0;}```通过上面的代码,我们可以成功地生成两个两位数,接下来,让我们来思考如何进行四则运算。

在C语言中,四则运算非常简单直观,我们可以直接使用加减乘除等运算符来进行四则运算。

我们可以使用以下代码来进行加法运算:```cint result = num1 + num2;printf("两个两位数的加法运算结果为:%d\n", result);```当然,除了加法运算,我们还可以进行减法、乘法和除法运算,这些运算同样非常简单直观。

通过上面的代码,我们就可以得到两个两位数进行四则运算的结果了。

c语言实现分数的四则运算

c语言实现分数的四则运算

c语言实现分数的四则运算1. 前言分数,是我们初中数学学习的必修课程之一。

尽管在现实生活中或商业运营中,我们几乎不会用到分数的四则运算,但在计算机科学领域中,这个概念却显得尤为重要。

在这篇文章中,我们将会探究如何用C语言实现分数的四则运算,希望能对学习C语言和分数的学习者们有所帮助。

2. 定义分数结构体在C语言中,我们可以用结构体来定义一个分数类型。

一个分数包含两个整数:分子和分母。

因此,我们可以这样定义一个分数结构体:```cstruct fraction {int numerator; // 分子int denominator; // 分母};```3. 分数约分我们知道,约分是化简分数的一种基本方法,可以减少计算过程中分数的复杂性。

所以,在进行分数的四则运算之前,我们需要先将分数化简为最简形式。

例如,分数12/16可以化简为3/4,而分数6/9可以化简为2/3。

如何实现分数的约分呢?我们可以通过求出分子和分母的最大公约数(GCD),然后将它们同时除以这个最大公约数,从而得到最简形式的分数。

这样约分的好处在于能够节省内存和计算时间,同时也便于与其它化简后的分数进行比较。

下面是一个实现分数约分的函数:```cint gcd(int a, int b) { // 辗转相除法求最大公约数return (b == 0) ? a : gcd(b, a % b);}void reduce_fraction(struct fraction* f) {int g = gcd(f->numerator, f->denominator);f->numerator /= g;f->denominator /= g;}```该函数将传入的分数指针所指向的分数约去最简形式。

具体而言,我们先调用gcd函数求出分子和分母的最大公约数g,然后再将分子和分母都除以g,从而得到最简形式的分数。

4. 分数加减乘除有了分数约分函数后,我们便可以开始实现分数的四则运算。

四则运算实验报告

四则运算实验报告
a=rand()%100+1;/*在1~100随机取一个数*/
b=rand()%100+1;/*在1~100随机取一个数*/
printf("%d+%d=",a,b);
s=a+b;
scanf("%d",&ans1);//扫描用户输入答案//
if(ans1==s)
{
printf("Very Good!\n");
if(ans2==s)
{
printf("Very Good!\n");
count++;
}
else
{printf("Wrong!!!\n");}
}
}
printf("***正确率为%.0f%%***\n",100.0*count/N);
}
count,a,b,j,ans1,ans2用法与加法运算函数相同;N仍为10,作用相同;仍需srand((unsigned)time(NULL))使随机数a,b在每次运行中保持不同,用户在退出后再次进入并选择相同种类运算时,程序给出的数不会与先前给出的数相同;
整体功能:实现减法运算,并作出批改结果及正答率。
乘法运算函数
h();
void h()//乘法运算函数//
{
int count=0,j,a,b,ans1,ans2,s;
for(j=1;j<=N;j++)
{srand((unsigned)time(NULL));
a=rand()%100+1;
b=rand()%100+1;
while(a+b<201)//保证给出的是整除运算//
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

深 圳 大 学 实 验 报 告
课程名称: C 语言实验
实验名称: 100以内的四则运算游戏
学 院: 信息工程学院
指导教师: 张金凤
报告人: 王文杰 组号: 17
学号 2013130073 实验地点 教学楼D506
实验时间: 2014 年 4 月 16 日
提交时间: 2014.5.9
一、实验目的
一、学习和掌握C语言函数的定义与调用;
二、进一步掌握随机数、选择结构、循环控制、交互式输入输出等程序设计方法;
三、进一步掌握C语言中的数组定义和引用方法;
四、学习和掌握根据流程图进行模块化程序设计的思想。

二、实验要求
产生1到4之间的随机数,决定4则运算的符号,再产生两个0到99的随机数进行运算,并记录下做的题数以及正确的数目,当做题者输入n或N时退出程序并显示出完成题数及正确率。

三、实验程序详细流程图:。

相关文档
最新文档