编程题计算
‘壹’ 编程题:一只大鸡3元,三只小鸡1元,如何用100块钱买100只鸡
简单啊。。。
大鸡为x, 小鸡数为3y(说明:这里小鸡的数量一定是3的倍数,因为100元买100只鸡,鸡不可能买小数只。。。所以大鸡的价钱不可能产生小数。在这样的情况下小鸡的价钱也不会产生小数100-3x,这样的话,必须是3的倍数才可以保证)
列出方程得到:
x+3y=100
3x+1*(3y/3)=100 =>3x+y=100;
解之,得到:
x=100-3y
3(100-3y)+y=100
300-8y=100
8y=200 , y=25
x = 25
so, 大鸡25只,小鸡75只
编程可以用计算法,如上方程。
也可以用穷举法:
python
>>> filter(lambda i: i[0]*3+i[1]/3==100 and i[0]+i[1]==100, [[x,y] for x in range(0, 101) for y in range(0, 101)])
[[25, 75]]
so, 大鸡25只,小鸡75只。
可以。。。请稍等。。。
C#版:
using System;
namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
for (int i = 0; i <= 100; i++) {
for (int j = 0; j <= 100; j++) {
//i-大鸡 j小鸡
if (i * 3 + j / 3 == 100 & i + j == 100) {
Console.WriteLine("大鸡{0}只,小鸡{1}只", i, j);
}
}
}
Console.ReadKey();
}
}
}
c版:
#include <stdio.h>
int main()
{
int i, j;
for(i=0; i<=100; i++)
for (j=0; j<=100; j++)
if (i+j==100 && 3*i+j/3==100)
printf("大鸡%d只, 小鸡%d只\n", i, j);
return 0;
}
结果都是一样的:大鸡25只,小鸡75只
优化:
反正大小鸡共100只,可以直接根据大鸡数量计算小鸡,这样去掉一层循环:从循环1万次减到100次。
#include <stdio.h>
int main()
{
int i;
for(i=0; i<=100; i++){
int j = 100 - i;
if (3*i+j/3==100)
printf("大鸡%d只, 小鸡%d只\n", i, j);
}
return 0;
}
继续优化:
小鸡的数量一定是3的整数倍,所以可以用小鸡数量来循环,可以使循环数量再减少:
#include <stdio.h>
int main()
{
int j; //小鸡的数量一定是3的整数倍
for(j=0; 3*j<=100; j++){
int i = 100 - 3*j;
if (3*i+j==100)
printf("大鸡%d只, 小鸡%d只\n", i, 3*j);
}
return 0;
}
‘贰’ c语言编程问题:使用函数计算两点间的距离。
输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。
输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。
#include<stdio.h>
#include<math.h>
void main()
{
float x1,x2,y1,y2;
printf("请输入一组数据:");
while(~scanf("%f%f%f%f",&x1,&y1,&x2,&y2))//开始读取输入的数,知道文件结束。
{
printf("两点间的距离为:%.2f ",sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
printf("请输入一组数据:");
}
}
(2)编程题计算扩展阅读:
c语言基本运算
一:算术运算符
算术运算符非常地简单,就是小学数学里面的一些加减乘除操作。不过呢,还是有一些语法细节需要注意的。
一、加法运算符+
int a=10;
(此处空一行)
int b=a+5;
在第3行利用加法运算符+进行了加法运算,再将和赋值给了变量b,最终变量b的值是15
二、减法运算符或负值运算符-
int b=10-5;
(此处空一行)
int a=-10;
1、在第1行利用减法运算符-进行了减法运算,再将差赋值给了变量b,最终变量b的值是5
2、在第3行中,这个-并不是什么减法运算符,而算是一个负值运算符,-10代表的是负十
三、乘法运算符*
int b=10*5;
注意:乘法运算符并不是x或者X,而是星号*。变量b最终的值是50。
四、除法运算符/
double a=10.0/4;
double b=10/4;
(此处空一行)
printf("a=%f,b=%f ",a,b);
注意:除法运算符并不是÷,而是一个正斜杠/