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

神奇算式题c语言

发布时间: 2022-09-10 15:02:24

‘壹’ c语言编程:随机出10道100以内的整数加减法算术题。

这个其实很简单
给你个完整的,我很少写完整的代码
#include <stdio.h>
main()
{
int i;
int a[10],b[10],c[10],d[10],e[10];
for(i=0;i<10;i++) //生成题目
{
while(1)
{
a[i]=rand()%100+1; //产生ab随机数
b[i]=rand()%100+1;
c[i]=rand()%4+1; //产生运算+-*/随即数
switch(c[i])
{
case 1:d[i]=a[i]+b[i];break;
case 2:d[i]=a[i]-b[i];break;
case 3:d[i]=a[i]*b[i];break;
case 4:while(b[i]==0) //在除法中,要是b是0,重新生成,直到不是0为止
b[i]=rand()%100+1;
d[i]=a[i]%b[i];break; //这里看余数,一般来说,不能整除,不可以
}
if((d[i]<100||d[i]>0)II(c[i]==4&&d[i]!=0)) //判断d是否在100之内,还有就是除法不能有余数
break; //满足条件,生成下一个,不满足重新来过
}
if(c[i]==4)
d[i]=a[i]/b[i]; //这个算出除法的结果
}
for(i=0;i<10;i++) //出题
{
printf("%d\n%d",i+1,a[i]);
if(c[i]==1)
putchar("+");
if(c[i]==2)
putchar("-");
if(c[i]==3)
putchar("X");
if(c[i]==4)
putchar("/");
printf("%d=",b[i]);
scanf("%d",e[i]);
system("cls");
}
for(i=0;i<10;i++) //最后打印结果
{
printf("%d\n%d",i+1,a[i]);
if(c[i]==1)
putchar("+");
if(c[i]==2)
putchar("-");
if(c[i]==3)
putchar("X");
if(c[i]==4)
putchar("/");
printf("%d=%d",b[i],e[i]);
if(d[i]==e[i])
printf("yes!!\n");
else
printf("NO!! %d\n",d[i]);
}
}

‘贰’ 用c语言作 通过计算机随机产生10道四则运算题

#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <time.h>
int main()
{
int a = 0;
int b = 0;
int mode = 0;//0:加 1:减 2:乘 3:除
int c = 0;
int result = 0;
int score = 0;
int i = 0;
srand((unsigned)time( NULL ) ); //初始化随机数发生器,使得每次运行生成的随机数不同
for(i=0;i<10;i++) //做十题
{
a = rand() % 10; //生成一个0~9之间的随机数
b = rand() % 10; //生成一个0~9之间的随机数
mode = rand() % 4; //生成一个0~3之间的随机数,代表运算符
printf("%d", a); //打印算式
switch(mode) //确定运算符
{
case 0:
printf("+ ");
result= a + b; //选择了+运算的正确答案
break;
case 1:
printf("- ");
result= a - b; //选择了-运算的正确答案
break;
case 2:
printf("* ");
result= a * b; //选择了*运算的正确答案
break;
case 3:
printf("/ ");
result= a / b; //选择了/运算的正确答案
break;
default:
printf("somethingis wrong!\n");
break;
}
printf("%d = ", b);
scanf("%d", &c); //输入答案
if(c == result) //与正确答案一致
{
score+= 10; //加分
printf("Right\n\n");
}
else
{
printf("Wrong\n\n"); //错开
}
}
printf("Yourscore is: %d\n\n\n", score);//显示十道题的得分
return1;
}

‘叁’ 求c语言程序代码,不要c++。

#include<stdio.h>
#include<string.h>

intslen(charstr[]){
intlen=0;
while(str[len])++len;
returnlen;
}

voidmerge(chars[],chart[]){
inti,len=slen(s);
for(i=0;t[i];++i){
s[len+i]=t[i];
}
s[len+i]='';
}

voidtostr(chars[],intnum){
inti,t,len=0;
while(num){
s[len++]='0'+num%10;
num/=10;
}
s[len]=0;
for(i=0;i<len/2;++i){
t=s[i];
s[i]=s[len-1-i];
s[len-1-i]=t;
}
}

voidSort(chars[]){
inti,j,k,len=slen(s);
chart;
for(i=0;i<len-1;++i){
k=i;
for(j=i+1;j<len;++j)
if(s[k]>s[j])k=j;
if(i!=k){
t=s[i];
s[i]=s[k];
s[k]=t;
}
}
}

