C语言常用算法大全.docx

上传人:b****7 文档编号:11056545 上传时间:2023-02-24 格式:DOCX 页数:62 大小:27.02KB
下载 相关 举报
C语言常用算法大全.docx_第1页
第1页 / 共62页
C语言常用算法大全.docx_第2页
第2页 / 共62页
C语言常用算法大全.docx_第3页
第3页 / 共62页
C语言常用算法大全.docx_第4页
第4页 / 共62页
C语言常用算法大全.docx_第5页
第5页 / 共62页
点击查看更多>>
下载资源
资源描述

C语言常用算法大全.docx

《C语言常用算法大全.docx》由会员分享,可在线阅读,更多相关《C语言常用算法大全.docx(62页珍藏版)》请在冰豆网上搜索。

C语言常用算法大全.docx

C语言常用算法大全

1.十进制数转二进制数

#include

main()

{

inti,n,m;

inta[16]={0};

printf("pleaseinputthedecimalismnumber(0~32767):

\n");

scanf("%d",&n);

for(m=0;m<15;m++)

{

i=n%2;

n=n/2;

a[m]=i;

}

for(m=15;m>=0;m--)

{

printf("%d",a[m]);

if(m%4==0)

printf("");

}

printf("\n");

}

2.十进制转十六进制数

1)用格式控制的方式

#include

main()

{

inti;

printf("pleaseinputdecimalismnumber:

\n");

scanf("%d",&i);

printf("thehexnumberis%x\n",i);

}

2)除以基数取余法

#include

main()

{

inti,n,m;

inta[4]={0};

printf("pleaseinputthedecimalismnumber(0~32767):

\n");

scanf("%d",&n);

for(m=0;m<4;m++)

{

i=n%16;

n=n/16;

a[m]=i;

}

for(m=3;m>=0;m--)

{

printf("%d",a[m]);

}

printf("\n");

}

3.十进制转八进制数

1)用格式控制的方式

#include

main()

{

inti;

printf("pleaseinputdecimalismnumber:

\n");

scanf("%d",&i);

printf("thehexnumberis%o\n",i);

}

2)除以基数取余法

#include

main()

