计算机,c语言编程(简单题),急 求大神帮帮忙

如题所述

#include<stdio.h>
int main()
{
int selec(int ),m; //函数声明,通过这个函数就可以把满足题目要求的数输出来
int i;

printf("满足条件的整数有:\n");
for(i = 100 ; i < 1000 ; i ++)
{
m = selec(i); //把函数返回的值赋给 m
if(m != 0) // 当m = 0 时,不输出
printf("%d ",m);
}
printf("\n");

return 0;
}

int selec(int x) //函数定义
{
int i = 2,a[3],temp = x,m; //用一个数组a[3]来存放整数的百位,十位和个位,算法在while循环中
while(temp) //while 循环用来拆开百位,十位和各位,并赋值给数组,a[0]放百位,a[1]放十位,a[2]放个位
{
a[i --] = temp % 10;
temp = temp / 10;
}

if(a[0] == (2*a[1] + 1)) //三个if语句就是你题目的要求
if(a[2] == (3*a[1] - 1))
if((a[2] * 100 + a[1] * 10 + a[0] - x) == 99)
return x;
return 0; //函数结束,返回一个0。也就是当计算的整数不符合条件时,就会返回一个0,否则返回满足条件的数。
}

//写的有些急,可能运行效率不高,但还是可以算出结果的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-29
#include<stdio.h>
void main()
{
int shu,bai,shi,ge,shu1;
for(shu=100;shu<1000;shu++)
{
bai=shu/100;
shi=shu/10%10;
ge=shu%10;
shu1=100*ge+10*shi+bai;
if(bai==(shi*2+1)&&ge==(shi*3-1)&&99==(shu1-shu))
printf("%d\n",shu);
}

}本回答被网友采纳
第2个回答  2013-12-28
C语言编写,VC运行通过,可以帮到你不
int main()
{
int bit[3];//0、1、2分别存储个、十、百位
int i,newNum;
for(i=100;i<1000;i++)//遍历100~999之间的所有数
{
bit[0]=i%10;
bit[1]=i/10%10;
bit[2]=i/100;
if(bit[2]==(bit[1]*2+1) && bit[0]==(bit[1]*3-1))//如果同时满足基本条件:1.百位比十位大一 2.个位比十位小一,则考察下一个条件
{
newNum = bit[0]*100+bit[1]*10+bit[2];//个位和百位调换后的数
if(newNum==(i+99))
{
printf("%d满足条件\n",i);//打印满足条件的数
}
}
}
return 0;
}
相似回答