問題描述
小明正在利用股票的波動程度來研究股票。小明拿到了一只股票每天收盤時的價格,他想知道,這只股票連續幾天的最大波動值是多少,即在這幾天中某天收盤價格與前一天收盤價格之差的絕對值最大是多少。
輸入格式
輸入的第一行包含了一個整數n,表示小明拿到的收盤價格的連續天數。
第二行包含n個正整數,依次表示每天的收盤價格。
輸出格式
輸出一個整數,表示這只股票這n天中的最大波動值。
#include<iostream>
using namespace std;
const int N=1001;
int main()
{
int x,i,n,j;
int a[N]={0};
int m[N]={0};
cin>>n;
for(i=0;i<n;i++)
{
cin>>x;
a[i]=x;
}
for(j=0;j<n-1;j++)
for(i=0;i<n-1;i++)
m[j]=abs(a[i]-a[i+1]);
for(j=0;j<n-2;++j)
if(m[j]>m[j+1])
m[j+1]=m[j];
else m[j+1]=m[j+1];
cout<<m[j+1]<<endl;
return 0;
}
uj5u.com熱心網友回復:
第二個for回圈里面的if-else陳述句要用大括號擴起來uj5u.com熱心網友回復:
很啰嗦啊
#include<iostream>
using namespace std;
const int N=1001;
int main()
{
int x,i,n,j;
int a[N]={0};
int m[N]={0};
cin>>n;
for(i=0;i<n;i++)
{
cin>>x;
a[i]=x;
}
for(j=0;j<n-1;j++)
for(i=0;i<n-1;i++)
m[j]=abs(a[i]-a[i+1]); //有abs了,還要雙回圈干什么?
for(j=0;j<n-2;++j) //這個回圈是要排序么?冒泡排序程式不完整
if(m[j]>m[j+1])
m[j+1]=m[j];
else m[j+1]=m[j+1];
cout<<m[j+1]<<endl;
return 0;
}
如果只是要求最大值,大可不必這么麻煩
#include<iostream>
using namespace std;
const int N=1001;
int main()
{
int x,i,n,j;
int a[N]={0};
int m = 0; //最大值
cin>>n;
for(i=0;i<n;i++)
{
cin>>x;
a[i]=x;
}
for(j=0;j<n-1;j++)
if( abs(a[i]-a[i+1]) > m )
{
m = abs(a[i]-a[i+1]);
}
cout<<m<<endl;
return 0;
}
試試吧,沒運行

uj5u.com熱心網友回復:
我知道了
#include<iostream>
using namespace std;
const int N=1001;
int main()
{
int x,i,n,j;
int a[N]={0};
int m[N]={0};
cin>>n;
for(i=0;i<n;i++)
{
cin>>x;
a[i]=x;
}
for(j=0;j<n-1;j++) //去掉這個陳述句
for(i=0;i<n-1;i++)
m[j]=abs(a[i]-a[i+1]); //把m[j]改為m[i]
for(j=0;j<n-2;++j)
if(m[j]>m[j+1])
m[j+1]=m[j];
else m[j+1]=m[j+1];
cout<<m[j]<<endl;
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/58978.html
標籤:基礎類
