谁帮我解决两道C语言的题。一定要正确的。并且把字搞清楚一点。

第一题,,,如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称自恋性数)。如407=4的立方+0的立方+7的立方 就是一个阿姆斯特朗数。试编程求10000以内的所有阿姆斯特朗数。
第二题,,,
张三说李四在说谎,李四说王五在说谎,王五说张三和李四都在说谎。现在问:这三人中到底谁说的是真话,谁说的是假话?

第一题比较容易,就是穷举个个数,取出各个位计算,比较一下就行了
第二题
#include <stdio.h>

int test(int a,int b,int c) //test三个参数,分别为张三,李四,王五
{
if((!b==a)&&(!c==b))//张三说李四在说谎,李四说王五在说谎,是互斥的关系
{
if(c==1)//符合第一个条件后,假设王五说真话
{
if(a==0 && b==0) // 则张三和李四都在说谎
{
return 1;//符合条件
}else{
return 0; //不符合条件
}
}else{ //符合第一个条件后,假设王五说假话
if((a||b)==1){ // 则张三和李四至少有一个说真话(都在说谎的非运算)
return 1;//符合条件
}else{
return 0; //不符合条件
}
}
}else{
return 0; //不符合条件
}
}

int main(int argc, char *argv[])
{
int result[8];
int i;
/* 三个人是否说谎话的8种组合 */
result[0] = test(1,1,1);//test三个参数,分别为张三,李四,王五,1表示真话,0表示假话
result[1] = test(1,1,0);
result[2] = test(1,0,1);
result[3] = test(1,0,0);
result[4] = test(0,1,1);
result[5] = test(0,1,0);
result[6] = test(0,0,1);
result[7] = test(0,0,0);

for( i=0;i<8;i++){
printf("result[%d]=%d\n",i,result[i]);
}

system("PAUSE");
return 0;
}

根据运算结果result[5]为1,所以,张三和王五说假话,李四说真话。追问

我其实看不懂这些,你只需要给我把答案搞上就行。

追答

答案:张三和王五说假话,李四说真话

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-27
第一题:407=4的立方+0的立方+7的立方=4*100 + 0 * 10 + 7*1
第二题:暂时不清楚
第2个回答  2012-09-27
不懂
第3个回答  2012-09-27
以前写过,不过忘了。。。。。。。
相似回答