C语言题目。求解答。

1、一辆固定车速行驶的轿车,司机上午十时看到里程计上是个回文数95859,七小时后,又出现了一个新的回文数。问这辆轿车每小时行驶几公里?2、足球门票40元一张,降价后的观... 1、一辆固定车速行驶的轿车,司机上午十时看到里程计上是个回文数95859,七小时后,又出现了一个新的回文数。问这辆轿车每小时行驶几公里?
2、足球门票40元一张,降价后的观众人数增加了三分之一,收入增加了十分之一。问一张门票降价多少元?
3、老师今年是小明年龄的七倍。若干年后老师的年龄将是小明的六倍、又若干年后是五倍、四倍、三倍和二倍(都是整数倍),问小明和老师今年各多少岁?

求解答,新人初学c语言,望各位大神帮帮忙!!!谢谢!
展开
 我来答
暮鼓晨钟cy
2013-08-05 · TA获得超过282个赞
知道小有建树答主
回答量:205
采纳率:100%
帮助的人:53.1万
展开全部
我不懂C,用C++写给你,语法和原理是一样的,只是写法有些许不同,我添加了注释,应该看得懂的。
1.首先申明一点,比95859大的回文数中最小的应该也是5位数,所以我方便起见直接用了5位的数组,然后数组赋初值9,5,8,5,9,每次数组最后一位+1,判断进位后进行一次回文检测
#include<iostream> //申明输入输出的,C中是最常用的那个头文件
#include<iomanip> //申明输出小数位数的,C中应该不用

using namespace std; //命名空间,C中不用

int main()
{
int s[5]={9,5,8,5,9}; //数组表示路程
double v; //速度
while(1)
{
s[4]++; //路程增加
for(int i=4;i>=0;i--) //判断进位
{
if(s[i]==10)
{
s[i]=0;
s[i-1]++;
}
}

if(s[0]==s[4]&&s[1]==s[3]) //判断是否是回文,若是,把数组换算成int
{
int l=s[0]*10000+s[1]*1000+s[2]*100+s[3]*10+s[4];
l-=95859;
v = l/7;
break;
}
}

cout << setprecision(2) << std::fixed << v << endl; //输出速度v,同时限定输出两位小数

return 0; //C中不用
}

2.我们设降价后的票价为x,人数为n,我觉得题目有点歧义,因为不清楚是一开始票价就变为x,还是中途降价为x后人数才增加了三分之一,第二种情况很好算,你自己列个方程用c算下,这里只写第一种,即一开始就降价了。由题可得方程是,x*n*4/3-40n=40n/10,所以x初值为40,每次-1,当满足等式的时候的x即为票价,作差可得降价多少元
#include<iostream> //申明输入输出的,C中是最常用的那个头文件

using namespace std; //命名空间,C中不用

int main()
{
int x=40; //最初的票价
while(x--) //每次循环x-1
{
if(x*4/3-40==4) //如果x满足等式则为当前票价,跳出循环
break;
}

cout << 40-x << endl; //输出降价e

return 0;
}

3.第三题我想不出怎么用C++把题目的意思表达出来,但是可以从数学的角度入手,我们设老师的年龄是y,学生的年龄为x,若干年分别用k1~k5来表示,可得式子
y=7x
y+k1=6(x+k1) --> x=5k1
y+k2=5(x+k2) --> x=2k2
y+k3=4(x+k3) --> x=k3
y+k4=3(x+k4) --> 2x=k4
y+k5=2(x+k5) --> 5x=k5
由于,以上所有变量均为正数,不难发现,x为5和2的公倍数,最小的就是10了,那么答案肯定是10,至于具体的语言实现,我先写个不太成熟的你参考下。根据我们的分析,学生的最小年龄从3岁开始,这个是合乎生活的年龄,百度可得地球上最长寿的人只活了138岁,为了安全起见,老师年龄的上限设为200岁,即学生为30岁,这是我们判断的范围
#include<iostream> //申明输入输出的,C中是最常用的那个头文件

using namespace std; //命名空间,C中不用

