18年西工大学の修士の大学院生の入学試験の再試験機の試験解答
35694 ワード
/**************************Headline:18年瓜大机试解答*Author:周小枫*Email:[email protected]*Date:2019-1-4*Brief:これは鶏がもっと料理を手伝う鶏が書いた参考codeです.テストを経て、以下のcodeはすべてOKです.間違いがあれば、大物の指摘を歓迎します.
1:積算
2:階乗
3:C(n,m),配列組合せ
4:nグループ数、各グループm個、各グループ数は小さいから大きいまで並べ替えて出力する
5:文字列の反転
6:「回文」かどうかを判断する、つまり文字列の左右から見ても同じ
7:かっこの一致
1:積算
#include
using namespace std;
int main()
{
int n;
cout<<"please enter the number of data group"<<endl;
cin>>n;
if(n<=0)
return 0;
while(n--){
int i,j;
cout<<"please enter two numbers"<<endl;
cin>>i>>j;
cout<<"the mutip of two num is :"<<i*j<<endl;
}
return 0;
2:階乗
#include
using namespace std;
int main()
{
int n;
cout<<"please enter the number of data group"<<endl;
cin>>n;
if(n<=0)
return 0;
while(n--){
int i,sum=1;
cin>>i;
if(i<=0)
return 0;
for(int j=1;j<=i;j++){
sum*=j;
}
cout<<"the jiecheng of i is :"<<sum<<endl;
}
return 0;
}
3:C(n,m),配列組合せ
#include
using namespace std;
int main()
{
cout<<"please input two numbers"<<endl;
int i,j;
cin>>i>>j;
if(i<=0||j<=0)
return 0;
int sum1=1,sum2=1;
for(int k=i,m=j;k>=1&&m>0;k--,m--){
sum1 *= k;
sum2 *= m;
}
cout<<"The result is :"<<sum1/sum2<<endl;
return 0;
}
4:nグループ数、各グループm個、各グループ数は小さいから大きいまで並べ替えて出力する
#include
using namespace std;
void mysort(int* a,int m){
int temp;
for(int i=0;i<m-1;i++)
for(int j=0;j<m-1;j++){
if(a[j]>a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
int main()
{
int n,m;
cout<<"please input the number of group and num of each member:"<<endl;
cin>>n>>m;
if(n<=0||m<=0)
return 0;
int a[n][m];
for(int i=0;i<n;i++)
for(int j=0;j<m;j++){
cin>>a[i][j];
}
for(int i=0;i<n;i++)
mysort(a[i],m); // ,
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
5:文字列の反転
#include
using namespace std;
int main()
{
int n,top=0;
cout<<"please input the number of group:"<<endl;
cin>>n;
if(n<=0)
return 0;
char s[n][20];
for(int i=0;i<n;i++)
cin>>s[i];
char st[20];
for(int i=0,j=0;i<n;i++){
while(s[i][j]!='\0')
st[top++]=s[i][j++];//
while(top>=0)
cout<<st[--top];
cout<<endl;
top=0,j=0;//
}
return 0;
}
6:「回文」かどうかを判断する、つまり文字列の左右から見ても同じ
#include
#include
using namespace std;
int main()
{
int n;
cout<<"please input the number of group:"<<endl;
cin>>n;
if(n<=0)
return 0;
char s[n][20];
for(int i=0;i<=n;i++)
cin.getline(s[i],20);
for(int i=1;i<=n;i++){
int left=0;
bool flag=true;
int right=strlen(s[i])-1;
while(left<right){
if(s[i][left]!=s[i][right]){//
flag=false;
break;
}
else{
left++;
right--;
}
}
if(flag == true)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
return 0;
}
7:かっこの一致
#include
#include
using namespace std;
int main()
{
int n;
cout<<"please input the number of group:"<<endl;
cin>>n;
if(n<=0)
return 0;
char s[n][20];
for(int i=0;i<=n;i++)
cin.getline(s[i],20);//
for(int i=1;i<=n;i++){
bool flag=true;
int len=strlen(s[i]);
char st[len];int top=0;//
for(int j=0;j<len;j++){
switch(s[i][j]){
case '{':
case '[':
case '(':st[top++]=s[i][j]; break;//
case '}':
if(st[--top]!='{') //
flag=false;
break;
case ']':
if(st[--top]!='[')
flag=false;
break;
case ')':
if(st[--top]!='(')
flag=false;
break;
}
}
if((flag==true)&&top==0) // flag true
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
return 0;
}