1.题目描述:有30个人在一家小饭馆里用餐,其中有男人、女人和小孩。每个男人花了3先令,每个女人花了2先令,每个小孩花了1先令,一共花去50先令。问男人、女人以及小孩各有几个人。以下是完成此项工作的程序,请将未完成的部分填入,实现其功能,并在计算机上调试程序,以测试填入的部分是否正确。
代码:
#include<iostream>
using namespace std;
int main()
{
int n; //n记录解的个数
int a,b,c; //分别记录男、女、小孩的人数
n=__0__; //初始化n的值
for(a=1;a<=30;a++)
{
for(b=1;b<=30;b++)
{
c=__30-a-b_;
if( __3a+2b+c==50(3)__ )
{
cout<<"男人有:"<<a<<"个;"<<"女人有:"<<b<<"个;"<<"小孩有:"<<c<<"个。"<<endl;
n++;
}
}
}
cout<<"共有"<<n<<"种方案"<<endl;
return 0;
此题与ACM大赛中第一题“鸡兔同笼”类似,遍历法,两层循环嵌套。
2.
#include <cmath>不要忘记这个头文件。
3.
if( !a )就是一个判断语句,判断表达式 !a 的真假,进而决定是否执行后续操作。
如果a是一个变量
当a等于0时,!a=1(为真),执行后续操作;
当a不等于0时,!a=0(为假),不执行后续操作;
如果a是一个表达式
将表达式的值计算出来,当成变量来操作,判断过程同上。
4.continue也是终止当前的循环过程,但他并不跳出循环,而是继续往下判断循环条件执行语句。他只能结束循环中的一次过程,但不能终止循环继续进行。
5. int number[10]表示名为“number”的数组中有十个元素;而number[9]表示“number”数组中 第 10个元素。
6.辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。 它的具体做法是:用较大数除较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。 如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。
7.
ASCII码用于大小写转换。
a-z:97-122
A-Z:65-90
大写字母+32=小写字母
8.函数调用表达式:cout<<function(形参);//对于不设参数的函数,function()。但不能只写函数名function。
9.类和对象:
(1)成员函数定义
(2)在建立对象时,构造函数自动调用。
(3)构造函数无返回值。