设计一个100以内的整数四则运算计算器测试程序

6.设计100以内的整数四则运算测试程序(1)选项菜单集成各功能函数模块(2)出题(每次出10道题目),运算符随机产生并符合小学二年级的测试水平(3)答题,答错的题给出正确答案_百度作业帮
6.设计100以内的整数四则运算测试程序(1)选项菜单集成各功能函数模块(2)出题(每次出10道题目),运算符随机产生并符合小学二年级的测试水平(3)答题,答错的题给出正确答案
6.设计100以内的整数四则运算测试程序(1)选项菜单集成各功能函数模块(2)出题(每次出10道题目),运算符随机产生并符合小学二年级的测试水平(3)答题,答错的题给出正确答案
你是刚才提问并评论的那个吧?在你基础上修改如下:#include&stdio.h&#include&stdlib.h&#include&time.h&#include&ctype.h&int&sy[10],sr[10],jd[10],jg[10];int&fs=0;char&fh[10];void&chufa(int&*s1,int&*s2,int&*s3){ int&i,b=0,c, int&cs[100]={0},sy, srand((unsigned)time(NULL));&&&&&&&&& sy=rand()%99+1; for(i=1;i&=i++) {
if(sy%i==0)&&{&&cs[b]&=&i;&b++;&}
else& &} c=rand()%b;// if(c==0)&&c=c+1; sr=cs[c]; jg=sy/ *s1= *s2= *s3=}void&jisuan(){ int&p; int&i, printf(&你将进行的是100以内数字的四则运算!\n&); srand((unsigned)time(NULL)); for(i=0;i&10;i++) {
sy[i]=rand()%100;
sr[i]=rand()%100;
p=rand()%4;
fh[i]='+',jg[i]=sy[i]+sr[i];&
else&if(p==1)
fh[i]='-';
if(sy[i]&sr[i])&{gh=sy[i];&sy[i]=sr[i];sr[i]=}
jg[i]=sy[i]-sr[i];
} &&&&else&if(p==2)
fh[i]='*';jg[i]=sy[i]*sr[i];
else&if(p==3)
fh[i]='/';
chufa(&sy[i],&sr[i],&jg[i]);
if(jg[i]&&&100)
printf(&第%2d题:%2d%c%2d=?&,i+1,sy[i],fh[i],sr[i]);
scanf(&%d&,&jd[i]);
if(jd[i]==jg[i])&&fs=fs+10; } printf(&\n测试结束!\n\n&);}char&caidan(char&c){ printf(&********&&数学四则运算测试软件&&********\n\n\n&); printf(&&&&&&&&1、显示答案&&&&&&2、错题正解\n\n&); printf(&&&&&&&&0、退出系统&&&&&&&&&&&&&&&&&\n\n&); printf(&\n*******************************************&); printf(&\n请输入选项(0-2):&); while(!(c&='0'&&c&'3'))c&=&getchar(); return&c;}void&dajuan(){ int&j; printf(&你的答卷为:\n&); for(j=0;j&10;j++)
printf(&%2d%c%2d=%2d\n&,sy[j],fh[j],sr[j],jd[j]); printf(&\n\n&);}void&zhengjie(){ int&k; printf(&你答错的题的正确答案为:\n&); for(k=0;k&10;k++)
{&&if(jd[k]==jg[k])&& &&&&else&&printf(&%2d%c%2d=%2d\n&,sy[k],fh[k],sr[k],jg[k]); } printf(&\n\n&);}void&main(){ int&key=1; char&i='0'; jisuan(); while(key)
scanf(&%c&,&i);
switch(caidan(i))
case&'1':{&&&printf(&\n\n\n&);dajuan();&&&}&&&
case&'2':{&&&printf(&\n\n\n&);zhengjie();&&&}&&&
case&'0':&&&&&key=0;
} }}PS:如果刚才不是你提问的,只是做了评论,建议不要用这个代码... 你懂的&及旗下全部分类
打开微信扫一扫,关注圣才:
sc100xuexi
认证官方微博
认证官方微博
程序设计计算题(练习二)
程序设计计算题(练习二)
  1、输入10个正整数,计算它们的和,平方和。(★)
  program I_1;
  i,s,d,p:integer;
  writeln('input ten positive number:');
  s:=0; p:=0;
  for i:=1 to 10 do
   read(d);
   s:=s+d; p:=p+d*d;
  writeln;
  write(s:8,p:8);
  2、统计1&&999中能被3整除,且至少有一位数字是5的数。(★)
  (答案:91)
  program I_4;
  i,s:integer;
  writeln; s:=0;
  for i:=1 to 999 do
   if(i mod 3 = 0) and ((i mod 10 = 5) or ((i div 10) mod 10 =5) or ((i div 100)=5))
   then begin write(i:8); s:=s+1; end;
  writeln; write(s:8);
  3、从键盘输入一个20~50之间的整数,统计出边长为整数,周长为输入数的不等边三角形的个数。
  (测试数据:输入27,输出18)(★★)
  program I_9;
  x,y,z,k,s:integer;
  writeln; writeln('input a integer number(20&n&50):'); readln(s);
  k:=0;
  for x:=1 to (s div 3) do
  for y:=x to ((s-x) div 2) do
   begin
   z:=s-x-y;
   if (x+y)&z then
  writeln(x:4,y:4,z:4); k:=k+1;
   end;
  if (s mod 3)=0 then k:=k-1;
  write(k);
  4、一个整数的立方可以表示为两个整数的平方差,如52-。
  编程:输入一个整数N,自动将其写成N3=X2-Y2。(★★★)
  (提示:N3=X2-Y2=(X+Y)(X-Y),所以必有(X-Y)=N,(X+Y)=N2。)
  (测试数据:N=2004;答案02-)
  program I_13;
  n,x,y:longint;
  writeln; read(n);
  for y:=1 to maxlongint do
  x:=y+n;
  if (n*n=x+y) then begin writeln(n,'^3=',x,'^2-',y,'^2'); exit; end;
  5、任意给定平面上三个点A(X1,Y1),B(X2,Y2),C(X3,Y3),试判断这三个点能否构成三角形。能则求出它的面积。(★★)
  (测试数据:
  program I_16;
  x1,y1,x2,y2,x3,y3,a,b,c,d,e,k:real;
  writeln; write('input X1,Y1 X2,Y2 X3,Y3:');
  read(x1,y1,x2,y2,x3,y3);
  a:=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
  b:=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
  c:=sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));
  if a&b then begin k:=a; a:=b; b:=k; end;
  if a&c then begin k:=a; a:=c; c:=k; end;
  if a&b+c then
  begin d:=(a+b+c)/2; e:=sqrt(d*(d-a)*(d-b)*(d-c)); write('area=',e:8:3); end
  else write('bu neng gou cheng san jiao xing');
  6、59=32+52+52=12+32+72,即59可以分别等于两组不同的自然数(每组各3个数)的二次幂之和,请找出10个最小的具有这种特性的数。(★★★)
  (分析:注意此程序中Goto语句的用法)
  (答案:(27、1、1、5、3、3、3)(33、1、4、4、2、2、5)(38、1、1、6、2、3、5)等)
  program e;
  label 1;
  m,a,b,c,n,a1,b1,c1,count:integer;
  writeln; count:=0; m:=0;
  1:repeat
   inc(m);
   if count&=10 then exit;
   n:=0;
   for a:=1 to trunc(sqrt(m/3)) do
   for b:=a to trunc(sqrt((m-a*a)/2)) do
  for c:=b to trunc(sqrt(m-a*a-b*b)) do
  if (a*a+b*b+c*c&m) then goto 1
  else if (a*a+b*b+c*c=m) then
   inc(n);
   if n=1 then begin a1:=a; b1:=b; c1:=c; end
   else if n=2 then
   begin
   inc(count);
   writeln(m:4,a1:4,b1:4,c1:4,a:4,b:4,c:4);
   goto 1;
   end;
  until count&=10;
  7、每一个素数的倒数都可以化为一个循环小数,例如:1/7可以化为0.(142857),1/13可化为
  0.(076923)。编程把17的倒数化为循环小数。(★★)
  (答案:0.(7647))
  program I_25;
  a,b,c,i,j,k:integer;
  e:array[1..200] of integer;
  yes:boolean;
  writeln;
  a:=1; b:=17;
  for i:=1 to 200 do
   c:=a*10 div b;
   a:=10*a mod b;
   e[i]:=c;
  for i:=1 to 200 do
  for j:=i+1 to 200 do
   if (e[i]=e[j]) then
   begin
  yes:=true;
  for k:=1 to j-i do
  if e[i]&&e[j] then yes:=false;
  if yes=true then
  for k:=i to j-1 do
   write(e[k]);
  halt;
   end;
  8、求数列1、5、17、53、161、。。。前20项的和。(提示: An=2+3&An-1)(★★)
  (答案:)
  program I_29;
  an,am,s:real;
  i:integer;
  writeln; am:=1; s:=1; write(am:20:0);
  for i:=2 to 20 do
   an:=am*3+2; s:=s+an; am:=an; write(am:20:0);
  writeln; write('totle:',s:0:0);
  9、编一程序实现:由键盘输入年月日后,计算机能打印出该日期是星期几。(★★)
  (提示:首先算出这一年的元旦是星期几。算法如下:①输入年份year;②根据下面公式计算:
  d=year+((year-1)div 4)-((year-1)div 100)+((year-1)div 400)
  d=d mod 7;那么d=0则表示为Sunday、d=1则表示为Monday、&&依此类推。
  ③输入月份month和日期day,计算该日期是这个年份中的第几天(x);
  ④计算(x+d-1)mod 7,得到星期几。
  注意月份中的二月是28天还是29天,需看年份是否为闰年,闰年定义为:年份能被400整除的是闰年,或者年份能被4整除但不能被100整除的是闰年,其它年份均不为闰年。闰年的计算方法如下:若((year mod 4=0)and(year mod 100&&0))or(year mod 400=0)则为闰年。)
  program e;
  yd:set of 1..12=[1,3,5,7,8,10,12]; {月大的月份}
  yx:set of 1..12=[4,6,9,11]; {月小的月份}
  a:array[1..12] of integer=(0,31,59,90,120,151,181,212,243,273,304,334);
  {a数组存放第i个月份的前i-1个月的天数}
  {因为这12个月的天数分别为31,28,31,30,31,30,31,31,30,31,30,31,故前i-1个月的天数为不断叠加}
  s:array[0..6] of string=
  ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
  year,m,day,d,x:integer;
  r,flag:boolean;
  writeln('input year:'); readln(year);
  if (year mod 400=0)or((year mod 4=0)and(year mod 100&&0)) then r:=true else r:=false;
  repeat
  writeln('input month:'); readln(m);
  until (m in [1..12]);
  flag:=false;
  repeat
  writeln('input day:'); readln(day);
  if (m in yd)and(day in [1..31]) then flag:=true
  else if (m in yx)and(day in [1..30]) then flag:=true
  else if (m=2)and(r=true)and(day in [1..29]) then flag:=true
  else if (m=2)and(r=false)and(day in [1..28]) then flag:=true;
  until flag=true;
  d:=year+((year-1) div 4)-((year-1) div 100)+((year-1) div 400); {按公式计算d}
  d:=d mod 7; {得到元旦为星期几}
  x:=a[m]+day; {x表示该天是该年的第几天}
  if (m&2)and(r=true) then x:=x+1; {如果月份大于二月且该年为闰年,那么天数需要多加一天}
  x:=(x-1+d) mod 7; {x-1表示在元旦的基础上,该天是第多少天}
  writeln('Today is ',s[x]);
  10、编程实现:键盘输入年月,计算机能打印出该月的月历,如输入2004、6,则输出: (★★★)
  SUMMONTUEWEDTHUFRISAT
  program e;
  yd:set of 1..12=[1,3,5,7,8,10,12]; {月大的月份}
  yx:set of 1..12=[4,6,9,11]; {月小的月份}
  a:array[1..12] of integer=(0,31,59,90,120,151,181,212,243,273,304,334);
  year,m,day,d,x,i:integer;
  r:boolean;
  writeln('input year:'); readln(year);
  if (year mod 400=0)or((year mod 4=0)and(year mod 100&&0)) then r:=true else r:=false;
  repeat
  writeln('input month:'); readln(m);
  until (m in [1..12]);
  if m in yd then day:=31
  else if m in yx then day:=30
  else if (m=2)and(r=true) then day:=29
  else day:=28;
  d:=year+((year-1) div 4)-((year-1) div 100)+((year-1) div 400); {按公式计算d}
  d:=d mod 7; {得到元旦为星期几}
  x:=a[m]; {x表示该月是的前m-1个月的天数}
  if (m&2)and(r=true) then x:=x+1; {如果月份大于二月且该年为闰年,那么天数需要多加一天}
  x:=(x-1+d) mod 7; {x-1表示在元旦的基础上,该天是第多少天,x表示上个月最后一天是星期几}
  writeln('SUM':4,'MON':4,'TUE':4,'WED':4,'THU':4,'FRI':4,'SAT':4);
  for i:=0 to x do write('':4); {上个月占用的星期用空格输出}
  for i:=1 to day do
  if (i+x) mod 7=0 then writeln;
  write(i:4);
  11、写出两个1,然后在它们中间插入2,成121;下一步是在上面数中每两个相邻的和数为3的数之间插入3,成为13231;再下一步又在上面数中任意两个相邻的和数为4的数中插入4,成为1432341;由键盘输入N,求出用上面方式构造出来的序列,其最后插入的数是N。假设这个序列不超过1000项,给出N=9时的运算结果。
  12、把所有3的方幂及不相等的3的方幂的和排列成递增序列:1、3、4、9、10、12、13、。。。这个序列的第300项是多少?(6840)
  13、两个1,两个2,两个3,这6个数可组成6位数312132。这个数有如下特点:两个1之间隔一位,两个2之间隔两位,两个3之间隔3位。231213也是一个符合条件的6位数。用数字1、2、3、4、5、6、7、8各两个,可以组成类似的16位数,请找出10个这样的16位数。
  14、对于所有的数字不完全相同的三位数(不够三位数的前面补零也当成是三位数)。我们定出如下计算规则:用这个三位数的三个数字可组成的最大数减去可组成的最小数,则得到一个新的三位数;对新的三位数还按照上面的规则继续算下去,最后会发现,我们陷入一个死循环里,或者说是跌入了一个数的黑洞里。用具体例子说明。比如从三位数123开始,计算如下321-123=198;981-189=792;972-279=693;963-369=594;954-459=495;954-459=495;&. 从其他的任何三位数开始,最终也都会停止在495,我们把495叫做三位数的黑洞。类似地也存在着一个由一个数组成的四位数的黑洞。请编程序把它找出来。(6174)
  (答案:与前面的数学黑洞问题相似,故此程序略)
  15、11,323,736这样的数叫回文数,它们的特点是最高位、最低位的数相同,次高位,次低位相同,&.其中11是个更特殊的回文数,它的平方121、立方1331也是回文数。这是最小的一个具有这种性质的回文数。请编程,找出三次方小于的具有上述性质的所有回文数。
  (答案:1、2、11、101、111)(★★)
  program e;
  i:longint;
  function huiwen(x:longint):boolean;
  a,b:array[1..100] of integer;
  m,n,y:longint;
  hw:boolean;
  if x&1 then begin huiwen:=false; exit; end;
  for m:=1 to 100 do a[m]:=0;
  y:=x; m:=0;
  repeat
   inc(m); a[m]:=y mod 10; y:=y div 10;
  until y=0;
  for n:=1 to m do b[n]:=a[m+1-n];
  n:=1;
  while (n&=m)and(a[n]=b[n]) do inc(n);
  if n=m+1 then huiwen:=true else huiwen:=false;
  {=============main=============}
  writeln;
  for i:=1 to 999 do
  if (huiwen(i)=true)and(huiwen(i*i)=true)and(huiwen(i*i*i)=true) then write(i:8);
  16、请编写程序,以简单算术表达式作为输入,构造对应的无括号表达式(无括号表达式的运算符写在运算对象的后面)。如:输入:A*(B-C)+D,应输出ABC-*D+;输入:(A+B)/C-D*E,应输出AB+C/DE*-。
  17、键盘输入一个只含加、减、乘、除四则运算和括号的数学表达式,编程求出该表达式的值并输出结果。
  18、一只公鸡值5元,一只母鸡值3元,3只小鸡值1元,现用一百元要买一百只鸡,问有什么方案?
  (答案:(0、25、75),(4、18、78),(8、11、81),(12、4、84))(★★)
  program e;
  i,j,k:integer;
  writeln;
  for i:=1 to 20 do
  for j:=1 to 33 do
   k:=100-i-j;
   if (k mod 3=0)and(5*i+3*j+(k div 3)=100) then
   writeln(i:8,j:8,k:8);