{

inti,n,m;

inta[8]={0};

printf("pleaseinputthedecimalismnumber(0~32767):

\n");

scanf("%d",&n);

for(m=0;m<8;m++)

{

i=n%8;

n=n/8;

a[m]=i;

}

for(m=7;m>=0;m--)

{

printf("%d",a[m]);

}

printf("\n");

}

4.十进制转任意进制数

#include

main()

{

inti,n,m,j;

inta[8]={0};

printf("pleaseinputthedecimalismnumber(0~32767):

\n");

scanf("%d",&n);

printf("pleaseinput基数:

");

scanf("%d",&j);

for(m=0;m<8;m++)

{

i=n%j;

n=n/j;

a[m]=i;

}

for(m=7;m>=0;m--)

{

printf("%d",a[m]);

}

printf("\n");

}

5.n进制数转十进制数

#include

#include

#include

main()

{

longt1;

inti,n,t,t3;

chara[100];

printf("pleaseinputanumberstring:

\n");

gets(a);

strupr(a);//小写转大写

t3=strlen(a);

t1=0;

printf("pleaseinputn(2or8or16):

\n");

scanf("%d",&n);

for(i=0;i

{

if(a[i]-'0'>=n&&a[i]<'A'||a[i]-'A'+10>=n)

{

printf("dataerror!

!

");

exit(0);

}

if(a[i]>='0'&&a[i]<='9')

t=a[i]-'0';

elseif(n>=11&&(a[i]>='A'&&a[i]<='A'+n-10))

t=a[i]-'A'+10;

t1=t1*n+t;

}

printf("thedecimalis%ld\n",t1);

}

6.输入任意三个整数,按照从小到大的顺序排列并输出

#include

main()

{

inta,b,c,t;

printf("pleaseinputa,b,c,:

\n");

scanf("%d%d%d",&a,&b,&c);

if(a>b)

{t=a;a=b;b=t;}

if(a>c)

{t=a;a=c;c=t;}

if(b>c)

{t=b;b=c;c=t;}

printf("theorderofthenumberis:

\n");

printf("%d,%d,%d",a,b,c);

}

7.判断闰年

#include

main()

{

intyear;

printf("pleaseinputtheyear:

\n");

scanf("%d",&year);

if((year%4==0&&year%100!

=0)||year%400==0)

printf("%disaleapyear",year);

else

printf("%disnotaleapyear",year);

}

8.随机函数进行加减运算

#include

#include

#include

main()

{

inta,b,c,sign,max;

charsign1;

printf("pleaseselectsign(1orother,1:

-,other:

+):

\n");

scanf("%d",&sign);

printf("pleaseselectthemaxnumber(<10000):

\n");

scanf("%d",&max);

srand((unsignedlong)time(0));

a=rand()%max;

b=rand()%max;

while((a

{

a=rand()%max;

b=rand()%max;

}

sign1=(sign==1?

'-':

'+');

printf("\n%d%c%d=",a,sign1,b);

scanf("%d",&c);

if((sign==1)&&(a-b==c)||(sign!

=1)&&(a+b==c))

printf("OK!

\n");

else

printf("Theresultiswrong\n");

//getch();

}

9.模拟ATM机界面程序

#include

#include

#include

intsystem(constchar*string);

main()

{

charKey,CMoney;

intpassword,password1=123,i=0,a=1000;

while

(1)

{

do{

system("cls");

printf("******************************\n");

printf("*Pleaseselectkey:

*\n");

printf("*1.password*\n");

printf("*2.getmoney*\n");

printf("*3.Return*\n");

printf("******************************\n");

Key=getch();

}while(Key!

='1'&&Key!

='2'&&Key!

='3');

/*当输入的值不是1,2,3中任意值时显示do循环体中的内容*/

switch(Key)

{

case'1':

system("cls");

do

{

i++;

printf("pleaseinputpassword:

");

scanf("%d",&password);

if(password1!

=password)

{

if(i>3)

{

printf("Wrong!

Pressanykeytoexit...");

getch();

exit(0);

}

else

puts("wrong,tryagain!

");

}

}while(password1!

=password&&i<3);

/*如果密码不正确且输入次数小于等于3次,执行do循环体中的语句*/

printf("OK!

Pressanykeytocontinue...");//密码正确返回初始界面开始其他操作

getch();

break;

case'2':

do{

system("cls");

if(password1!

=password)

//如果在case1中密码输入不正确将无法进行后面操作

{

printf("pleaseloggingin,pressanykeytocontinue...");

getch();

break;

}

else

{

printf("******************************\n");

printf("Pleaseselect:

\n");

printf("*1.$100*\n");

printf("*2.$200*\n");

printf("*3.$300*\n");

printf("*4.Return*\n");

printf("******************************\n");

CMoney=getch();

}

}while(CMoney!

='1'&&CMoney!

='2'&&CMoney!

='3'&&CMoney!

='4');

//当输入值不是1,2,3,4中任意数将继续执行do循环体中语句

switch(CMoney)

{

case'1':

system("cls");

a=a-100;

printf("**********************************************\n");

printf("*YourCreditmoneyis$100,Thankyou!

*\n");

printf("*Thebalanceis$%d.*\n",a);

printf("*Pressanykeytoreturn...*\n");

getch();

break;

case'2':

system("cls");

a=a-200;

printf("**********************************************\n");

printf("*YourCreditmoneyis$200,Thankyou!

*\n");

printf("*Thebalanceis$%d.*\n",a);

printf("*Pressanykeytoreturn...*\n");

getch();

break;

case'3':

system("cls");

a=a-300;

printf("**********************************************\n");

printf("*YourCreditmoneyis$300,Thankyou!

*\n");

printf("*Thebalanceis$%d.*\n",a);

printf("*Pressanykeytoreturn...*\n");

getch();

break;

case'4':

break;

}

break;

case'3':

printf("*****************************************\n");

printf("*Thankyouforusing!

*\n");

printf("*Goodbye!

*\n");

printf("*****************************************\n");

getch();

exit(0);

}

continue;

}

}

10.输出三角形图案

#include

main()

{

inti,j,k;

for(i=1;i<=5;i++)

{

for(j=1;j<=5-i;j++)

printf("");

for(k=1;k<=2*i-1;k++)

printf("#");

printf("\n");

}

}

//三重循环,最外层控制行数,次外层控制每行空格数,最里层控制输出的符号的个数

11.输出菱形

#include

main()

{

inti,j,k;

for(i=1;i<=4;i++)

{

for(j=1;j<=4-i;j++)

printf("");

for(k=1;k<=2*i-1;k++)

printf("*");

printf("\n");

}

for(i=1;i<=3;i++)

{

for(j=1;j<=i;j++)

printf("");

for(k=1;k<=2*(4-i)-1;k++)

printf("*");

printf("\n");

}

}

12.打印乘法口诀表

#include

main()

{

inti,j;

for(i=1;i<=9;i++)

{

for(j=1;j<=i;j++)

printf("%d*%d=%d",i,j,i*j);

printf("\n");

}

}

13.打印杨辉三角

下标从1开始

#include

main()

{

inti,j,a[11][11];

for(i=1;i<11;i++)

{

a[i][i]=1;

a[i][1]=1;

}

for(i=3;i<11;i++)

for(j=2;j<=i-1;j++)

a[i][j]=a[i-1][j-1]+a[i-1][j];

for(i=1;i<11;i++)

{

for(j=1;j<=i;j++)

printf("%4d",a[i][j]);

printf("\n");

}

}

下标从0开始

#include

main()

{

inti,j,a[11][11];

for(i=0;i<11;i++)

{

a[i][i]=1;

a[i][0]=1;

}

for(i=2;i<11;i++)

for(j=1;j<=i-1;j++)

a[i][j]=a[i-1][j-1]+a[i-1][j];

for(i=0;i<11;i++)

{

for(j=0;j<=i;j++)

printf("%4d",a[i][j]);

printf("\n");

}

}

14.求阶层

1)用while循环:

#include

main()

{

inti=2,n;

floatfac=1;

printf("pleaseinputaninterger>=0.\n");

scanf("%d",&n);

if(n==0||n==1)

{

printf("factorialis1.\n");

return0;

}

while(i<=n)

{

fac=fac*i;

i++;

}

printf("factorialof%dis:

%.2f\n",n,fac);

}

2)用递归:

#include

floatf(intn)

{inti=1;

if(n==0||n==1)

return1;

else

returnn*f(n-1);

}

main()

{

intn;

printf("pleaseinputaninterger>=0.\n");

scanf("%d",&n);

printf("factorialof%dis:

%.2f\n",n,f(n));

}

15.求一个数的因子

#include

main()

{

inti,j;

printf("Pleaseinput:

\n");

scanf("%d",&i);

for(j=1;j<=i;j++)

if(i%j==0)

printf("%d,",j);

}

16.一元钱兑换问题(兑换成一角两角五角)

#include

main()

{

inti,j,k;

for(i=0;i<=10;i++)

for(j=0;j<=5;j++)

for(k=0;k<=2;k++)

if(i+2*j+5*k==10)

printf("yijiao%d,liangjiao%d,wujiao%d\n",i,j,k);

}

17.对调数问题(找出两个正整数之和等于各自对调之后的数之和)

#include

main()

{

intx,y,z,x1,y1,z1,i,k,n,j=0;

while

(1)

{

printf("Pleaseinputaninterger(11~99):

\n");

scanf("%d",&n);

if(n<=10||n>=100)//当输入的数小于10或者大于100时输出错误

{

printf("dataerror!

\n");

continue;

}

elseif(n%10==0)

{

printf("dataerror!

\n");

continue;

}

else

{

x=n/10;

y=n%10;

z=10*y+x;

break;

}

}

for(i=11;i<100;i++)

{

if(i%10==0)

continue;

else

{

x1=i/10;

y1=i%10;

z1=10*y1+x1;

if(n+i==z+z1&&n!

=z1)//当满足n加i等于n的对调数加i的对调数且n和i不互为对调数

{

printf("%d+%d=%d+%d\n",n,i,z,z1);

j++;

}

else

continue;

}

}

if(j==0)//j为0表示不存在这样的数

printf("inexistance");

}

18.对调最大数和最小数

#include

main()

{

inta[20],max,min,i,j,k,n;//j记录每次比较中较小的数的下标,k记录每次比较中较大的数的下标

printf("pleaseinputthenumberofelements(<20):

\n");

scanf("%d",&n);

printf("pleaseinputtheelement:

\n");

for(i=0;i

scanf("%d",&a[i]);

max=min=a[0];

for(i=1;i

{

if(a[i]

{

min=a[i];

j=i;

}

if(a[i]>max)

{

max=a[i];

k=i;

}

}

a[k]=min;//在最大数的位置放置最小数

a[j]=max;//在最小数的位置放置最大数

printf("thepositionofminis:

%3d\n",j);

printf("thepositionofmaxis:

%3d\n",k);

printf("Nowthearrayis:

\n");

for(i=0;i

printf("%5d",a[i]);

}

19.二维数组行列互换

#include

main()

{

inti,j,i1,j1,a[100][100],b[100][100];//i1,j1用来存放行数和列数的最大值

printf("pleaseinputthenumberofrows(<=100)\n:

");

scanf("%d",&i1);

printf("pleaseinputthenumberofcolumns(<=100)\n:

");

scanf("%d",&j1);

printf("pleaseinputtheelem

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1