
01:与指定数字相同的数的个数
#include "iostream"
using namespace std;
int main()
{
int count;
int time=0;
int num[100];
cin>>count;
for(int i=0;i>num[i];
}
int cmp;
cin>>cmp;
for(int i=0;i
02:陶陶摘苹果
#include "iostream"
using namespace std;
int main()
{
int num[10];
for(int i=0;i<10;i++)
{
cin>>num[i];
}
int high;
cin>>high;
int count=0;
for(int i=0;i<10;i++)
{
if(high+30>=num[i])
count++;
}
cout<
03:计算书费
#include "iostream"
#include "iomanip"
using namespace std;
int main()
{
double money[10]={28.9,32.7,45.6,78,35,86.2,27.8,43,56,65};
int num[10];
for(int i=0;i<10;i++)
{
cin>>num[i];
}
double sum=0;
for(int i=0;i<10;i++)
{
// cout<
04:数组逆序重放
#include "iostream"
#include "iomanip"
using namespace std;
int main()
{
int count;
int num[100];
cin>>count;
for(int i=0;i>num[i];
}
int n=count;
int temp = count-1;
if(count%2==0)
count=count/2;
else
count=(count-1)/2;
for(int i=0;i
05:年龄与疾病
#include "iostream"
#include "iomanip"
using namespace std;
int main()
{
int n,num1=0,num2=0,num3=0,num4=0,sum=0;
int num[100];
cin>>n;
for(int i=0;i>num[i];
if(num[i]>=0&&num[i]<=18)
{
num1++;
}else if(num[i]>=19&&num[i]<=35)
{
num2++;
}else if(num[i]>=36&&num[i]<=60)
{
num3++;
}else if(num[i]>=61)
{
num4++;
}
}
// cout<
06:校门外的树
#include "iostream"
#include "iomanip"
using namespace std;
int main()
{
int L,M;
cin>>L>>M;
int num1,num2;
bool flag[10002]={false};//注意一维数组的长度
for(int i=0;i>num1>>num2;
for(int j=num1;j<=num2;j++)
flag[j]=true;
}
int count=0;
for(int i=0;i<=L;i++)
{
if(!flag[i])
{
// cout<<"i:"<
07:有趣的跳跃
#include "iostream"
using namespace std;
int num[3000];
int dis[3000];
/**
* 冒泡排序,扫描len次,每次用下标0扫描到len-1-i,比较相邻的两个元素并交换
* @param num
* @param len
*/
void bubbleSort(int num[],int len)
{
for(int i=0;inum[j+1])
{
int temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
}
}
}
int main()
{
int n;
//输入数据总数
cin>>n;
//输入数据
for(int i=0;i>num[i];
}
//求出相邻元素差的绝对值,并存储在一维数组中
for(int i=0;i
08:石头剪刀布
#include "iostream"
using namespace std;
//用一维数组存储AB的出拳序列
int A[100];
int B[100];
//返回1,Awin;返回0,平局,返回-1,Bwin
int result(int ANum,int BNum)
{
switch (ANum)
{
case 0:
if(BNum==0) return 0;
else if(BNum == 2) return 1;
else return -1;
case 2:
if(BNum==2) return 0;
else if(BNum==5) return 1;
else return -1;
case 5:
if(BNum==5) return 0;
else if(BNum == 0) return 1;
else return -1;
default:
return -2;
}
}
int main() {
int tryNum;
cin >> tryNum;
int Alen, Blen,ASum = 0,BSum =0;
cin >> Alen >> Blen;
for (int i = 0; i < Alen; i++) {
cin >> A[i];
}
for (int i = 0; i < Blen; i++)
{
cin >> B[i];
}
for(int i=0;iBSum)
cout<<"A";
else if(ASum==BSum)
cout<<"draw";
else
cout<<"B";
return 0;
}
09:向量点积计算
#include "iostream"
using namespace std;
int A[1000];
int B[1000];
int main() {
int result = 0;
int Num;
cin >> Num;
for(int i = 0 ; i < Num ; i++)
cin >> A[i];
for(int i = 0 ; i < Num ; i++)
cin >> B[i];
for(int i = 0 ; i < Num ; i++)
{
result += A[i]*B[i];
}
cout<
10:大整数加法
#include "iostream"
using namespace std;
int A[202]={0};
int B[202]={0};
int result[202];
int C=0;//进位
int main() {
//是否扫描到首个非零元素
bool startF = false;
string tmp;
string strA,strB;
cin>>strA>>strB;
if(strA =="0" && strB=="0")
{
cout<<"0";
return 0;
}
//题设给定字符串长度是不一定对齐的
int LenA = strA.length();
int LenB = strB.length();
for(int i=0;iLenB?LenA:LenB;
for(int i = 0; i <= Len-1 ; i++) {
result[i] = A[i] + B[i] + C;
//cout<9)
{
C = 1;
result[i]-=10;
}else
C = 0;
}
if(C==1) {
startF = true;
cout<<"1";
}
for (int i = 0; i < Len; i++) {
tmp += result[i]+'0';
}
for(int i=tmp.length()-1;i>=0;i--) {
if (tmp[i] != '0')
startF = true;
if (startF)
cout <
11:大整数减法
#include "iostream"
using namespace std;
/**
* 将数字从低位到高位存储到一维数组中
* 做减法处理(注意是否需要借位)
* 不打印首位0字符
*/
int A[202]={0};
int B[202]={0};
int result[202];
int C=0;//借位
int main() {
//是否扫描到首个非零元素
bool startF = false;
string tmp;
string strA,strB;
cin>>strA>>strB;
// if(strA =="0" && strB=="0")
// {
// cout<<"0";
// return 0;
// }
//题设给定字符串长度是不一定对齐的
int LenA = strA.length();
int LenB = strB.length();
for(int i=0;iLenB?LenA:LenB;
for(int i = 0; i <= Len-1 ; i++) {
result[i] = A[i] - B[i] + C;
//cout<=0;i--) {
if (tmp[i] != '0')
startF = true;
if (startF)
cout <
12:计算2的N次方
#include "iostream"
using namespace std;
//一维数组存储每位数字
int result[20]={0};
int main()
{
int N;
cin>>N;
result[0] = 1;
//存储当前被乘数有效位数
int Len = 1;
for(int i=0;i=10)
{
result[j]-=10;
result[j+1]++;
//有进位时,考虑更新被乘数有效位数
Len = (j+1+1)>Len?(j+1+1):Len;
}
}
}
//输出
for(int i=Len-1;i>=0;i--)
{
cout<
13:大整数的因子
#include "iostream"
using namespace std;
int result[30];
bool getDiv(string Num,int divNum,int Len)
{
for(int i=0;i>Num;
int haveDivNum = false;
int startOut = true;
for(int i=2;i<10;i++) {
if(getDiv(Num,i, Num.length()))
{
haveDivNum = true;
if(startOut) {
cout << i;
startOut = false;
}else
cout<<" "<
14:求10000以内n的阶乘
#include "iostream"
#include "iomanip"
using namespace std;
int result[10000];
int main()
{
int n;
cin>>n;
if(n==0){
cout<<1;
return 0;
}
int k=1;
int C=0;
result[0] = 1;
//把大数字分来存储,每个数字不超过9999,因此例如1928321312存储为192 2832 1312
for(int i=1;i<=n;i++)//乘以1.....n
{
C=0;
//从后向前处理
for(int j=0;j=10000) {
C = result[j] / 10000;
result[j] = result[j] % 10000;
if (j == k-1 ) {
k++;
result[j+1] = C;
break;
}
}else
C= 0;
//cout<<"@"<=0;i--)
{
if(i==k-1)
cout<
15:阶乘和
#include "iostream"
#include "iomanip"
using namespace std;
const int MAXLEN = 20;
int sum[MAXLEN];
//将阶乘结果存储在数组中
int* getFac(int n)
{
//因为我们在函数体外需要使用这个一维数组,所以需要new
int* result= new int[MAXLEN];
for(int i=0;i=10000) {
C = result[j] / 10000;
result[j] = result[j] % 10000;
if (j == k-1 ) {
k++;
result[j+1] = C;
break;
}
}else
C= 0;
//cout<<"@"<>n;
for(int i=1;i<=n;i++)
{
int* tmp = getFac(i);
for(int i=0;i=10000)
{
C=sum[i]/10000;
sum[i]=sum[i]%10000;
}else
C = 0;
}
}
//输出结果
bool startF = false;
bool firstF = true;
for(int i=MAXLEN;i>=0;i--)
{
if(sum[i])
startF = true;
if(startF) {
if(firstF) {
cout << sum[i];
firstF = false;
} else {
cout.fill('0');
cout << setw(4) << sum[i];
}
}
}
}