}
}
3、
#include
voidmain()
{
inta;
cout<<"pleaseinputanumber:
\n";
cin>>a;
intc1=a%3==0;
intc2=a%5==0;
intc3=a%7==0;//753
switch((c3<<2)+(c2<<1)+c1){//c3c2c1
case0:
cout<<"不能被3,5,7整除.\n";break;//000
case1:
cout<<"只能被3整除.\n";break;//001
case2:
cout<<"只能被5整除.\n";break;//010
case3:
cout<<"可以被3,5整除.\n";break;//011
case4:
cout<<"只能被7整除.\n";break;//100
case5:
cout<<"可以被3,7整除.\n";break;//101
case6:
cout<<"可以被5,7整除.\n";break;//110
case7:
cout<<"可以被3,5,7整除.\n";break;//111
}//421
}
实验三过程化语句1
【实验类型】验证性
【实验要求】必做
【实验目的】
1、加深理解循环的概念,掌握while语句、do-while语句和for语句的使用形式及执行过程。
2、练习用C++的循环语句编写循环程序,掌握循环结构程序的设计和调试方法。
【实验内容】
√1.编程求1!
+2!
+3!
++15!
【指导】
这道题目注意最后所求的和的范围。
应将所求得的和定义为double型,而不是int型,否则会出现结果错误。
2.编程求“水仙花数”。
【指导】
“水仙花数”是指一个三位数,其各位的立方和等于该数本身。
例如,153是“水仙花数”。
求出一个三位数data的个位、十位和百位的方法是:
(1)求三位数data的个位:
data%10
(2)求三位数data的十位:
data/10%10
(3)求三位数data的百位:
data/100
3.猴子吃桃问题。
【指导】
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天又将剩下的桃子吃了一半,又多吃一个,以后每天早上都吃了前一天剩下的一半零一个。
到第十天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少个桃子?
采取逆向思维得方法,从后向前推算:
第一天得桃子数是第二天桃子数加1后得2倍。
【参考程序】
1、
#include
voidmain()
{
doublesum=0,t=1;
for(inti=1;i<15;i++)
{
t*=i;
sum+=t;
}
cout<<"1!
+2!
+3!
++15!
="<}
2、
#include
voidmain()
{
intdata;
for(data=100;data<1000;data++)
{
inti=data/100;
intj=data/10%10;
intk=data%10;
if(data==i*i*i+j*j*j+k*k*k)
cout<}
}
3、
#include
voidmain()
{
intsum=1;
for(inti=9;i>0;i--)
sum=(sum+1)*2;
cout<<"sum="<}
【思考题】
比较while语句和for语句的异同,在什么情况下用什么形式的循环。
实验四过程化语句2
【实验类型】验证性
【实验要求】必做
【实验目的】
1、加深理解循环的概念,掌握while语句、do-while语句和for语句的使用形式及执行过程。
2、掌握循环嵌套的规则及多重循环的程序设计方法。
3、掌握break语句和continue语句的使用方法。
【实验内容】
√1、编程打印如下图案。
#######
#####
###
#
###
#####
#######
【指导】
注意行号与#数目和空格数目的对应关系,每一行都应先输出空格,然后输出#。
√2、编程打印九九表。
1*1=1
1*2=2 2*2=2
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=124*4=16
1*5=5 2*5=103*5=154*5=205*5=25
…
1*9=9 ... 9*9=81
【指导】
注意格式的控制,可以在输出一项后用‘\t’来控制间隔。
【参考程序】
1、
#include
voidmain()
{
inti,j;
for(i=1;i<=4;i++)
{
for(j=1;j
cout<<"";
for(j=1;j<10-2*i;j++)
cout<<"#";
cout<}
for(i=3;i>0;i--)
{
for(j=1;j
cout<<"";
for(j=1;j<10-2*i;j++)
cout<<"#";
cout<}
}
2、
#include
voidmain()
{
inti,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
cout<<""<
if(i*j<10)
cout<<"";
}
cout<}
}
【思考题】
1、双重for循环中应注意什么问题
2、break语句和continue语句有什么不同,各在什么情况下使用。
实验五函数
【实验类型】验证性
【实验要求】必做
【实验目的】
1、掌握函数的定义。
2、了解函数原型(函数声明)与函数定义的区别与联系。
3、掌握函数调用的基本方法和返回值的用法。
4、弄清值调用和引用调用在传递参数时的区别。
5、掌握用递归函数解决实际问题。
【实验内容】
√1.设计一个函数,这个函数有两个形参,一个表示年份,一个表示月份,这个函数返回这个月的天数。
【指导】
闰年的判断方法是符合下列两个条件之一:
(1)年数可以被4整除,但是不能被100整除;
(2)年数可以被4整除,又可以被400整除(因为能被400整除,一定能够被4整除,所以这个条件可以简化为能被400整除)。
条件表达式为:
(year%4==0&&year%100!
=0||year%400==0)
√2.设计一个函数,从键盘接受10个整数,求出10个整数中的最大值和最小值,并在调用函数中输出结果(引用传递)。
【指导】
这个函数要求返回两个值,所以不能使用值传递,应采用引用传递。
注意体会值传递和引用传递的区别。
3.编程求解问题。
若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n年时有多少头母牛。
(用递归函数方法求解)
【指导】
先写出函数表达式:
f(n)=f(n-1)+f(n-3);f
(1)=f
(2)=f(3)=1。
因为第n年要比n-1年多的牛,都是大于三岁的牛生的小牛,而f(n-3)正是那些在n年大于三岁的牛,然后它们在第n年生下相同数量的小牛。
【参考程序】
1、
#include
intdays(intyear,intmonth);
voidmain()
{
intyy,mm,dd;
cout<<"Pleaseintputyear:
";
cin>>yy;
cout<<"Pleaseintputmonth:
";
cin>>mm;
dd=days(yy,mm);
cout<<"thedaysis"<
}
intdays(intyear,intmonth)
{
intday;
if(month<1||month>12)
{
cout<<"monthiserrordata!
"<day=0;
}
else
{
if(month==1||month==3||month==5||month==7||
month==8||month==10||month==12)
day=31;
elseif(month==2)
if(year%4==0&&year%100!
=0||year%400==0)
day=29;
else
day=28;
else
day=30;
}
returnday;
}
2、
#include
voidfunc(int&max,int&min);
voidmain()
{
intmax,min;
func(max,min);
cout<<"Themaxis"<cout<<"Theminis"<}
voidfunc(int&max,int&min)
{
inttemp;
cout<<"Pleaseintput10integers"<cin>>temp;
max=min=temp;
for(inti=1;i<10;i++)
{
cin>>temp;
if(temp>max)
max=temp;
elseif(tempmin=temp;
}
}
3、
#include
intcownum(intn);
voidmain()
{
intnum,n;
cout<<"Pleaseinputthenoofyear:
";
cin>>n;
num=cownum(n);
cout<<"thenumbersofcowis"<}
intcownum(intn)
{
if(n<4)
return1;
else
return(cownum(n-1)+cownum(n-3));
}
【思考题】
1、什么叫函数嵌套调用,画图说明嵌套调用时函数的调用与返回执行流程。
2、为什么要使用函数声明,函数声明与函数定义有何区别。
实验六数组1
【实验类型】验证性
【实验要求】必做
【实验目的】
1、掌握数组的概念,并弄清数组的存储结构。
2、掌握一维数组的定义、赋值和输入/输出的方法。
3、学会与数组有关的算法。
【实验内容】
√1、在一个10个整数的数组中找出最小数和其下标,并在主函数中打印最小数和下标。
2、验证教材P102页例5-2学生成绩排序。
【参考程序】
1、
#include
voidfind(intarr[],intlen,int&min,int&index);
voidmain()
{
intarr[10],min,index,i;
cout<<"pleaseintput10integers"<for(i=0;i<10;i++)
cin>>arr[i];
find(arr,10,min,index);
cout<<"theminis"<cout<<"theindexofminis"<}
voidfind(intarr[],intlen,int&min,int&index)
{
index=0;
for(inti=1;iif(arr[i]index=i;
min=arr[index];
}
2、参考程序见P102页例5-2。
实验七数组2
【实验类型】验证性
【实验要求】必做
【实验目的】
1、掌握数组的概念,并弄清数组的存储结构。
2、掌握二维数组的定义、赋值和输入/输出的方法。
3、学会与数组有关的算法。
【实验内容】
1、输入一个n*n的