intislike(intm,intn){
chars[10],t[10],u[10];
tostr(s,m);
tostr(t,n);
tostr(u,m*n);
merge(s,t);
Sort(s);
Sort(u);
return(strcmp(s,u)==0);
}intmain(){
inti,j,cnt=0;
for(i=1;i<10;++i){
for(j=100;j<1000;++j){
if(islike(i,j)){
printf("%dx%d=%d ",i,j,i*j);
++cnt;
}
}
}
for(i=10;i<100;++i){
for(j=10;j<100;++j){
if(islike(i,j)){
printf("%dx%d=%d ",i,j,i*j);
++cnt;
}
}
}
printf("%d ",cnt);
return0;
}

‘肆’ C/C++编程趣味题

妈妈的,虽然我程序写的很垃圾,还是把这道题给算出来的!

看在我费了这九牛二虎之力的份上,希望楼主多赏点分!!!

程序如下:
#include <vector>
#include <cstdio>
#include <ctype.h>
using namespace std;
#define maxsize 100

typedef int elemtype;
typedef struct sqstack sqstack;//由于sqstack不是一个类型 而struct sqstack才是

char ch[7]={'+','-','*','/','(',')','='};//把符号转换成一个字符数组
int f1[7]={3,3,5,5,1,6,0};//栈内元素优先级
int f2[7]={2,2,4,4,6,1,0};//栈外的元素优先级

struct sqstack
{
elemtype stack[maxsize];
int top;
};

void Initstack(sqstack *s)
{
s->top=0;
}

void Push(sqstack *s,elemtype x)
{
if(s->top==maxsize-1)
printf("Overflow\n");
else
{
s->top++;
s->stack[s->top]=x;
}
}

void Pop(sqstack *s,elemtype *x)
{
if(s->top==0)
printf("underflow\n");
else
{
*x=s->stack[s->top];
s->top--;
}
}

elemtype Gettop(sqstack s)
{
if(s.top==0)
{
printf("underflow\n");
return 0;
}
else
return s.stack[s.top];
}

elemtype f(char c)
{
switch(c)
{
case '+':
return 0;
case '-':
return 1;
case '*':
return 2;
case '/':
return 3;
case '(':
return 4;
case ')':
return 5;
default:
return 6;
}
}

char precede(char c1,char c2)
{
int i1=f(c1);
int i2=f(c2);//把字符变成数字
if(f1[i1]>f2[i2])//通过原来设定找到优先级
return '>';
else if(f1[i1]<f2[i2])
return '<';
else
return '=';
}

int Operate(elemtype a,elemtype theta,elemtype b)
{
int sum;

switch(theta)
{
case 0:
sum=a+b;
break;
case 1:
sum=a-b;
break;
case 2:
sum=a*b;
break;
default:
sum=a/b;
}
return sum;
}

int EvaluateExpression(char *exper)
{
char c;
int i=0,sum=0,idx=0;
int k=1,j=1;//设置了开关变量
elemtype x,theta,a,b;
sqstack OPTR,OPND;

Initstack(&OPTR);
Push(&OPTR,f('='));//0压入栈
Initstack(&OPND);
c=exper[idx++];
//先对+和-的情况忽略和左括号的情况
if(c==ch[2]||c==ch[3]||c==ch[5]||c==ch[6])
{
//printf("错误1 \n");
k=0;
return 0;
}

if(c==ch[0])
c=exper[idx++];//如果是+,把它覆盖
if(c==ch[1])
{
j=0;
c=exper[idx++];//也把-号覆盖
}
while(c!='='||ch[Gettop(OPTR)]!='=')
{
if(isdigit(c))
{
sum=0;
while(isdigit(c))
{
if(!j)
{
//实现了数字串前面有负号(之前是:sum=-(sum*10)-(c-'0')结果是-12+13=21)
sum=sum*10-(c-'0');
}
else
sum=sum*10+(c-'0');
c=exper[idx++];
}
//如果还是数字先不压栈,把数字串转化成十进制数字再压栈
Push(&OPND,sum);
j=1;
}
else
if(k)
{
switch(precede(ch[Gettop(OPTR)],c))
{
case'<': Push(&OPTR,f(c));//把它们整型化
c=exper[idx++];
//要除去下个是‘(’的情况 也把以运算符归到这里来
if(c==ch[0]||c==ch[1]||c==ch[2]||c==ch[3]||c==ch[5]||c=='\n')
{
//printf("出错2\n");
k=0;
return 0;//加了开关变量和返回0的值使程序更以操作
}

break;
case'=': Pop(&OPTR,&x);
c=exper[idx++];
//把ch[6]的情况也忽略了但此时并没有注意到右括号后面右运算符的情况
if(c==ch[0]||c==ch[1]||c==ch[2]||c==ch[3]||c==ch[5]||c=='\n')
{
//printf("出错2\n");
k=0;
return 0;
}

break;
case'>': Pop(&OPTR,&theta);
Pop(&OPND,&b);
Pop(&OPND,&a);//注意这里是谁先出栈
Push(&OPND,Operate(a,theta,b));
break;
}
}
}//在这里判断是否以运算符结束是不对的

return(Gettop(OPND));
}

