题目一:计算器
1.实验目的和意义:
利用c语言编写简易计算器,使我们更加熟练的掌握c语言及软件开发的基本步骤。该课题设计对学生来说是对这一学期有关c语言学习的一个评估是将c语言应用于生活中提高学生的动手能力。该课题有利于让学生将课本上学习的零散的知识融会贯通、综合运用、强化知识体
2.实验内容:
了解用户需求,
小组讨论算法,
编写程序,
调试程序,
漏洞修复及报告设计
3.小组成员分工:
小组讨论算法: 全体成员
编写程序: 樊义,高杰林
调试程序: 曹仲生
漏洞修复及报告设计 : 陈伟杰
4.设计要点:
字符串内提取数字,加减乘除优先级,能够识别简单的错误算式

5.源程序:
//不包含括号,纠错能力不够,
#include "stdio.h"
double z(char c[100],int *i)
{
int w=0,d=0;
double s=0;
while(c[*i]>='0'&&c[*i]<='9')
{w++;*i=*i+1;}
if(c[*i]=='.')
{
*i=*i+1;
while(c[*i]>='0'&&c[*i]<='9')
{w++;d++;*i=*i+1;}
}
while(w>0)
{
int t=1;
for(int tem=w;tem>1;tem--)
t=t*10;
if(w>d&&d>0)
s=s+t*(c[*i-w-1]-'0');
else
s=s+t*(c[*i-w]-'0');
w--;
}
//printf("整数型num=%3.5f\t",s);
if(d>0)
for(int temp=0;temp<d;temp++)
{s=s/10.0;printf("小数型num=%3.5f\t",s);}
//printf("函数内%d\t",*i);
//printf("小数型num=%3.5f\t",s);
return s;
}
void main()
{
start:
char c[100],a[100];
double s[100],num;
int i=0,j=0,k=0;
printf("输入需要运算的式子(仅加减乘除,且不包含括号,负数,不需输入等号):");
reput: scanf("%s",c);
i=0,j=0,k=0;
int *p=&i;
done: switch(c[i])
{
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':{num=z(c,p);goto done;}
case '*':{i++;num=num*z(c,p);goto done;}
case '/':{i++;num=num/z(c,p);goto done;}
case '+':{s[j]=num;a[k]=c[i];j++;i++,k++;if(c[i]>='0'&&c[i]<='9')goto done;else {printf("输入错误!请重输:");num=0;goto reput;}}
case '-':{s[j]=num;a[k]=c[i];j++;i++,k++;if(c[i]>='0'&&c[i]<='9')goto done;else {printf("输入错误!请重输:");num=0;goto reput;}}
case '\0':if(i!=0){s[j]=num;a[k]=c[i];break;}else printf("输入错误!请重输:");num=0;goto reput;
default:printf("输入错误!请重输:");num=0;goto reput;
}
//for(int n=0;n<j;n++)
// printf("%f%c",s[n],a[n]);
//printf("%f\n",s[j]);
if(a[k]=='\0')
{j=0;k=0;num=s[0];//printf("已执行!");
add: switch(a[k])
{
case '+':{num=num+s[++j];k++;goto add;}
case '-':{num=num-s[++j];k++;goto add;}
default:break;
}
}
printf("式子的结果为:%f\n",num);
printf("是否继续计算<y/n>.......");
char tmp;
scanf("%s",&tmp);
if(tmp=='y')
goto start;
}
6.小结:
第二篇:计算机C语言本科实验报告

本科实验报告
课程名称: 程序设计技术
实验项目:基本数据类型及运算(实验一)
实验地点: 计算机学院软件实验室
专业班级: 计科1101 学号:2011001491
学生姓名: 李康达
指导教师: 段利国
20##年 3 月16日
一、实验目的和要求
1.了解Windows环境下C语言的运行环境,了解所用的计算机系统的基本操作方法,学会独立使用该系统。
2.了解在该系统上如何编辑、编译、连接和运行一个C程序。
3.通过运行简单的C程序,初步了解C源程序的特点。
4.通过运行简单C程序, 掌握C语言的基本数据类型和运算符。
二、实验内容和原理
1.编程计算下面算术表达式的值。
(1)x+a%3*(x+y)%2/4 (设x=2.5,a=7,y=4.7)
(2)(float)(a+b)/2+(int)x%(int)y(设a=2,b=3,x=3.5,y=2.5)
先自己分析,再试着用程序求解,看得到的结果是否一致。
2.写出下面表达式运算后a的值,设原来a=10。设a和n已定义成整型变量。
(1)a+=a (2)a-=2
(3)a*=2+3 (4)a/=a+a
(5)a%=(n%=2),n的值等于5 (6)a+=a-=a*=a
先自己分析,再试着用程序求解,看得到的结果是否一致。
三、主要仪器设备
PC机+C语言编程环境
四、实验结果与分析
1.(1): 分析:“% ,/,*”的优先级相同,按先后顺序来计算。
#include<stdio.h>
main()
{int a=7;float x=2.5,y=4.7,z;
z=x+(int)(a%3*(x+y))%2/4;
printf("%f",z);
getch();
}
结果:
(2):分析:#include<stdio.h>
main()
{ int a=2.0,b=3.0;float x=3.5,y=2.5,z;
z=(float)(a+b)/2+(int)x%(int)y;
printf("%f",z);
getch();
}
结果:
2:#include<stdio.h>
main()
{ int a,n=5;
a=10;a+=a;printf("%4d",a);
a=10;a-=2;printf("%4d",a);
a=10;a*=2+3;printf("%4d",a);
a=10;a/=a+a;printf("%4d",a);
a=10;a%=(n%=2);printf("%4d",a);
a=10;a+=a-=a*=a;printf("%4d",a);
getch();
}
结果: