实验三
3-2
#include<iostream>
#include<math.h>
#include<set>
#include<string>
using namespace std;
int main()
{
int y{};
unsigned int n{};
cin >> y >> n;
int y_before = y;
string y_print;
while(true)
{
int a,b,c,d;
if (y<10)
{ a = 0;
b = 0;
c = 0;
d = y;
y_print = "000"+to_string((y));
}
else if (y < 100)
{
a = 0;
b = 0;
c = floor(y/10);
d = y % 10;
y_print = "00"+to_string(y);
}
else if (y < 1000)
{
a = 0;
b = floor(y/100);
c = floor((y-b*100)/10);
d = y%10;
y_print = "0"+to_string((y));
}
else
{
a = floor(y/1000);
b = floor((y-a*1000)/100);
c = floor((y-a*1000-b*100)/10);
d = y % 10;
y_print = to_string((y));
}
set<int> s1{a,b,c,d};
if(s1.size() == n)
break;
else
y += 1;
}
cout << y-y_before << " " << y_print << endl;
}
3-3谷歌的招聘 (20 分)
#include<iostream>
#include<string>
#include<math.h>
using namespace std;
int isPrime(int n)
{
float patition = sqrt(n);
if(n<2)
return false;
else if(n==2)
return true;
else
{
for(int i=2;i<patition;i++)
{
if (n%i==0)
return false;
}
}
return true;
}
int main()
{
int L{},K{};
cin >> L >> K;
if (L < K)
{
cout << 404 <<endl;
return 0;
}
string sN ;
cin >> sN;
string s;
int num {0};
int first {0};
for(int i=0;i<=sN.length()-K;i++)
{
string sub = sN.substr(i,K);
int isub = stoi(sub);
if(isPrime(isub))
{
cout << sub << endl;
return 0;
}
}
cout << 404 << endl;
return 0;
}
版本二:
#include<iostream>
#include<string>
#include<algorithm>
#include<math.h>
using namespace std;
bool isPrime(int n);
int main()
{
int L,K;
string sNum;
cin >> L >> K;
cin.get();//注意cin遇到空白停止,保留换行符在输入流中;getline遇到换行符停止,丢弃换行符
getline(cin,sNum);
if(sNum.size()<K)
{
cout <<"404"<<endl;
return 0;
}
for(int i=0;i<=sNum.size()-K;i++)
{
string subNum = sNum.substr(i,K);
if(isPrime(stoi(subNum)))
{
cout << subNum;//输出的是字符串,0023,stoi("0023")=23(×)
return 0;
}
}
cout << "404"<<endl;
return 0;
}
bool isPrime(int n)
{
if(n<2)
return false;
else if(n==2)
return true;
double temp=pow(n,0.5);
for(int i=2;i<temp;i++)
{
if(n%i==0)
return false;
}
return true;
}
七
7-2
#include<iostream>
using namespace std;
void mysort(int d[],int N);
int main()
{
int d[3][3];
int pos[3][2];
int waynum;
//读入彩票盘
for(int i=0;i<3;i++)
{
int j=0;
while(cin>>d[i][j])
{
j++;
if (getchar() == '\n')//注意这里要加‘’,而不是“”
break;
}
}
//读入坐标
for(int i=0;i<3;i++)
{
int j=0;
while(cin >> pos[i][j])
{
j++;
if(getchar()=='\n')
break;
}
}
cin >> waynum;
int temp{0};
for(int i=1;i<10;i++)
temp+=i;
int i0{0},j0{0},flag=0;
//替换0为1~9剩余数字
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
if(d[i][j]==0)
{
i0 = i;
j0 = j;//这里不能break
}
else
{
temp-=d[i][j];
}
}
}
d[i0][j0] = temp;
//设置奖项
int sum{0};
int num1{0},num2{0},num3{0};
int reward[]{10000,36,720,360,80,252,108,72,54,180,72,180,119,36,306,1080,144,1800,3600};
//三个方向上的和
for(int i=0;i<3;i++)
{
int x = pos[i][0]-1;
int y = pos[i][1]-1;
cout << d[x][y] << endl;
}
int way[8][3][2]{
{{0,0},{0,1},{0,2}},
{{1,0},{1,1},{1,2}},
{{2,0},{2,1},{2,2}},
{{0,0},{1,0},{2,0}},
{{0,0},{1,0},{2,0}},
{{0,2},{1,2},{2,2}},
{{0,0},{1,1},{2,2}},
{{0,2},{1,1},{2,0}}
};
for(int i=0;i<3;i++)
{
int xv = way[waynum-1][i][0];
int yv = way[waynum-1][i][1];
sum += d[xv][yv];
}
cout << reward[sum-6] << endl;
return 0;
}
/*
0 2 3
4 5 6
7 8 9
1 1
2 1
3 1
1
*/
输出
1
4
7
10000
- 注意怎么输入一行字符
- 注意(0,0)为1时
7-3
#include<iostream>
#include<math.h>
#include<iomanip>//用于setprecision()
using namespace std;
int main()
{
int N{};
cin >> N;
long double d[N]{};
int i=0;
while(cin>>d[i])
{
i++;
if(getchar()=='\n')
break;
}
// if(N<2)
// cout << fixed <<setprecision(5)<<0.00000 <<endl;
// return 0;
int sum{0};
long double sqsum{0};
for(int i=0;i<N;i++)
{
sum+=d[i];
}
long double avg = sum/(N*1.0);//注意这里×1.0!!!
for(int i=0;i<N;i++)
{
sqsum += (d[i]-avg)*(d[i]-avg);
}
cout << fixed << setprecision(5) << pow(sqsum/(N*1.0),0.5);//注意保留位数的说法
return 0;
}
OUTPUT
在这里插入代码片
7-4
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
vector<string> s(2);
for(int i=0;i<2;i++)
{
cin >> s[i];
}
long long unsigned pos1{s[0].find("/")},pos2{s[1].find("/")};//string.find()-->long long unsigned int
//初始化分子和分母
int child1{},child2{},
mother1{stoi(s[0].substr(pos1+1))},mother2{stoi(s[1].substr(pos2+1))};//string-->int:stoi()
string temp1 = s[0].substr(0,pos1);
string temp2 = s[1].substr(0,pos2);//注意如何取子串
child1 = stoi(temp1);
child2 = stoi(temp2);
int child1_new{child1*mother2},child2_new(child2*mother1);
if (child1_new>child2_new)
cout << s[0] <<" > "<<s[1];
else if (child1_new<child2_new)
cout << s[0]<<" < "<<s[1];
else
cout <<s[0]<<" = "<<s[1];
return 0;
}
7-5
#include<iostream>
#include<vector>
#include<string>
using namespace std;
struct student{
int sex;
char name[10];
bool print = false;//bool print的巧妙应用
};//结构体要有分号
int main()
{
int N{};
cin >> N;
student studs[N];
for(int i=0;i<N;i++)
{
scanf("%d %s",&studs[i].sex,&studs[i].name);//用scanf读入
}
for (int i=0;i<N/2;i++)
{
int first{i},last{N-1};
while(first<last)
{
if(studs[first].sex != studs[last].sex && !studs[last].print)
{ cout << studs[first].name <<" "<< studs[last].name<<endl;;
studs[last].print = true;
break;
}
else
last -= 1;
}
}
return 0;
}
7-6
#include<iostream>
using namespace std;
int main()
{
int N{};
cin >> N;
if(N==0)
cout<<0<<endl;
int d[N][N]={0};
//生成杨辉三角的值
for(int i=0;i<N;i++)
{
for(int j=0;j<=i;j++)
{
if(j==0||i==j)
d[i][j]=1;
else
d[i][j] = d[i-1][j-1]+d[i-1][j];
}
}
//打印杨辉三角
for(int i=0;i<N;i++)
{
for(int j=0;j<N+2-i;j++)
cout<<" ";
for(int k=0;k<i+1;k++)
{
cout<<d[i][k];
if(k!=i)
{
int size{0},num{d[i][k+1]};
if(num<10)
size=1;
else if(num<100)
size=2;
else if(num<1000)
size=3;
for(int n=0;n<4-size;n++)
cout<<" ";
}
}
cout<<endl;
}
return 0;
}
7-7
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>//去重函数unique、计数函数count()
using namespace std;
int main()
{
int N1{},N2{};
vector<int> d1,d2,res;
int s;
cin >> N1;
while(cin >> s)
{
d1.push_back(s);
if (getchar()=='\n')
break;
}
cin >> N2;
while(cin >> s)
{
d2.push_back(s);
if (getchar()=='\n')
break;
}
vector<int>::iterator iter=d1.begin();//注意迭代器的使用
for(int i=0;i<N1;i++)
{
int pivot{d1[i]};
int n1=count(d1.begin(),iter,pivot);
if(n1)
{ iter++;
continue;
}
int j=0;
for(;j<N2;j++)
{
if(d1[i]==d2[j])
{
int n=count(d2.begin(),d2.end(),d1[i]);
for(int k=0;k<n;k++)
{
vector<int>::iterator iter;
iter = find(d2.begin(),d2.end(),d1[i]);//find-->literator
d2.erase(iter);//Vector删除指定位置的元素:vec.erase(iterator/区间)
}
break;
}
}
if (j==N2&&count(res.begin(),res.end(),d1[i])==0)
res.push_back(d1[i]);
iter++;
}
if (d2.size()!=0)
{
for(int i=0;i<d2.size();i++)
if(count(res.begin(),res.end(),d2[i])==0)
res.push_back(d2[i]);
}
for(int i=0;i<res.size();i++)
{
if(i==res.size()-1)
cout << res[i];
else
cout<<res[i]<<" ";
}
}
7-8
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
//初始化
int N,d[10]{0};
vector<string> svec;
cin >> N;
string temp;
while(cin >> temp)
{
svec.push_back(temp);//注意vector和数组不一样,要用vec.push_back()
//注意push_back放在getchar()之前!
if(getchar()=='\n')
break;
}
// for(int i=0;i<svec.size();i++)
// {
// cout << svec[i]<<" ";
// }
// 读入d
for(int i=0;i<svec.size();i++)
{
for(int j=0;j<svec[i].size();j++)
{
int n = svec[i][j]-'0';//char-->int
d[n]+=1;
}
}
// 比较大小
int iMax{0};
for(int i=0;i<10;i++)
{
if (d[i]>iMax)
iMax = d[i];
}
cout << iMax <<": ";
int n=count(d,d+10,iMax);
int time=1;
for(int i=0;i<10;i++)
{
if(time==n && d[i]==iMax)
{ cout << i;
time++;
}
else if (d[i]==iMax)
{ cout << i << " ";
time++;
}
}
}
7-9
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>//sort(begin,end,cmp)
using namespace std;
struct contact{
char name[11];
int birthday;
char phone[18];
};
bool cmp(contact x,contact y);
int main()
{
int n,now = 20210404;
cin >> n;
contact friends[n];
for(int i=0;i<n;i++)
{
scanf("%s %d %s",&friends[i].name,&friends[i].birthday,&friends[i].phone);
}
sort(friends,friends+n,cmp);
for(int i=0;i<n;i++)
{
cout << friends[i].name <<" "<<friends[i].birthday <<" "<<friends[i].phone<<endl;
}
return 0;
}
bool cmp(contact x,contact y)//注意sort()函数的cmp函数参数
{
return x.birthday < y.birthday;
}
实验四
4-1
#include<iostream>
#include<list>
#include<string>
using namespace std;
int main()
{
int N;
cin >> N;
string temp;
list<string> lst;//list声明
int pos;
for(int i=0;i<N+1;i++)
{
getline(cin,temp);
if(temp[0] == 'i')
{
pos = temp.find(" ");
lst.push_back(temp.substr(pos+1));
}
else if(temp=="out")
{
lst.pop_front();
}
else if(temp=="q")
{
if(!lst.empty())
{
cout << lst.front() << endl;
}
else
cout << "NULL" << endl;
}
}
}
4-2
#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main()
{
int N;
cin >> N;
string right = "({[";
string left = ")}]";
char c_right;
string::size_type idx1,idx2;//注意如何判断某字符是否在字符串中
if(N==0)
{
cout << "No" << endl;
return 0;
}
for(int i=0;i<N;i++)
{
stack<char> stack1;//栈的声明
string temp;
cin >> temp;
int n = temp.size();
int flag = 1;
if(n<=1)
{
cout << "No" << endl;
break;
}
for(int j=0;j<n;j++)
{
idx1 = right.find(temp[j]);//find(),用于判断字符是否在{[(
if(stack1.empty())
{
if(idx1!=string::npos)//
{
stack1.push(temp[j]);
continue;//注意对j位置字符进行操作之后-->continue
}
else//开头为}])的情况
cout << "No" << endl;
flag = 0;//flag用于判断是否操作过
break;
}
else if(idx1!=string::npos)
{
stack1.push(temp[j]);
continue;//注意continue
}
else if(idx1==string::npos)
{
c_right = stack1.top();
idx1 = left.find(temp[j]);
idx2 = right.find(c_right);
if(idx1==idx2)
{
stack1.pop();
continue;
}
else
{ cout <<"No" << endl;
flag = 0;
break;
}
}
}
if(flag==1&&stack1.empty())
cout << "Yes" << endl;
else if (flag==1&&!stack1.empty())
cout <<"No" << endl;
}
}
4-3
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
cout<<"从标准设备读入数据,直到输入是非整型数据为止"<<endl;
int element;
vector<int> vec;
while(cin >> element)//element是int类型,此处用于到输入是非整型数据为止
{
vec.push_back(element);
}
sort(vec.begin(),vec.end());
int n = vec.size();
for(int i=0;i<n;i++)
{
if(i==n-1)
{
cout <<" "<<vec[i]<<endl;
break;
}
cout << " " << vec[i];
}
return 0;
}
7-1
#include <iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
int N;
cin >> N;
string after = "qiao ben zhong.";
getchar();//消除\n
for(int i=0;i<N;i++)
{
string temp;//如果要更新,定义最好在for循环内部
getline(cin,temp);
int n=temp.length();
int m=count(temp.begin(),temp.end(),' ');//注意count()用法,后面是字符' ',而不是" "
string::size_type idx=0,idx_before;//idx = str.find()
idx_before = temp.find(",");
if(idx_before>=3&&temp.substr(n-4)=="ong."&&temp.substr(idx_before-3,3)=="ong")//上一句少于三个字符不可
{ for(int j=0;j<m-2;j++)
idx=temp.find(" ",idx+1);//find(查找字符,开始位置)
temp.replace(temp.begin()+idx+1,temp.end(),after);//注意替换的用法
cout << temp << endl;
}
else
cout << "Skipped" << endl;
}
}
7-2
正确答案:
#include<iostream>
#include<cstdio>
#include<vector>
#include<cmath>
#include<cstring>
using namespace std;
const int maxn=1e4+10;
int vis0[maxn];//不是特例独行数
int vis1[maxn];//是特例独行数
int vis[maxn];//用的
vector<int> v[maxn];
bool jp(int u){
if(u<=1) return 0;
if(u==2) return 1;
int s=sqrt(u);
for(int i=2;i<=s;i++)
if(u%i==0) return 0;
return 1;
}
int fp(int u){
int ans=0;
while(u){
int tmp=u%10;
ans+=tmp*tmp;
u/=10;
}
return ans;
}
int judge(int u){
vis[u]=1;
int ux=u;
while(1){
ux=fp(ux);
if(ux==1) return 1;//是特例独行数---vis[u]
if(vis[ux]) return 0;//重复了。肯定不是了
vis[ux]=1;v[u].push_back(ux);
}
}
int main(){
int le,ri;
cin>>le>>ri;
memset(vis0,0,sizeof(vis0));
memset(vis1,0,sizeof(vis1));
for(int i=le;i<=ri;i++){
if(!vis0[i]&&!vis1[i]){//还没判断得数
memset(vis,0,sizeof(vis));
int t=judge(i);
if(t==1){
vis1[i]=1;
for(int j=0;j<v[i].size();j++){
vis1[v[i][j]]=1;
}
}
else if(t==0){
vis0[i]=1;
for(int j=0;j<v[i].size();j++){
vis0[i]=1;
}
}
}
}
for(int i=le;i<=ri;i++){
for(int j=0;j<v[i].size();j++){
vis1[v[i][j]]=0;
}
}
int flag=0;
for(int i=le;i<=ri;i++){
if(vis1[i]){
flag=1;
int tm=v[i].size()+1;
if(jp(i)) tm=tm*2;
cout<<i<<" "<<tm<<endl;
}
}
if(!flag) cout<<"SAD"<<endl;
return 0;
}
不完全答案:
#include<iostream>
#include<vector>
#include<string>
#include<math.h>
#include<algorithm>
using namespace std;
bool isPrime(int n);
int happiness(int A,int B);//0代表不是happynum,否则数字代表独立性
int main()
{
int A=10,B=40;
happiness(A,B);
return 0;
}
bool isPrime(int n)
{
if(n<2)
return false;
int sqt = ceil(pow(n,0.5));
for(int i=2;i<=sqt;i++)
if(n%i==0)
return false;
return true;
}
int happiness(int A,int B)
{
vector<int> happynum;
vector<int> happybutdepend,dependnum;
int now;
for(int i=A;i<=B;i++)
{
bool stop=false,found = false;
string temp = to_string(i);
vector<int> depend{};
while(!stop&&!found)
{
int n = temp.size(),sum=0;
for(int j=0;j<n;j++)
{
int temp_c = temp[j]-48;
sum+=(int)pow(temp_c,2);
temp=to_string(sum);
if(sum==1)
{
dependnum.push_back(depend.size()+1);
happynum.push_back(i);
found = true;
for(int k=0;k<depend.size();k++)
{
if(depend[k]>=A&&depend[k]<=B)
{
happybutdepend.push_back(depend[k]);
}
}
}
else
{
vector<int>::iterator it = find(depend.begin(),depend.end(),sum);
if(it==depend.end())
depend.push_back(sum);
else
stop=true;
}
}
}
}
if(happynum.size()==0)
{
cout <<"SAD"<< endl;
}
for(int i=0;i<happynum.size();i++)//查重
{
for(int j=0;j<happybutdepend.size();j++)
{
if(happynum[i]==happybutdepend[j])
happynum.erase(happynum.begin()+i);
dependnum.erase(dependnum.begin()+i);
}
}
for(int i=0;i<happynum.size();i++)
{
int num = happynum[i];
cout << happynum[i];
if(isPrime(num))
{
cout << " " << dependnum[i]*2<<endl;
}
else
{
cout << " " << dependnum[i]<<endl;
}
}
return 0;
}
7-1
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int repeat{};
cin >> repeat;
getchar();//不要忘记初始化cin
vector<string> week={"Sunday","Monday","Tuesday",
"Wednesday","Thursday","Friday","Saturday"};
for(int i=0;i<repeat;i++)
{
string temp;
getline(cin,temp);
bool flag=false;//注意flag判别是否操作过
for(int j=0;j<week.size();j++)
{
if(week[j]==temp)
{
cout << j+1 << endl;
flag=true;
break;
}
}
if(!flag)
cout << -1 << endl;
}
}
7-2
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<iomanip>
using namespace std;
int main()
{
int N;
cin >> N;
int temp;
vector<int> scores;
while(cin>>temp)
{ scores.push_back(temp);
if(getchar()=='\n')
break;
}
float iMax=scores[0],iMin=scores[0],iSum=scores[0];//这里要定义为浮点数,因为要输出浮点数
for(int i=1;i<N;i++)
{
if(scores[i]>iMax)
iMax = scores[i];
else if(scores[i]<iMin)
iMin = scores[i];
iSum+=scores[i];
}
float favg = iSum/N;
cout << "average = "<<fixed<<setprecision(2)<<favg<<endl;
cout << "max = "<<fixed<<setprecision(2)<<iMax<<endl;
cout << "min = "<<fixed<<setprecision(2)<<iMin<<endl;
}
7-3
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<iomanip>
using namespace std;
int BiggestCommonDivisor(int a,int b);
int main()
{
string Q1,Q2;
cin >> Q1 >> Q2;
int iMother1,iMother2,iChild1,iChild2;
string::size_type idx1,idx2;
idx1 = Q1.find('/');
idx2 = Q2.find('/');
iMother1 = stoi(Q1.substr(idx1+1));
iMother2 = stoi(Q2.substr(idx2+1));
iChild1 = stoi(Q1.substr(0,idx1));
iChild2 = stoi(Q2.substr(0,idx2));
int commonMother = iMother1*iMother2,commonChild =
iChild1*iMother2+iChild2*iMother1;
int n = BiggestCommonDivisor(commonChild,commonMother);
if(commonChild%commonMother==0)
cout << commonChild/commonMother << endl;
else if(n==1)
cout << commonChild <<"/"<<commonMother<<endl;
else
cout << commonChild/n <<"/"<<commonMother/n<<endl;
return 0;
}
int BiggestCommonDivisor(int a,int b)
{
int big,small;
if(a>b)
{
big=a;
small=b;
}
else
{
big=b;
small=a;
}
while(big%small!=0)
{
int temp = big%small;
big = small;
small = temp;
}
return small;
}
7-4
#include<iostream>
#include<vector>
#include<string>
using namespace std;
struct student
{
string sNumber;
string name;
int score1,score2,score3;
};
int main()
{
int N;
cin>>N;
student s[N];//注意不能用vector<student> s;
for(int i=0;i<N;i++)
{
cin >> s[i].sNumber>>s[i].name>>s[i].score1>>s[i].score2>>s[i].score3;
}
int iMax=0,iTemp=0,person=0;
for(int i=0;i<N;i++)
{
iTemp = s[i].score1+s[i].score2+s[i].score3;
if(iTemp>iMax)
{ iMax=iTemp;
person = i;
}
}
cout << s[person].name<<" "<<s[person].sNumber<<" "<<iMax;
return 0;
}
7-5
#include<iostream>
#include<vector>
#include<string>
using namespace std;
struct candidate{
string zhunkao;
int shiji;
int kaoshi;
};
int main()
{
int N;
cin>>N;
candidate c[N];
for(int i=0;i<N;i++)
{
cin>>c[i].zhunkao>>c[i].shiji>>c[i].kaoshi;
}
int M;
cin >> M;
vector<int> query;
int temp;
while(cin>>temp)//主要要读入vector,不能直接cin>>query[i]
{
query.push_back(temp);//注意要先读取再判断下一个字符,getchar()会读取并且移到下一个字符上
if(getchar()=='\n')//注意是getchar()=='\n'
break;
}
for(int i=0;i<M;i++)
{
for(int j=0;j<N;j++)
{
if(c[j].shiji == query[i])
{
cout << c[j].zhunkao<<" "<<c[j].kaoshi<<endl;
}
}
}
}
模拟题
7-6 彩虹瓶 (20 分)
#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main()
{
int N,K;
unsigned int M;
cin>> N >> M >> K;
int d[K][N]={0};
int temp;
for(int i=0;i<K;i++)
{
for(int j=0;j<N;j++)
{
cin >> temp;
d[i][j] = temp;
}
}
for(int i=0;i<K;i++)
{
bool stop = false;//检测是否输出过
stack<int> s,store;//s-->货架,store-->彩虹瓶
for(int j=0;j<N;j++)
{
if(store.empty())
{
if(d[i][j]==1)
{
store.push(d[i][j]);
continue;
}
else
{
if(s.empty())
{
s.push(d[i][j]);
continue;
}
else
{
if(s.top()>d[i][j]&&s.size()<M)
{
s.push(d[i][j]);
continue;
}
else if(s.top()<d[i][j]||s.size()==M)//不能直接写else
{
cout <<"NO"<<endl;
stop = true;
break;
}
}
}
}
else
{
if(d[i][j] == store.top()+1)
{
store.push(d[i][j]);
while(!s.empty()&&store.top()==s.top()-1)//把货架上满足条件的物品在下一次货物到来之前放在store中
{
store.push(s.top());
s.pop();
}
continue;
}
else if(s.empty())//不要忘记s.empty()的情况,s为空时s.top()报错
{
s.push(d[i][j]);
continue;
}
else if(s.top()>d[i][j]&&s.size()<M)
{
s.push(d[i][j]);
continue;
}
else if(s.top()<d[i][j]||s.size()==M)//不能直接else
{
cout <<"NO"<<endl;
stop = true;
break;
}
}
}
if(!stop)
cout << "YES" << endl;
}
return 0;
}
7-7完全二叉树的层序遍历 (25 分)
我不会做!
#include<iostream>
#include<vector>
using namespace std;
int d[31];
void create(int N,int i)
{
if(i>N)
return;
create(N,2*i);
create(N,2*i+1);
int temp;
cin>>temp;
d[i] = temp;
}
int main()
{
int N,temp;
cin >> N;
create(N,1);
for(int i=1;i<=N;i++)
{
if(i==N)
{
cout << d[i]<<endl;
break;
}
cout << d[i]<<" ";
}
}
C++ primer在线开发环境
7-2
编写一个程序,要求用户输入最多 10 个高尔夫成绩,并将其存储在一个数组中。程序允许用户提早结束输入,并在一行上显示所有成绩,然后报告平均成绩。请使用 3 个数组处理函数来分别进行输入、显示和计算平均成绩。
#include<iostream>
using namespace std;
const int ARRMAX = 10;
int full_arr(double* arr);
void show_arr(double* arr,int count);
double avgGrade(double* arr,int count);
int main()
{
double arr[ARRMAX];
int count = full_arr(arr);
show_arr(arr,count);
double averageGrade = avgGrade(arr,count);
cout<<"The average grage is: "<<averageGrade<<endl;
}
int full_arr(double* arr)
{
double temp;
int count=0;
for(int i=0;i<ARRMAX;i++)
{
cin>>temp;
if(!temp)
{
cin.clear();
while(cin.get()!='\n')
continue;
cout<<"bad input"<<endl;
}
else if(temp<0)
break;
else
{
arr[i] = temp;
count++;
}
}
return count;
}
void show_arr(double* arr,int count)
{
for(int i=0;i<count;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
}
double avgGrade(double* arr,int count)
{
double sum=0;
for(int i=0;i<count;i++)
{
sum+=arr[i];
}
return (sum/count);
}