①//插入一个数后顺序输出
难度:中
#include "stdafx.h"
#include<iostream>
using namespace std;
int main(int argc, char* argv[])
{
int i,temp1,temp2,b,j,k;
int a[11]={0,1,2,3,4,5,6,7,9,10};
cin>>b;
if(b>a[9])
a[10]=b;
else
{ for(i=0;i<10;i++)
{ if(a[i]>b)
{
k=i;
for(j=10;j>k;j--)
{
a[j]=a[j-1];
}
a[k]=b;
break; //key code line
}
}
}
/* {
temp1=a[i];
a[i]=b;
}
for(j=i+1;j<11;j++)
{
temp2=a[j];
a[j]=temp1; //temp1
temp1=temp2;
}
}*/
for(i=0;i<11;i++)
cout<<a[i]<<" ";
return 0;
}
②//逆序
//难度:易
#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
int main(int argc, char* argv[])
{
int a[5]={9,8,7,6,5};
int i,j;
int k;
for(i=0,j=4;i<2;i++,j--)
{
k=a[i];
a[i]=a[j];
a[j]=k;
}
for(i=0;i<5;i++)
cout<<a[i];
return 0;
}
③难度:中
//杨辉三角问题
#include "stdafx.h"
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
int main(int argc, char* argv[])
{
int i;
int a[10][10];
for(i=0;i<10;i++)
{
a[i][0]=1;
a[i][i]=1;
}
int j;
for(i=2;i<10;i++)
for(j=1;j<i;j++)//why it should j<i ??
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for(i=0;i<10;i++)
{ for(j=0;j<=i;j++)
cout<<a[i][j]<<setw(5);
cout<<"\n";
}
return 0;
}
//找出最小的数与第一交换
//最大的与最后数交换
//④难度:易
#include "stdafx.h"
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
int main(int argc, char* argv[])
{
int a[10]={2,2,1,4,5,6,7,8,9,10};
int i;
int *p=a;
int k=0,q=0;
for(i=1;i<9;i++)
{
int min=a[1],max=a[8];
if(a[i]<min)
k=i;
if(a[i]>max)
q=i;
}
int temp1,temp2;
temp1=a[0];
a[0]=a[k];
a[k]=temp1;
temp2=a[9];
a[9]=a[q];
a[q]=temp2;
for(i=0;i<10;i++)
cout<<a[i]<<" ";
return 0;
}