int main()
{
int s=3; //学生的年龄
int t; //老师的年龄

int b1=0,b2=0,b3=0,b4=0,b5=0;

for(s=3;s<30;s++)
{
t=7*s; //老师年龄是学生7倍

for(int y=t,x=s;x<100;x++,y++) //判断是否合乎题意
{
int k1=6*x;
int k2=5*x;
int k3=4*x;
int k4=3*x;
int k5=2*x;

if(y%k1==0) //老师年龄是学生6倍
b1=1;
if(y%k2==0&&b1==1) //只有满足上一个条件后的若干年,这个条件才能进行判断
b2=1;
if(y%k3==0&&b1*b2==1)
b3=1;
if(y%k4==0&&b1*b2*b3==1)
b4=1;
if(y%k5==0&&b1*b2*b3*b4==1)
b5=1;
if(b5)
break;
}
if(b5)
break;
else {b1=0,b2=0,b3=0,b4=0,b5=0;}
}

cout << s << " " << t << endl;

return 0;
}
十华年
2013-08-05 · 超过21用户采纳过TA的回答
知道答主
回答量:121
采纳率:0%
帮助的人:54.9万
展开全部
第一题:
# include <stdio.h>
# include "string.h"

# define N 20
# define TRUE 1
# define FALSE 0

int IsPalindrome (int a)
{
char arr1[N] = {0}, arr2[N] = {0} ;
int temp, i, j, iCount = 1 ;

//得到数字a的位数
temp = a ;
while (1)
{
temp = temp / 10 ;
if (temp > 0)
iCount ++ ;
else
break ;
}

//把数字a存到数组arr1中
for (i = 0 ; i < iCount ; i ++)
{
arr1[i] = a % 10 ;
a = a / 10 ;
}

//把数组arr1倒序存到数组arr2中
for (j = iCount - 1, i = 0 ; i < iCount ; i ++, j --)
arr2[j] = arr1[i] ;

//如果arr1与arr2相同,则是回文数
if (strcmp (arr1, arr2) == 0)
return TRUE ;
else
return FALSE ;
}

main()
{
int iNum = 95859 ;
float iSpeed ;
int kkk = 0 ;

//找到95859的下一个回文数存在iNum中
printf ("此题多解:\n") ;
while (1)
{
iNum += 1 ;
if (IsPalindrome (iNum))
{
iSpeed = (float)(iNum - 95859) / (float)7 ;
if (iSpeed > 200) //假设车速不超过200
break ;
printf ("回文数:%d 车速:%.2f Km/h\n", iNum, iSpeed) ;
}
}
}

第二题小学数学题:穷举法解一元方程。

第三题答案:
# include "stdio.h"
# define TRUE 1
# define FALSE 0

int IsTrue (int XiaoMingAge, int TeacherAge, int Beishu) ;

int main ()
{
int XiaoMingAge = 1 ;

while (XiaoMingAge < 150)
{
//依次传入小明的年龄和老师的年龄和相应的倍数,如果都满足刚输出, 
//如果不满足测试下一个 ”XiaoMingAge ++“(从小明一岁开始测试,到                 //小明150岁结束(够长了吧))
if (IsTrue (XiaoMingAge, 7 * XiaoMingAge, 6) 
&& IsTrue (XiaoMingAge, 7 * XiaoMingAge, 5)
&& IsTrue (XiaoMingAge, 7 * XiaoMingAge, 4) 
&& IsTrue (XiaoMingAge, 7 * XiaoMingAge, 3) 
&& IsTrue (XiaoMingAge, 7 * XiaoMingAge, 2))
{
printf ("小明年龄:%d\t老师年龄:%d\n",
     XiaoMingAge, 7 * XiaoMingAge) ;
}
XiaoMingAge ++ ;
}
return 0 ;
}

//传入一个小明的年龄和老师的年龄,看看是否满足Beishu,如果满足返回TRUE
int IsTrue (int XiaoMingAge, int TeacherAge, int Beishu)  
{
while (XiaoMingAge < 150)
{
XiaoMingAge ++ ;
TeacherAge ++ ;

if (TeacherAge / XiaoMingAge == Beishu
 && TeacherAge % XiaoMingAge == 0)
return TRUE ;
}
return FALSE ;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式