for循环,可以有多强大?

博文网址: https://blog.csdn.net/xifengcode/article/details/105085537

在C或C++语言中,for循环是一个比较基本的语句。下面的例子展示了一个for循环可以有多强大。

题目:假设有五个整数,并且规定加减乘除各使用一次,编程序找到一个算术表达式,它的运算结果正好是24。假设加减乘除的算符优先级都是相等的,按从左到右的次序计算。

这个题目,是不是要写很多行代码呢?其实不用,一个for循环就够用了。下面给出了程序代码。注意:这个程序甚至没有使用if...else...,也没有使用switch...case。

#include<stdio.h>
int main()
{
	int j=1,S[5],t=1,k=0,A[5],D[5],P[6]={6939,7710,10023,11565,13878,14649},X,Y,Z;
	char O[5]="+-*/";
	double r=0.0;
	for(printf("我是一个聪明的小程序. 假设有五个整数, 并且规定加减乘除各\n使用一次, 我能找到一个算术表达式, 它的运算结果正好是24.\n( 假设加减乘除的算符优先级都是相等的, 按从左到右的次序计\n算 )\n*\t*\t*\t*\t*\t*\t*\t*\n请输入五个整数(例如, 2 4 8 21 5):\n"),scanf("%d%d%d%d%d",D,D+1,D+2,D+3,D+4);k<2880&&t;X=k/576-1,Y=P[k/24%6],Z=k/24%24/6<<1,S[++X%5]=Y>>Z%8&3,S[++X%5]=Y>>(Z+2)%8&3,S[++X%5]=Y>>(Z+4)%8&3,S[++X%5]=Y>>(Z+6)%8&3,S[++X%5]=4,r=j==1?D[S[0]]:r,A[j]=P[k%6]>>((k%24/6<<1)+((j-1)<<1))&3,r=A[j]==0?r+D[S[j]]:A[j]==1?r-D[S[j]]:A[j]==2?r*D[S[j]]:r/D[S[j]],t=r>23.9999&&r<24.0001&&j==4?0:1,j=j%4+1,k=j==1?k+1:k,k==2880||t==0?t==0?(printf("\n%d%c%d%c%d%c%d%c%d=24\n\n\n作者: tongxifeng@yeah.net\n请按Enter键退出 . . .",D[S[0]],O[A[1]],D[S[1]],O[A[2]],D[S[2]],O[A[3]],D[S[3]],O[A[4]],D[S[4]]),getchar(),getchar()):(printf("\n不存在这样的表达式\n\n\n作者: tongxifeng@yeah.net\n请按Enter键退出 . . ."),getchar(),getchar()):1);	
	return 0;
}

 

发布了16 篇原创文章 · 获赞 16 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览