当前位置:首页 » 编程语言 » c语言怎么检验计算结果
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言怎么检验计算结果

发布时间: 2022-10-23 00:15:26

c语言 随机生成10个加法算式,输入每个算式的计算结果,判断计算是否正确,输出成绩

除法没有校验,有余数,输出整除即可;



#include "stdafx.h"
#include <stdlib.h>
#include <time.h>
int ChoiceFunc(int a, int b,int Suanfa)
{
int result = 0;
switch (Suanfa)
{
case 0:
result = a + b;
break;
case 1:
result = a - b;
break;
case 2:
result = a * b;
break;
case 3:
if (b!=0)
{
result = a / b;
}

break;
default:
break;
}
return result;

}


int main()
{
int a1, b1, c1,jieguo,shuru;
int jishu = 0;
int secore=0;
srand((unsigned)time(NULL));
for (int i = 0; i < 3000; i++)
{
a1 = rand() % 100;
b1 = rand() % 100;
c1 = rand() % 4;
jieguo = ChoiceFunc(a1, b1, c1);
if (jishu<10&&b1!=0)
{

if (jieguo > 0 && jieguo < 100)
{
jishu++;
switch (c1)
{
case 0:
printf("%d+%d= ", a1, b1 );
printf("请输入结果:");
scanf("%d", &shuru);
if (shuru==jieguo)
{
secore++;
printf("正确 ");
}
break;
case 1:
printf("%d-%d= ", a1, b1);
printf("请输入结果:");
scanf("%d", &shuru);
if (shuru == jieguo)
{
secore++;
printf("正确 ");
}
break;
case 2:
printf("%d*%d= ", a1, b1);
printf("请输入结果:");
scanf("%d", &shuru);
if (shuru == jieguo)
{
secore++;
printf("正确 ");
}
break;
case 3:
printf("%d/%d= ", a1, b1);
printf("请输入结果:");
scanf("%d", &shuru);
if (shuru == jieguo)
{
secore++;
printf("正确 ");
}
break;
default:
break;
}
}


}
else
{
//jishu = 0;
//printf("结束 ");
}
}
printf("结束,分数为%d ", secore);
getchar();
getchar();
return 0;
}


⑵ 在C语言中怎样判断一个程序运算结果是否溢出,举个例子,你用C语言编写程序求n!,判断n为几时n!溢出

#include<stdio.h>

unsignedf(unsigned*n){

unsignedi=2,res=1,lres=1;

while(1){

lres*=i;

if(lres<res){

*n=i-1;

returnres;//溢出后,阶乘的结果会变小。

}

res=lres;

i++;

}

returni;//本行是不会执行的,这是为了函数需要返回值而设的。

}

intmain(){

unsignedn;

printf("%u!=%u ",n,f(&n));

return0;

}

⑶ 在C语言中如何用栈检验一个算数表达式的正确

