当前位置:文档之家› 实验5 数组1答案

实验5 数组1答案

实验数组1
实验目的:
1、进一步掌握循环结构的程序设计
2、掌握在循环结构里面使用break、continue
3、掌握一维数组的定义与使用
实验内容:
一、观察下列代码(有语法问题自己解决)
1、利用无限循环输入数据,直到条件满足利用break跳出循环:
#include <iostream>
using namespace std;
int main( )
{
int x,sum=0;
while(1)
{
cin >> x;
if(x <= 0)
break;
sum += x;
}
return 0;
}
2、利用continue语句实现输出1-100之间的偶数:
#include <iostream>
using namespace std;
int main()
{
for (int i = 0;i <= 100; i++)
{
if (i % 2 != 0)
continue;
cout << i << ' ';
}
return 0;
}
二、编码训练
1、利用break语句写一程序:循环从键盘输入数据并累加起来,直到输入的数为零时结束循环,打印累加结果。

(参考前面第1题)
#include<iostream>
using namespace std;
int main( )
{
int x,sum=0;
while(1)
{
cin >> x;
sum += x;
if(x == 0) break;
}
cout << "The sum is " << sum << endl;
return 0;
}
2、利用continue语句写一程序:输出1-20之间不能被3整除的数。

(参考前面第2题)
#include<iostream>
using namespace std;
int main()
{
for (int i = 1;i <= 20; i++)
{
if (i % 3 == 0)
continue;
cout << i << ' ';
}
return 0;
}
3、实现求6位学生c++的平均成绩。

(参考案例书的P47案例1)
#include<iostream>
using namespace std;
int main()
{
double score[6];
double avg = 0,sum = 0;
for (int i = 0;i <= 5; i++)
{
cin >> score[i];
sum = sum + score[i];
}
avg = sum/6;
cout << "平均成绩是:" << avg;
return 0;
}
4、利用一维数组编写一个程序:从键盘上输入10个float类型的数据,找出它们的最大值和最小值,并输出(定义两个变量分别保存最大值和最小值)。

(参考案例书的P47案例1)#include<iostream>
using namespace std;
int main()
{
float numb[10];
float min = 0.0,max = 0.0;
int i;
for (i = 0;i <= 9; i++)
{
cin >> numb[i];
}
min = numb[0];
max = numb[0];
for (i = 1;i <= 9; i++)
{
if (numb[i] >= max ) max = numb[i];
if (numb[i] < min ) min = numb[i];
}
cout << "最大值是:" << max << endl;
cout << "最小值是:" << min << endl;
return 0;
}
三、案例训练
1、案例书的P49案例2
2、案例书的P53案例4
3、实现n个数(可以是整数或实数)由大到小进行排序
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
const int N = 10;
int a[N] ;
int t = 0;
cout<<"请输入10个数:\n";
for(int i = 0 ; i < N ; i++)
cin>>a[i];
cout<<"\n";
for(int i = 1;i <= N-1;i++)
{
for(int j = 0;j < N-i;j++)
{
if(a[j] < a[j+1])
{ t = a[j];
a[j] = a[j+1];
a[j+1]=t;
}
}
}
cout << "\n排序后为:\n";
for(int i = 0; i < N; i++)
cout << setw(4) << a[i];
cout << "\n";
return 0;
}
4、(谁是小偷)警察局抓了a、b、c、d四名偷窃嫌疑嫌疑犯,其中有一人是小偷。

审问中:
a说:“我不是小偷。


b说:“c是小偷。


c说:“小偷肯定是d。


d说:“c冤枉人。


现在已经知道四个人中有三人说了真话,一人说的是假话。

问到底谁是小偷?,
分析:设1表示是小偷,0表示不是小偷,显然a、b、c、d的取值是0或1,可以用四重循环穷举所有可能。

条件:(1)四人中只有一个为小偷,即a+b+c+d==1;(2)四人说的话,可以用关系表达式表示,关系表达式的值为1表示说真话,0表示说假话,四个人中三人说了真话,即四个关系表达式的和为3。

同时满足这两个条件的即为解。

#include<iostream>
using namespace std;
int main()
{
int a,b,c,d;
for (a=0; a<=1; a++)
for (b=0; b<=1; b++)
for (c=0; c<=1; c++)
for (d=0;d<=1;d++)
//三人说真话,只有一个人是小偷
if (((a!=1)+(c==1)+(d==1)+(d!=1))==3 && (a+b+c+d==1))
{
if (a==1) cout<<"a是小偷"<<endl;
if (b==1) cout<<"b是小偷"<<endl;
if (c==1) cout<<"c是小偷"<<endl;
if (d==1) cout<<"d是小偷"<<endl;
}
}。

相关主题