【问题描述】
将一个数组中的值按逆序重新存放
【输入形式】
手动输入多个整数
【输出形式】
按输入的逆序输出
【样例输入】
8 6 5 4 1
【样例输出】
1 4 5 6 8
#include <iostream>
using namespace std;
int main()
{
int a[5];
for(int i=0;i<5;i++)
{
cin>>a[i];
}
for(int i=4;i>=0;i--)
{
cout<<a[i];
if(i)
{
cout<<" ";
}
}
return 0;
}
【问题描述】
从标准输入中输入两组整数(每行不超过20个整数,每组整数中元素不重复),合并两组整数,去掉在两组整数中都出现的整数,并按从大到小顺序排序输出(即两组整数集"异或")。
【输入形式】
首先输入第一组整数,以一个空格分隔各个整数;然后在新的一行上输入第二组整数,以一个空格分隔,行末有回车换行。
【输出形式】
按从大到小顺序排序输出合并后的整数集(去掉在两组整数中都出现的整数,以一个空格分隔各个整数)。
【样例输入】
5 1 4 32 8 7 9 -6 5 2 87 10 1
【样例输出】
87 32 10 9 8 7 4 2 -6
【样例说明】
第一组整数为5 1 4 32 8 7 9 -6,第二组整数分别为5 2 87 10 1。将第一组和第二组整数合并(去掉在两组整数中都出现的整数5和1),并从大到小顺序排序后结果为87 32 10 9 8 7 4 2 -6。
#include<bits/stdc++.h>
using namespace std;
bool cmp(int x,int y)
{
return x>y;
}
int main()
{
int a[20],b[20],c[20];
int i=0,j=0,num=0,k1=0,k2=0;
char ch=0;
while(ch!='\n')
{
cin>>a[k1];
k1++;
ch=getchar();
}
ch=0;
while(ch!='\n')
{
cin>>b[k2];
k2++;
ch=getchar();
}
for(i=0;i<k1;i++)
{
for(j=0;j<k2;j++)
{
if(a[i]==b[j])
{
break;
}
}
if(j>=k2)
{
c[num]=a[i];
num++;
}
}
for(i=0;i<k2;i++)
{
for(j=0;j<k1;j++)
{
if(b[i]==a[j])
{
break;
}
}
if(j>=k1)
{
c[num]=b[i];
num++;
}
}
sort(c,c+num,cmp);
cout<<c[0];
for(i=1;i<num;i++)
{
for(j=0;j<i;j++)
{
if(c[i]==c[j])
{
break;
}
}
if(j>=i)
{
cout<<" "<<c[i];
}
}
return 0;
}
【问题描述】
编写函数itob(n,s,b),用于把整数n转换成以b为基的字符串并存储到s中. 编写程序,使用函数itob(n,s,b)将输入的整数n,转换成字符串s,将s输出.转换后的字符串从最高的非零位开始输出。如果n为负数,则输出的字符串的第一个字符为'-'。b为大于1小于37的任意自然数值。当b=2时,输出字符只可能是'0'和'1';当b=16时,输出字符串中可能含有字符为'0'-'9','a'-'f'(字母以小写输出)。b还可以是其它数值。比如输入n=33,b=17,则输出33的17进制值为"1g"。
【输入形式】
控制台输入整数n和b,其中n可以为负数。n和b以空格分隔.
【输出形式】
控制台输出转化后的字符串s.
【样例输入】
5 2
【样例输出】
101
【样例说明】
5的二进制就是101
#include<bits/stdc++.h>
int itob(int n,int s[50],int b)
{
int temp=0;
while(n)
{
s[temp++]=n%b;
n=n/b;
}
return temp;
}
using namespace std;
int main()
{
int n,b,s[50];
cin>>n>>b;
int len=itob(n,s,b);
if(n<0)
{
cout<<"-";
for(int i=len-1;i>=0;i--)
{
s[i]=-s[i];
}
}
for(int i=len-1;i>=0;i--)
{
if(s[i]>=0&&s[i]<=9)
{
cout<<s[i];
}
else
{
cout<<(char)(s[i]-10+'a');
}
}
return 0;
}
【问题描述】
找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能没有鞍点)
【输入形式】
数组
【输出形式】
输出鞍点坐标及数值,或者输出无鞍点
【样例输入】
1 2 4
2 4 8
3 6 12
【样例输出】
Saddle point:a[0][2]=4
【样例输入】
1 2 4
2 9 3
3 6 12
【样例输出】
There is no saddle point
【样例说明】
无
【评分标准】
输入上述两个二维数组,判断输出是否一致,以及核心代码是否使用二维数组。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int flag=0;
int i,j,k;
int a[3][3];
int line=0,row=0;
int max,min;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
cin>>a[i][j];
}
}
for(i=0;i<3;i++)
{
line=0;max=a[i][line];
for(j=0;j<3;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
line=j;
}
}
row=i;min=a[row][line];
for(k=0;k<3;k++)
{
if(a[k][line]<min)
{
min=a[k][line];
row=k;
}
}
if(row==i)
{
cout<<"Saddle point:"<<"a["<<row<<"]["<<line<<"]"<<"="<<a[row][line]<<endl;
flag=1;
}
}
if(flag==0)
{
cout<<"There is no saddle point"<<endl;
}
return 0;
}
【问题描述】
用筛选法求100之内的素数。
所谓“筛选法”指的是“埃拉托色尼(Eratosthenes)筛选法”。他是古希腊著名数学家,他采用的方法是:在一张纸上写1-100全部素数,然后逐个判断它们是否为素数,找出一个非素数,就把它挖掉,最后剩下的就是素数。
【输出形式】
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
#include<bits/stdc++.h>
using namespace std;
int check(int x)
{
if(x==1)
{
return 0;
}
for(int i=2;i*i<=x;i++)
{
if(x%i==0)
{
return 0;
}
}
return 1;
}
int main()
{
for(int i=1;i<=100;i++)
{
if(check(i))
{
cout<<i<<" ";
}
}
return 0;
}