高级语言程序设计实验4-1
【问题描述】
编程序,实现如下功能:
(1)定义两个一维数组x,y,不超过50个元素。
(2)从键盘输入k个整数到数组x中。
(3)计算x中数据的平均值ave及大于平均值的元素个数n并输出。
(4)将数组x中数据复制到数组y中,重复的数据只存储一次,最后输出y中的数据。
【输入形式】
输入两行,第一行为输入的数据个数,第二行若干整数,每个整数后面有一个空格用于分隔;
【输出形式】
第一行若干整数,每个整数后面有一个空格,最后一个空格后换行;第二行若干整数,每个整数后面有一个空格,最后一个空格后不需要换行;
【样例输出】
【样例输出】
【题解】
#include<iostream>
using namespace std;
int main()
{
int x[50]={0};
int y[50]={0};
int n=0,p=0;
int k=0;
cin>>k;
double ave=0,sum=0;
for(int i=0;i<=k-1;i++)
{
cin>>x[i];
sum=sum+x[i];
}
ave=sum/k;
for(int i=0;i<=k-1;i++)
{
if(x[i]>ave)
{
n++;
}
}
cout<<ave<<" "<<n<<endl;
int i=0,j=0;
for (int i = 0; i < k; i++)
{
for ( j = 0; j < i; j++)
{
if (x[i] == x[j])
{
break;
}
}
if (i == j)
{
y[p] = x[i];
p++;
}
}
for(int m=0;m<=p-1;m++)
{
cout<<y[m]<<" ";
}
}
高级语言程序设计实验4-2
【问题描述】
小宗想知道两个日期之间所间隔的天数,他希望有一个日期计算器,输入两个日期后能够自动计算之间的天数。要求:设计相应的函数完成天数的计算,在主函数中验证正确性。
【输入形式】
按照年月日的顺序输入两个日期,年月日之间用一个空格分隔;
【输出形式】
输出两个日期之间的天数,即一个整数,整数后不需要换行;
【样例输入】
2016 3 6
2017 1 1
【样例输出】
2016 3 6
2017 1 1
301
【题解】
#include<iostream>
#include<cmath>
using namespace std;
int f(int y,int m,int d)
{
int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if((y%4==0&&y%100!=0)||y%400==0)
{
mon[2]=29;
}
int sum=0;
for(int i=0;i<y;i++)
{
if((i%4==0&&i%100!=0)||i%400==0)
{
sum+=366;
}
else
{
sum+=365;
}
}
for(int j=1;j<m;j++)
{
sum+=mon[j];
}
return sum+=d;
}
int main()
{
int y1,m1,d1,y2,m2,d2;
cin>>y1>>m1>>d1>>y2>>m2>>d2;
cout<<abs(f(y1,m1,d1)-f(y2,m2,d2));
}
高级语言程序设计实验4-3
【问题描述】
对于整型数组a[10]和b[10],编制程序完成下列任务:
(1)由用户从键盘为两个数组输入值;
(2)求出两个数组的最大值和最小值;
(3)把数组a和b中的整数分别从小到大和从大到小排序;
(4)把两个有序的数组a和b组成一个长度为20的有序数组c[20],使数组c的顺序为从小到大
【输入形式】
输入两行整数,每行10个,第一行是数组a里的数组,第二行是数组b里的数值;
【输出形式】
输出五行,第一行有两个整数,分别是数组a的最大值和最小值,两个整数之间用一个空格分隔;第二行有两个整数,分别是数组b的最大值和最小值,两个整数之间用一个空格分隔;第三行按照从小到大的顺序输出数组a里的数值,每个数字后面有一个空格,最后一个数字后面也有空格;第四行按照从大到小的顺序输出数组b里的数值,每个数字后面有一个空格,最后一个数字后面也有空格;第五行按照从小到大的顺序输出合并后数组c里的数值,每个数字后面有一个空格,最后一个数字后面也有空格。
【样例输入】
2 5 9 1 3 4 0 6 7 8
10 5 25 9 6 3 7 1 2 13
【样例输出】
2 5 9 1 3 4 0 6 7 8
10 5 25 9 6 3 7 1 2 13
9 0
25 1
0 1 2 3 4 5 6 7 8 9
25 13 10 9 7 6 5 3 2 1
0 1 1 2 2 3 3 4 5 5 6 6 7 7 8 9 9 10 13 25
【题解】
#include<iostream>
using namespace std;
int main()
{
int a[10],b[10];
for(int i=0;i<10;i++)
{
cin>>a[i];
}
for(int i=0;i<10;i++)
{
cin>>b[i];
}
int maxa=0,maxb=0,mina=a[0],minb=b[0];
for(int j=0;j<10;j++)
{
if(a[j]>maxa)
{
maxa=a[j];
}
if(a[j]<mina)
{
mina=a[j];
}
if(b[j]>maxb)
{
maxb=b[j];
}
if(b[j]<minb)
{
minb=b[j];
}
}
cout<<maxa<<" "<<mina<<endl<<maxb<<" "<<minb<<endl;
for(int i=9;i>=0;i--)
{
for(int j=0;j<i;j++)
{
if(a[j]>a[j+1])
{
int temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
for(int i=9;i>=0;i--)
{
for(int j=0;j<i;j++)
{
if(b[j]<b[j+1])
{
int temp=b[j+1];
b[j+1]=b[j];
b[j]=temp;
}
}
}
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
for(int i=0;i<10;i++)
{
cout<<b[i]<<" ";
}
cout<<endl;
int c[20];
for(int i=0;i<10;i++)
{
c[i]=a[i];
c[i+10]=b[i];
}
for(int i=19;i>=0;i--)
{
for(int j=0;j<i;j++)
{
if(c[j]>c[j+1])
{
int temp=c[j+1];
c[j+1]=c[j];
c[j]=temp;
}
}
}
for(int i=0;i<20;i++)
{
cout<<c[i]<<" ";
}
}
高级语言程序设计实验4-4
【问题描述】
利用cin.getline()函数从键盘录入一句英文,其中每个单词之间用一个空格隔开,最后用'.'结束。统计该句话中单词的个数,并依次输出每个单词。输出个数后换行,输出每个单词后也换行。注意:在本平台下,cin.getline()函数的使用方式如下:
char s[50];
cin.getline(s,50); //最多存储49个字符
【输入形式】
输入一句英文,其中每个单词之间用一个空格隔开,最后一个单词后面用英文的'.'作为结束;
【输出形式】
输出每个单词后换行,最后一行输出单词的数量。
【样例输入】
I like juice.
【样例输出】
I
like
juice
3
【题解】
#include<iostream>
using namespace std;
int main()
{
char s[50];
cin.getline(s,50);
int len=0;
int i=0;
int n=0;
while(s[i]!='.')
{
len++;
i++;
}
for(int j=0;j<len+1;j++)
{
if(s[j]!=' '&&s[j]!='.')
{
cout<<s[j];
}
else
{
n++;
cout<<endl;
}
}
cout<<n;
}