C语言常用算法大全.docx
- 文档编号:4829450
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:62
- 大小:27.02KB
C语言常用算法大全.docx
《C语言常用算法大全.docx》由会员分享,可在线阅读,更多相关《C语言常用算法大全.docx(62页珍藏版)》请在冰点文库上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 常用 算法 大全