我的电子书共有 957 人关注过本帖
标题:求助 设计一个小学生自助四则运算练习软件
等 级:新手上路
&&已结贴√
&&问题点数:20&&回复次数:8&&&
求助 设计一个小学生自助四则运算练习软件
(1)学生在答题前能够选择是进行什么运算的练习,运算包括:+、-、*、/。
(2)每种运算设立二级难度系数,第一级为100以内的运算,第二级为1000以内的运算。学生答题前能够选择难度系数。
(3)要求数据是产生的随机数,学生只输入答案;如果答案正确,则显示“你的答案是正确的”;如果答案是错的,则显示出来“正确答案”。
(4)每道题做完后,可以选择继续练习或退出。
搜索更多相关主题的帖子:
来 自:神界
等 级:版主
威 望:331
帖 子:10747
专家分:42287
DO IT YOURSELF !
等 级:论坛游民
专家分:10
#include &stdio.h&
#include &stdlib.h&
#include&time.h&
int main()
&&& int i,a,b,answer,input,
A:&&& srand((unsigned)time(NULL));
&&& printf(&请输入运算:&);
&&& scanf(&%c&, &c);
&&& printf(&请输入难度系数:&);
&&& //printf(&%c\n&, c);
&&& scanf(&%d&, &i);
&&& i = i % 2;
&&& if (i == 0)
&&&&&&&&&&&&a = rand() % 100;
&&&&&&&&&&&&b = rand() % 100;
&&&&&&&&&&&&a = rand() % 1000;
&&&&&&&&&&&&b = rand() % 1000;
&&&&&&&&if (c == '+')
&&&&&&&&&&&&answer = a +
&&&&&&&&if (c == '-')
&&&&&&&&&&&&answer = a -
&&&&&&&&if (c == '*')
&&&&&&&&&&&&answer = a*b;
&&&&&&&&if (c == '/')
&&&&&&&&&&&&answer = a /
&&&&&&&&printf(&%d%c%d=&, a,c,b);
&&& scanf(&%d&, &input);
&&& if (input == answer)
&&&&&&&&printf(&你的答案正确\n&);
switch(choose)
&&& case 0:goto A;
&&& default:goto B;
B:&&& return 0;
&&&&&&&&printf(&你的答案错误\n&);
&&& scanf(&%d&,&choose);
&&& getchar();
switch(choose)
&&& case 0:goto A;
&&& default:goto B;
B:&&& return 0;
等 级:新手上路
楼上程序报错了
等 级:论坛游民
专家分:10
回复 4楼 lep123518
你用的什么编译器?
等 级:论坛游民
专家分:10
回复 4楼 lep123518
这是我运行后的截图
附件: 只有本站会员才能下载或查看附件,请
等 级:新手上路
#include &stdio.h&&&& /*是指标准库中输入输出流的头文件*/
void main()
&&& char command_&&/*开始字符*/
&&& double first_ /*第一个数*/
&&&&&&/*运算符(+、-、*、/)*/
&&& double second_&&/*第二个数*/
&&&&&&/*计算结果*/
&&& printf(&简单计算器程序\n----------------\n&);
&&& printf(&在'&' 提示后输入一个命令字符\n&);&&&&&/*输出提示信息*/
&&& printf(&是否开始?(Y/N)&&);&&&&&/*输出提示信息*/
&&& scanf(&%c&,&command_begin);&&& /*输入Y/N; */&&&&&&&&
&&& while(command_begin=='Y'||command_begin=='y') {&&& /*当接收Y/y命令时执行计算器程序*/
&&&&&& printf(&请输入一个简单的算式:&);&&&&&&/*输出提示信息*/
&&& scanf(&%lf%c%lf&,&first_number,&character,&second_number);&&& /*输入一个算式,如3+5*/
&&& switch(character) {&&& /*判断switch语句的处理命令*/
&&&&&&&&&&&&case '+':&&&/*当输入运算符为&+&时,执行如下语句*/
&&&&&&&&&&&&&&& value=first_number+second_&&&&&/*进行加法运算*/
&&&&&&&&&&&&&&& printf(&等于%lf\n&,value);
&&&&&&&&&&&&&&&&&&&&/*转向switch语句的下一条语句*/
&&&&&&&&&&&&case '-':&&&&&/*当输入运算符为&-&时,执行如下语句*/
&&&&&&&&&&&&&&& value=first_number-second_&&&&&/*进行减法运算*/
&&&&&&&&&&&&&&& printf(&等于%lf\n&,value);
&&&&&&&&&&&&&&&&&&&&/*转向switch语句的下一条语句*/
&&&&&&&&&&&&case '*':&&&&&/*当输入运算符为&*&时,执行如下语句*/
&&&&&&&&&&&&&&& value=first_number*second_&&&&&/*进行乘法运算*/
&&&&&&&&&&&&&&& printf(&等于%lf\n&,value);
&&&&&&&&&&&&&&&&&&&&/*转向switch语句的下一条语句*/
&&&&&&&&&&&&case '/':&&&&&/*当输入运算符为&/&时,执行如下语句*/
&&&&&&&&&&&&&&& while(second_number==0){&&/*若除数为零,重新输入算式,直到除数不为零为止*/
&&&&&&&&&&&&&&&&&&&&&&&&printf(&除数为零,请输入一个算式:&);&&&&&&/*输出提示信息*/
&&&&&&&&&&&&&&&&&&&&&&&&scanf(&%lf%c%lf&,&first_number,&character,&second_number);&&& /*输入一个算式,如3+5*/
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& value=first_number/second_&&&&&/*进行除法运算*/
&&&&&&&&&&&&&&& printf(&等于%lf\n&,value);
&&&&&&&&&&&&&&&&&&&&/*转向switch语句的下一条语句*/
&&&&&&&&&&&&default:
&&&&&&&&&&&&&&& printf(&非法输入!\n&);&&&&&/*当输入命令为其他字符时,执行如下语句*/
&&&&&&&&}&&&&&//结束switch语句
&&&&&&&&printf(&是否继续运算?(Y/N)&&);&&&&&/*输出提示信息*/
&&&&&&&&fflush(stdin);&&&//清空缓冲区
&&&&&&&&scanf(&%c&,&command_begin);&&&&&/*输入命令类型如y/Y*/
&&& }&&&&&//结束while循环语句
&&& printf(&程序退出!\n&);&&& /*退出循环时显示提示信息*/
等 级:新手上路
#include &stdio.h&
int main()
&&& float data1, data2;
&&& while (3 == scanf(&%f%c%f&, &data1, &op, &data2) )
&&&&&&&&printf(&%f%c%f=&, data1, op, data2);
&&&&&&&&switch (op)
&&&&&&&&case '+':
&&&&&&&&&&&&result = data1 + data2;
&&&&&&&&&&&&
&&&&&&&&case '-':
&&&&&&&&&&&&result = data1 - data2;
&&&&&&&&&&&&
&&&&&&&&case '*':
&&&&&&&&&&&&result = data1 * data2;
&&&&&&&&&&&&
&&&&&&&&case '/':
&&&&&&&&&&&&result = data1 / data2;
&&&&&&&&&&&&
&&&&&&&&default:;
&&&&&&&&printf(&%f\n&, result);
&&& return 0;
//这个也可以,看起来更加简单一点
版权所有,并保留所有权利。
Powered by , Processed in 0.033323 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved}

我要回帖

更多关于 整数四则运算计算器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信