给你一个完整的程序,自己按需要修改吧。这是我2001年使用过的一个段落。编译后,可以直接运行。 编译如下: /************* Compile: gcc $1.c -o $1.e -lm *********/ #include <stdio.h> #include <stdlib.h> #include <math.h> #define TTRUE 0 #define TFALSE 1 #define MY_BUF_SIZ 256 #define WORD_SIZ 32 int A=100; float B=200.002; double C=300.033; struct Variables{ char name[64]; int ty; //int--0,float--1,double--2 double val; }VarTable[]={ {"A",0,0.0}, {"B",1,0.0}, {"C",2,0.0} }; int VarTableLen = 3; int isTheVar(char *tv){ int i = 0; void setVarValue(int); for(i = 0;i<VarTableLen;i++){ if(strcmp(VarTable[i].name,tv) == 0){ setVarValue(i); return i; } } return -1; } double getVarValue(int i){ return VarTable[i].val; } void setVarValue(int i){ if(strcmp(VarTable[i].name,"A") == 0){ VarTable[i].val = A; }else if(strcmp(VarTable[i].name,"C") == 0){ VarTable[i].val = C; }else if(strcmp(VarTable[i].name,"B") == 0){ VarTable[i].val = B; }else{ printf("Out of Var Range!\n");; exit(TFALSE); } } struct expr_Cstr{ char var[WORD_SIZ]; int ty; }expr[MY_BUF_SIZ]; int expr_n = 0; int expr_pos = -1; int getWord(char *str,char *wd){ int j = 0; int WDT = 0,WTX = 0; int pos = ++expr_pos; wd[0] = 0; for(;str[pos]!=0 && (str[pos] == ' ' || str[pos] == '\t');pos++); expr_pos = pos; for(;str[pos];pos++){ expr_pos = pos; switch(str[pos]){ case '\t': case ' ': case '^': case '/': case '*': case '(': case ')': case '+': case '-': if(WDT){expr_pos --;WTX = 1;break;} wd[j++] = str[pos];wd[j] = 0; return 1; default: WDT = 1; wd[j++] = str[pos];wd[j] = 0; } if(WTX)break; } if(WDT)return 2; return 0; } #define NUM_TYPE 0 #define STR_TYPE 1 #define OPR_TYPE 2 int getWordType(char *wd){ printf("wd=%s\n",wd); switch(wd[0]){ case '^': case '/': case '*': case '(': case ')': case '+': case '-': return OPR_TYPE; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': return NUM_TYPE; default: return STR_TYPE; } return STR_TYPE; } void expParse(char *str){ int t,top=0; char wd[WORD_SIZ]; char stack[MY_BUF_SIZ]; t=0; while(getWord(str,wd)){ switch(getWordType(wd)){ case STR_TYPE: //VariableName expr[t].ty = STR_TYPE; strcpy(expr[t++].var,wd); break; case NUM_TYPE: expr[t].ty = NUM_TYPE; strcpy(expr[t++].var,wd); break; case OPR_TYPE: expr[t].ty = OPR_TYPE; if(strcmp(wd,"(") == 0){ top++; stack[top]=wd[0]; }else if(strcmp(wd,")") == 0){ while(top!=0 && stack[top]!='('){ expr[t].ty = OPR_TYPE; sprintf(expr[t++].var,"%c",stack[top]); top--; } top--; }else if (strcmp(wd,"+") == 0 || strcmp(wd,"-") == 0){ while(top!=0&&stack[top]!='(') { expr[t].ty = OPR_TYPE; sprintf(expr[t++].var,"%c",stack[top]); top--; } top++; stack[top]=wd[0]; }else if (strcmp(wd,"*") == 0 || strcmp(wd,"/") == 0){ while(top!=0 && (stack[top]=='*'||stack[top]=='/')) { expr[t].ty = OPR_TYPE; sprintf(expr[t++].var,"%c",stack[top]); top--; } top++; stack[top]=wd[0]; }else if(strcmp(wd,"^") == 0) { top++; stack[top]=wd[0]; } break; } } while(top!=0) { expr[t].ty = OPR_TYPE; sprintf(expr[t++].var,"%c",stack[top]); top--; } expr_n = t; printf("expression = ["); for(t = 0;t<expr_n;t++)printf("%s",expr[t].var); printf("]\n"); } //expression over double getNumValue(int t){ return (double)atof(expr[t].var); } double getExpValue(){ int t,top=0; double val_stk[64]; int is_val = -1; t=0; top=-1; for(t = 0;t<expr_n;t++){ switch(expr[t].ty){ case NUM_TYPE: val_stk[++top]=getNumValue(t); break; case OPR_TYPE: switch(expr[t].var[0]){ case '^': val_stk[top-1]=pow(val_stk[top-1],val_stk[top]); break; case '+': val_stk[top-1]=val_stk[top-1]+val_stk[top]; break; case '-': val_stk[top-1]=val_stk[top-1]-val_stk[top]; break; case '*': val_stk[top-1]=val_stk[top-1]*val_stk[top]; break; case '/': if(val_stk[top]!=0){ val_stk[top-1]=val_stk[top-1]/val_stk[top]; }else { printf("ERROR!!! Divide by Zero.\n"); exit(0); } break; default: printf("ERROR!!! unknown operator <%s>.\n",expr[t].var); exit(0); } top--; break; case STR_TYPE: if((is_val = isTheVar(expr[t].var))>=0){ val_stk[++top] = getVarValue(is_val); }else{ if(expr[t].var[0]<'0' || expr[t].var[0] >'9'/*expr[t].var[0]>'F'*/){ printf("Bad Var <%s>\n",expr[t].var); exit(TFALSE); } val_stk[++top] = atof(expr[t].var); } //printf("This version does not process [STR_TYPE]\n"); break; default: printf("ERROR!!! unknown var TYPE <%d>.\n",expr[t].ty); exit(0); } } printf("The Result is val_stk[%d]=%g\n",top,val_stk[top]); return val_stk[top]; } //getExpValue Over int main(int argc,char *argv[]){ if(argc<2){ printf("Usage: %s expression\n",argv[0]); exit(0); } //expression Begin expParse(argv[1]); //getExpValue Begin printf("we got value = %g\n",getExpValue()); exit(0); }

⑷ C语言如何实现判断用户输入的算式结果正确

将用户输入的算式存在字符串中,然后将字符串中的字符转换成对应的数字和符号,自己算一遍。如果对,则告诉用户对,如果错,则告诉用户错。

⑸ c语言中如何判断计算结果精确到小数点后8位

int multiply(int i)
{
if (i ==1 || i == 0) return 1;
else return (i*multiply(i-1));

}
int _tmain(int argc, _TCHAR* argv[])
{
int i=1,j=1;
double x;
scanf("%lf",&x);
double result=1;

while (1)
{
j = j*(-1);
int sum = multiply(i);
double k;
k=pow(x,2*i)/sum;
result =result+j*pow(x,2*i)/(double)sum;
if (k<=0.00000001)
{printf("result = %.8f ; i = %d",result, i);
break;}

i++;
}
system("pause");
return 0;
}

⑹ 计算机c语言答案是怎么算出来的

计算过程如下:

m=f(f(f(1)));

先计算最内层的f(1),此时返回2作为中间的f调用参数,变为

m=f(f(2));

再计算内层的f(2),此时返回4作为外层的f调用参数,变为

m=f(4);

此时返回8,故m是8。

在手机上用易历知食软件里的微C程序设计来运行此程序,检验一下结果,手机上的代码如下:

⑺ C语言程序中,要检测一个数据是否在变化着,应该怎么实现

方法很多种:1)单步调试跟踪变量值。
2)如上所说,用一个暂存变量保存它的值,比较。
3)在想查看它的值的地方printf();
c语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序设计中备受青睐。C语言编译器普遍存在于各种不同的操作系统中,例如Microsoft Windows、macOS、Linux、Unix等。C语言的设计影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。
C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。

⑻ c语言计算检验和。。。。。。。。

第一段是将高nleft/2位的数字累加第二段式说 如果nleft=1 sum等于 w的高位第三段 将sum的高十六位移到地十六位 并与原sum的低16位相加然后再把得到的这个数取反 至于这句话sum+=(sum>>16); 我也没太看懂sum已经剩下低16位了再右移不久是0了吗 加0有什么意义呢?这大概是一个校验码的生成方法你对照这个方法看代码应该就很容易理解了我现在看代码也就是看看代码再干什么