10年高级语言常用算法汇总Word文档格式.docx
《10年高级语言常用算法汇总Word文档格式.docx》由会员分享,可在线阅读,更多相关《10年高级语言常用算法汇总Word文档格式.docx(19页珍藏版)》请在冰点文库上搜索。
n-a;
ST"
S"
3.素数判定
函数调用:
intprime(intn)
for(intj=2;
j<
=n/2;
j++)
if(n%j==0)
return0;
if(j==n)
return1;
intm;
cout<
输入m的值:
cin>
>
m;
if(prime(m))
cout<
是素数"
else
不是素数"
不用函数调用:
4.级数逼近:
求π的近似值,精确到小数点后6位
doublea=3,s=1,b=0,i=1;
while(a<
=100)
i*=(-1);
b=i*(1/a);
s+=b;
a=a+2;
s=(int)(s*1000000);
s=s/1000000;
s<
return0;
4.百钱买百鸡:
一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少,要求三种鸡都必须买
#include<
for(inti=1;
i<
=20;
i++)
for(intj=1;
=31;
j++)
for(intk=1;
k<
=98;
k++)
if(5*i+3*j+k/3-100)
continue;
if(i+j+k-100)
if(k%3)
cout<
cock:
hen:
chick:
5.Fibonacci数列
书P107-108
6.求两个最大公约数
inta,b,c,d;
输入两个数:
cin>
a>
b;
c=a*b;
while((d=a%b)!
=0)
a=b;
b=d;
最大公约数为:
7.进制转换
十进制转八进制:
voidd8b(unsignedintn)
if(n<
=7)
n;
else
d8b(n/8);
n%8;
inta;
输入一个数:
d8b(a);
8.一维数据中求最大值、最小值
inta[5];
intmax=a[0],maxPos=0;
intmin=a[0],minPos=0;
输入数组a,共5个数:
for(intn=0;
n<
5;
n++)
cin>
a[n];
for(inti=1;
if(max<
=a[i])
{
max=a[i];
maxPos=i;
}
elseif(min>
min=a[i];
minPos=i;
for(intb=0;
a["
]="
a[b]<
数组a中最大元素是:
maxPos<
a[maxPos]<
数组a中最小元素是:
minPos<
a[minPos]<
9.数组排序(选择、冒泡)
选择:
voidselsort(intdata[],intn);
inta[]={20,40,-50,7,13};
intn=sizeof(a)/sizeof(int);
selsort(a,n);
for(intj=0;
a[j]<
\t"
voidselsort(intdata[],intn)
intmin,k,temp;
for(inti=0;
n-1;
min=data[i];
k=i;
for(intj=i+1;
if(min>
data[j])
{
min=data[j];
k=j;
}
temp=data[i];
data[i]=data[k];
data[k]=temp;
冒泡:
voidbubblesort(intdata[],intn);
bubblesort(a,n);
voidbubblesort(intdata[],intn)
inttemp;
i++)
for(intj=0;
n-i;
if(data[j]>
data[j+1])
temp=data[j];
data[j]=data[j+1];
data[j+1]=temp;
10.有序数组的插入、删除
插入:
iostream.h>
inti,j,Array[7]={1,2,4,5,6,7};
显示原始数据:
for(intm=0;
m<
sizeof(Array)/4-1;
m++)
Array[m]<
请输入你要插入的数字:
cin>
j;
for(intn=sizeof(Array)/4-2;
n>
0;
n--)
if(Array[n]>
=j)
Array[n+1]=Array[n];
else
Array[n+1]=j;
break;
显示修改后数据:
for(i=0;
sizeof(Array)/4;
Array[i]<
return0;
删除:
cstring>
chars[100]="
Ilovethisprogram."
charc;
请输入要删除的字符:
c=cin.get();
inti,j;
for(i=j=0;
s[i]!
='
\0'
if(s[i]!
=c)
s[j]=s[i];
j++;
s[j]='
删除后的字符串为:
11.数组中数据的移动
12.二维数组中的鞍点:
找出一个矩阵M[5][8]中的鞍点的行号和列号,鞍点是满足所在行中是最大的而所在列中是最小的元素
inta[5][8];
请输入数组a[5][8]的值"
inti,j;
for(i=0;
for(j=0;
8;
a[i][j];
intc=0;
for(i=0;
5;
i++)
intmax,min,k;
for(max=0,j=0;
j<
5;
j++)
if(a[i][max]<
a[i][j])
max=j;
for(min=0,k=0;
k<
8;
k++)
if(a[min][max]>
a[k][max])
min=k;
if(min==i)
a[i][max]<
c++;
if(c==0)
NO"
13.二维数组的乘法
inta[2][2];
intb[2][2];
intc[2][2];
请输入数组a[2][2]的值"
2;
请输入b[2][2]的值:
b[i][j];
c[i][j]=0;
for(intk=0;
c[i][j]+=a[i][k]*b[k][j];
请输出矩阵a[m][n]与矩阵b[u][v]乘积的值:
c[i][j]<
14.能用指针、数组写字符串的比较、连接、复制
连接:
voidstrcat(chara[],charb[]);
intmain(void)
chara[50],b[50];
输入两个字符串:
\n"
strcat(a,b);
voidstrcat(chara[],charb[])
charc[100];
for(i=0;
a[i]!
c[i]=a[i];
for(j=0;
b[j]!
{
c[i]=b[j];
i++;
c[i]='
c<
比较:
#include<
intstrcmp(char*str1,char*str2)
while(*str1||*str2)
if(*str1>
*str2)
return1;
if(*str1<
return-1;
else
*str1++;
*str2++;
}
charstr1[100];
charstr2[100];
intresult=0;
输入一串字符:
cin.getline(str1,100);
cin.getline(str2,100);
result=strcmp(str1,str2);
if(result==1)
字符串1大"
if(result==-1)
字符串2大"
if(result==0)
字符串1,2一样大"
复制:
voidstrcpy(char*str1,char*str2);
charstr[20];
strcpy(str,"
abcdefg"
);
str<
voidstrcpy(char*str1,char*str2)
while(*str2!
)
*str1=*str2;
str1++;
str2++;
*str1='
注意:
要求能函数中实现算法6~14题,必要时能提供函数返回值