数字排列源代码
- 格式:docx
- 大小:15.13 KB
- 文档页数:2
趣味c语言编程100例【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++) /*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}======================================================= =======【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}======================================================= =======【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
C#语言100例经典源代码程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){inti,j,k;printf("\n");for(i=1;i<5;i++)/*以下为三重循环*/for(j=1;j<5;j++)for(k=1;k<5;k++){if(i!=k&&i!=j&&j!=k)/*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}==============================================================【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){longinti;intbonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;elseif(i<=200000)bonus=bonus1+(i-100000)*0.075;bonus=bonus2+(i-200000)*0.05;elseif(i<=600000)bonus=bonus4+(i-400000)*0.03;elseif(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++)/*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
信息学奥赛经典算法C语言经典例题100例经典C源程序100例1.【程序1】三位数组合题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++) /*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);} }==============================================================2.【程序2】条件判断题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus); }==============================================================3.【程序3】完全平方数题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
经典C语言程序设计100例利用递归方法求5!1.数字排列2.奖金分配问题3.已知条件求解整数4.输入日期判断第几天5.输入整数进行排序6.用*号显示字母C的图案7.显示特别图案8.打印九九口诀9.输出国际象棋棋盘10.打印楼梯并按条件打印笑脸11.经典兔子问题12.判断素数13.水仙花数问题14.正整数分解质因数15.学习成绩划分16.正整数求其最大合约数和最小公倍数统计英文字母/空格/数字个数18.求s=a+aa+aaa+aa...a 的值19.求解"完数"20.球体自由落下物理问题21.猴子吃桃问题22.乒乓球比赛抽签问题23.打印菱形图案24.分数数列求和25.求1+2!+3!+...+20! 的和26.38.求3*3矩阵对角线元素之和一个数组逆序输出41.static定义静态变量用法42.76.调用函数求1/2+1/4+...+1/nstatic的另一用法77.填空练习(指向指针的指针)46.宏#define命令练习(1)47.宏#define命令练习(2)48.宏#define命令练习(3)49.#if#ifdef和#ifndef的综合应用50.#include的应用练习51.学习使用按位与&除52.学习使用按位或|53.学习使用按位异或^4~7位。
该值个数的*55.学习使用按位取反~数97.输入字符并保存到磁盘98.图符串变换成大写字母并输出保存出--------------------------------------------------------------------------------c语言经典100题【合用】【程序1】题目:有1、2、3、4个数字,能组成多少个互不同样且无重复数字的三位数?都是多少?1.程序解析:可填在百位、十位、个位的数字都是掉不满足条件的排列。
1、2、3、4。
组成全部的排列后再去2.程序源代码:main(){inti,j,k;printf("\n");for(i=1;i<5;i++)/*以下为三重循环*/for(j=1;j<5;j++)for(k=1;k<5;k++){if(i!=k&&i!=j&&j!=k) /*保证i、j、k三位互不同样*/printf("%d,%d,%d\n",i,j,k);}}==============================================================【程序2】题目:企业发放的奖金依照利润提成。
C语言经典算法100例(1)(2007-08-15 15:09:22)C 语言编程经典 100 例【程序1】题目:有1、2、3、4个数字,能组成多少个互不一样且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf(“\n“);for(i=1;i〈5;i++) /*以下为三重循环*/for(j=1;j〈5;j++)for (k=1;k〈5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不一样*/printf(“%d,%d,%d\n“,i,j,k);}}【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的局部按10%提成,高于10万元的局部,可可提成7.5%;20万到40万之间时,高于20万元的局部,可提成5%;40万到60万之间时高于40万元的局部,可提成3%;60万到100万之间时,高于60万元的局部,可提成1.5%,高于100万元时,超过100万元的局部按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf(“%ld“,&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i〈=100000)bonus=i*0.1;else if(i〈=200000)bonus=bonus1+(i-100000)*0.075;else if(i〈=400000)bonus=bonus2+(i-200000)*0.05;else if(i〈=600000)bonus=bonus4+(i-400000)*0.03;else if(i〈=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf(“bonus=%d“,bonus);}【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
猜数字源代码#include#include#includeint main(){int x,z,i,b,a;char c;srand ( time(0) );printf("\n 迎到\n\n");printf(" 欢来了\n\n\n");printf(" 猜数字游戏\n");printf("\n\n\n\n");printf(" ……………………………………………………\n"); printf(" …………………<1.极易模式>…………………\n"); printf(" …………………<2.普通模式>…………………\n"); printf(" …………………<3.困难模式>…………………\n"); printf(" …………………<4.极难模式>…………………\n"); printf(" …………………<5.超神模式>…………………\n"); printf(" ……………………………………………………\n\n\n"); do{printf("请选择游戏难度:");scanf("%d",&b);switch (b){case 1:{printf("您⼀共有5次机会,祝您好运!\n");for (i = 0;i < 1;i++){z = rand()%10+1;}for(a=1;a<=5;a++)scanf("%d",&x);if (x > z){printf("对不起,您猜的数⼤了!您还有%d次机会。
数独算法及源代码朋友⼿机装有数独游戏,开会报告等⽆聊的场合常拿来玩玩,游戏的算法似乎并不难,想想我也能做出来。
今早闲的蛋疼,就写了个数独玩玩。
记录如下:数独规则不知道的可以参考这⾥:。
游戏关键的算法就在于⽣成⼀个符合数独游戏规则的初始矩阵,⾸先想到的⾃然是号称万能解题法的“搜索+剪枝”了。
1.产⽣符合数独规则的初始矩阵第⼀⾏是随机⽣成的1~9的排列,第2到9⾏就要通过搜索来产⽣了。
对于第2到9⾏的每⼀个空格,要从1到9逐个尝试放⼊,看同⼀列、同⼀⾏、同⼀个3×3的⼩⽅阵中是否出现过相同的数字,若没有就尝试放⼊,然后递归地搜索下⼀个位置的数字,若1到9都不⾏就返回上⼀个位置尝试下⼀个数字。
直到找到⼀组解就返回。
先上C++代码:#include<iostream>#include<algorithm>#include <ctime>using namespace std;int Initial_State [ 10 ] [ 10 ] ;bool get_Initial_State( int i , int j ) //搜索第( i , j )位置处可以存储的数字,找到解则返回true,否则返回false{if( i > 9 || j > 9 )return true;for( int k = 1 ; k <= 9 ; ++k ){bool can = true; // can 变量⽤于记录数字k能否放在 ( i , j ) 处for( int m = 1 ; m < i ; ++m )if( Initial_State[m][j] == k ) // 检查同⼀列是否出现过数字k{can = false ;break ;}if ( can )for( int n = 1 ; n < j ; ++n )if( Initial_State[i][n] == k ) // 检查同⼀⾏是否出现过数字k{can = false ;break;}if( can ){int up1 = ( i/3 ) * 3 + 3 ; // (i,j)⽅格所在的3×3⼩⽅格i坐标的上限int up2 = ( j/3 ) *3 + 3; // (i,j)⽅格所在的3×3⼩⽅格在j坐标的上限if( i % 3 == 0 ) //这是针对特殊情况的处理up1 = i ;if( j % 3 == 0 )up2 = j ;for( int p = up1-2 ; p <= up1 ; ++p ) /* 检查在3×3的⼩⽅格中是否出现了同⼀个数字 */{if( can == false ) /* 跳出外层循环 */break ;for( int q = up2-2 ; q <= up2 ; ++q )if( Initial_State[p][q] == k ){can = false ;break ;}}}if( can ){Initial_State[i][j] = k ;if( j<9 ){if( get_Initial_State( i , j +1 ) ) /* 到同⼀⾏的下⼀位置开始搜索 */return true ;}else{if( i < 9 ){if( get_Initial_State( i + 1 , 1 ) ) /* 到下⼀⾏的第⼀个空格开始搜索 */return true ;}elsereturn true ; /* i >= 9 && j >= 9 , 搜索结束 */}Initial_State[i][j] = 0 ; /* 关键这⼀步:找不到解就要回复原状,否则会对下⾯的搜索造成影响 */}}return false ; /* 1到9都尝试过都不⾏,则返回递归的上⼀步 */}void start(){srand ( unsigned ( time (NULL) ) ); /* 产⽣random_shuffle的随机数种⼦ */for( int i = 1 ; i <= 9 ; ++i )for( int j = 1 ; j <= 9 ; ++j )Initial_State[i][j] = 0 ;for( int i = 1 ; i <= 9 ; ++i )Initial_State[1][i] = i ;random_shuffle( &( Initial_State[1][1]) , &( Initial_State[1][10]) ) ; /* 第⼀⾏随机排列产⽣ */get_Initial_State( 2 , 1 ) ; /* 从第⼆⾏开始搜索 */}int main(){start( ) ;for( int i = 1 ; i <= 9 ; ++ i ){for( int j = 1 ; j <= 9 ; ++j )cout<< Initial_State [i][j] <<" " ;cout<<endl;}getchar() ;return0 ;} 上⾯的算法在找到第⼀个解后就返回了,这样当第⼀⾏数字确定后,则只能得到⼀个矩阵了。