使用函数后不进行循环
题目是输入四个数,然后让电脑把对应的四个数进行四则运算结果为24的输出并且是公式输出,例子1:4,5,6,7
例子1结果:4*((5-6)+7)=24
例子2:1,2,3,4
例子2结果:1*2*3*4
但是在找错时,我发现了,在主函数,在进入自创的stack函数后,运算结果后其没有返回主函数继续运算,为什么啊
#include"stdio.h"
int ji(int a,int b,int count){//这个函数是计算我输入的a,b,c,d在对应符号下的结果,a和b是数值,count是表示用什么方式计算
return count==0?a*b:count==1?a-b:count==2?a/b:a+b;
}
void stack(int a,int b,int c,int d){//这个函数是进行判断结果是否是24,以及循环进行各种结果列出,i决定的第一个符号,j决定的第二个符号,k决定的第三个符号,
int i,j,k,sum,sum2,sum1;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
for(k=0;k<4;k++){
sum=ji(ji(a,b,i),ji(c,d,j),k);//自创的ji函数的嵌套
printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",a,b,c,d,i,j,k,sum,ji(a,b,i),ji(c,d,j));//这里是我判断哪里错的来源,原来函数是没有这个输出函数,图1的来源也是来自于此,图2没有此函数,当然主函数还有一个输出函数图1图2都有,
if(sum==24){
xian(i,j,k,a,b,c,d);
}
}
}
}
}
void xian(int i,int j,int k,int a,int b,int c,int d){//满足结果为24就会进入这里运算,这里是输出结果结果
printf("%d",a);
fu(i);
printf("%d",b);
fu(j);
printf("%d",c);
fu(k);
printf("%d\n",d);
}
void fu(int a){//这里是xian的附属函数,主要是用于输出变量所代表的的符号
if(a==0){
printf("*");
}
else if(a==1){
printf("-");
}
else if(a==2){
printf("/");
}
else if(a==3){
printf("+");
}
}
void main(){//主函数,主要进行刚开始四个数的输入,以及对四个数打乱排序的输入
int ary={},i,j,k,a;
for(i=0;i<4;i++){
scanf("%d",&ary);
}
for(i=0;i<4;i++){
for(j=0;j<4;j++){
i==j?j++:j;
for(k=0;k<4;k++){
(j==k||i==k)?k++:k;
(j==k||i==k)?k++:k;
a=6-j-k-i;
printf("\t%d,%d,%d,%d\n",i,j,k,a);//这也是进行判断的函数,在图1和图2皆有这个函数输出,但是图1他只是短暂出现了一次。
stack(ary,ary,ary,ary);//这里是主要问题,这没有之后,i,j,k正常循环,
}
}
}
} #include <stdio.h>
float f(char c, float a, float b){
switch(c){
case '+': return a+b;
case '-': return a-b;
case '*': return a*b;
case '/': return a/b;
}
}
int main()
{
int arr, a, b, c, d, flag = 1;
char C = {'+', '-', '*', '/'};
scanf("%d%d%d%d", &arr, &arr, &arr, &arr);
for(int i = 0; i < 4; i++)
for(int j = 0; j < 4; j++)
for(int k = 0; k < 4; k++)
for(int l = 0; l < 4; l++)
if(i != j && i != k && i != l && j != k && j != l && k != l){
a = arr;
b = arr;
c = arr;
d = arr;
for(int x = 0; x < 4; x++)
for(int y = 0; y < 4; y++)
for(int z = 0; z < 4; z++){
if(f(C, f(C, f(C, a, b), c), d) == 24){
flag = 0;
if(z > 1){
if((x < 2 && y < 2) || y < 2) printf("(%d%c%d%c%d)%c%d = 24\n", a, C, b, C, c, C, d);
else if(x < 2) printf("(%d%c%d)%c%d%c%d = 24\n", a, C, b, C, c, C, d);
else printf("%d%c%d%c%d%c%d = 24\n", a, C, b, C, c, C, d);
}
else if(y > 2 && x < 2) printf("(%d%c%d)%c%d%c%d = 24\n", a, C, b, C, c, C, d);
else printf("%d%c%d%c%d%c%d = 24\n", a, C, b, C, c, C, d);
}
}
}
if(flag) printf("No Solution");
return 0;
}
傻眼貓咪 发表于 2021-12-31 19:24
厉害,兄弟,但是我想问的是为什么我那个中途运行到一半就停止循环了,明明没有对应的函数,鱼币给你了,有机会帮我想想函数为什么运行到一半就不运行了。
页:
[1]