int main()
{

vector<char> exper;
const char ops[]={'-','+'};
char exp[30];
int i,value,x[8],z[8];

for(x[0]=0;x[0]<2;x[0]++)
for(x[1]=0;x[1]<2;x[1]++)
for(x[2]=0;x[2]<2;x[2]++)
for(x[3]=0;x[3]<2;x[3]++)
for(x[4]=0;x[4]<2;x[4]++)
for(x[5]=0;x[5]<2;x[5]++)
for(x[6]=0;x[6]<2;x[6]++)
for(x[7]=0;x[7]<2;x[7]++)
for(z[0]=0;z[0]<=x[0];z[0]++)
for(z[1]=0;z[1]<=x[1];z[1]++)
for(z[2]=0;z[2]<=x[2];z[2]++)
for(z[3]=0;z[3]<=x[3];z[3]++)
for(z[4]=0;z[4]<=x[4];z[4]++)
for(z[5]=0;z[5]<=x[5];z[5]++)
for(z[6]=0;z[6]<=x[6];z[6]++)
for(z[7]=0;z[7]<=x[7];z[7]++)
{
exper.clear();
for(i=0;i<9;i++)
{
exper.push_back('1'+i);
}
for(i=8;i>0;i--)
{
if(x[i-1])
{
exper.insert(exper.begin()+i,ops[z[i-1]]);
}
}

for(i=0;i<exper.size();i++)
{
exp[i]=exper[i];
}
exp[i]='=';
exp[i+1]=0;

value=EvaluateExpression(exp);
if(value==100)
{
printf("%s%d\n",exp,value);
}
}
return 0;
}

运行输出:
123-45-67+89=100
123+45-67+8-9=100
123+4-5+67-89=100
123-4-5-6-7+8-9=100
12+3-4+5+67+8+8=100
12-3-4+5-6-7+89=100
12+3+4+5-6-7+89=100
1+23-4+56+7+8+9=100
1+23-4+5+6+78+9=100
1+2+34-5+67-8+9=100
1+2+3-4+5+6+78+9=100

补充:
刚才漏了几个头文件!

‘伍’ c语言题目:输入一个算式(没有空格),求结果

#include <stdio.h>
int main(void)
{
int k, i, m;
char str[100], x[100];
double result[100];
printf("请输入一个算式:");
scanf("%s", str);
k = i = 0;
do
{
result[k] = 0;
do
{
result[k] = result[k] * 10 + str[i] - '0';
i++;
}
while (str[i] != '+' && str[i] != '-' && str[i] != '*'
&& str[i] != '/' && str[i] != '=');
if (str[i] == '=')
{
x[k] = str[i];
k++; // 修改这里
break;
}
x[k] = str[i];
k++;
i++;
}
while (str[i] != '='); // simplify above
// calculate below
i = 0;
do
{ // 先计算高优先级运算符
while (x[i] == '*' || x[i] == '/')
{
if (x[i] == '*')
result[i] *= result[i + 1];
else
result[i] /= result[i + 1];
for (m = i + 1; m < k; m++) // 移动运算符和数据
{
result[m] = result[m + 1];
x[m - 1] = x[m];
}
}
i++;
}
while (x[i] != '=');
i = 0; // 然后计算低优先级运算符
while (x[i] == '+' || x[i] == '-')
{
if (x[i] == '+')
result[i] += result[i + 1];
else
result[i] -= result[i + 1];
for (m = i + 1; m < k; m++)
{
result[m] = result[m + 1];
x[m - 1] = x[m];
}
}
printf("%.0lf\n", result[0]);
return 0;
}

‘陆’ 蓝桥杯-神奇算式

标题:神奇算式
由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。
比如:
210 x 6 = 1260
8 x 473 = 3784
27 x 81 = 2187
都符合要求。
如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式。
请填写该数字,通过浏览器提交答案,不要填写多余内容(例如:列出所有算式)。

‘柒’ C语言编程四则运算计算题

在每个scanf()函数后面加一句:
getchar();
记住每一句后面都要加哦
如果正确了,再追问

‘捌’ 看不懂这道C语言算法题答案

答案选CS初始值赋值为0,用于累加求和进入判断X>0是否成立,T=X对10取余,首先得到1,即T=1;S=S+T,T的值赋给SX=INT(X/10)即X除以10取整赋给X,第一个即54321/10=5432,此时X=5432再次进入循环判断,S储存累加和,直到X<=0时,退出循环最终S放的值即为数字每位数字之和

‘玖’ c语言竖式问题

你看例题,就是775*33这个乘法竖式中,每一步计算(abc*e,abc*d,相加最后的结果)得到的数字都属于2,3,7,5这个数字集合,没出现其它数字