结果如下
结果如下
结果如下
螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环.
#include<iostream>#include<iomanip>#define N 15 using namespace std;int main(){int i,j,k,n,s;int ret = 1;int a[N][N] = {0}; for(i = 0;i < N/2;i++){for(j = i;j < N-i-1;j++)a[i][j]=ret++;//上横 for(k = i;k < N-i-1;k++)a[k][j]=ret++;// 右竖 for(n = N-i-1; n > i;n--)a[k][n]=ret++;//下横 for(s = N-i-1;s > i;s--)a[s][n]=ret++;//左竖 }if(N%2)a[N/2][N/2]=ret;//N为奇数时,给中心点赋值 for(int p = 0;p < N;p++){for(int q = 0;q < N;q++){cout<<setw(5)<<a[p][q];}cout<<endl;}return 0;} 汉诺塔汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令xldmb把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
#include<stdio.h>void hanoi(int n,char x,char y,char z);void move(char x,int n,char y);main(){hanoi(4,'a','b','c');}void hanoi(int n,char x,char y,char z){if(n == 1)move(x,1,z);else{hanoi(n-1,x,z,y);move(x,n,z);hanoi(n-1,y,x,z);}}void move(char x,int n,char y){printf("%c->%cn",x,y);}结果如下
打印ASCII码表可见字符
#include <stdio.h>int main(void){ int c; printf("tCharacter Coden"); int i = 0; for (c=33; c<=126; c++) { if(i%4==0) printf("n"); printf("t%ct%d", c, c);i++;}} 进制转换 //进制转换 #include<stdio.h>//字符转数字 int char2num(char ch){if(ch >= '0' && ch <= '9')return ch - '0';elsereturn ch - 'a' + 10;}//数字转字符 char num2char(int num){if(num >=0 && num <= 9)return num + '0';elsereturn num - 10 + 'a';}// 转化为目标进制 long source2decimal(char tmp[],int source){int len = 0;int num = 0;for(;tmp[len] != ' ';len++){num = num * source;num += char2num(tmp[len]);}return num;}//取余存放在数组 int decimal2obj(char tmp[],long decimal,int obj){int len = 0;int rem;while(decimal){rem = decimal % obj;tmp[len++] = num2char(rem);decimal = decimal / obj; }tmp[len] = ' ';return len;}void output(char tmp[],int len){int i;for(i = len-1 ;i >= 0;i--)printf("%c",tmp[i]);printf("n");}int main(){char tmp[100];int source;int obj;int flag = 1;int dec_num;int len;while(flag){printf("input a number:");scanf("%s",tmp);printf("input source:") ;scanf("%d",&source);printf("input object:");scanf("%d",&obj);dec_num = source2decimal(tmp,source);len = decimal2obj(tmp,dec_num,obj);output(tmp,len);printf("continue?1/0:");scanf("%d",&flag);}return 0;} 自动发牌程序 #include<stdlib.h>#include<stdio.h>int comp(const void *j, const void *i);void p(int b[], char n[]);int main(void){ static char n[]={'2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A'}; int a[53], b1[13], b2[13], b3[13], b4[13]; int b11=0, b22=0, b33=0, b44=0, t=1, m, flag, i; while( t<=52 ) /*控制发52张牌*/ { m=rand()%52; /*产生0到51之间的随机数*/ for(flag=1,i=1; i<=t&&flag; i++) /*查找新产生的随机数是否已经存在*/ if(m==a[i]) flag=0; /*flag=1表示产生的是新的随机数,flag=0表示新产 生的随机数已经存在*/ if(flag) { a[t++]=m; /*如果产生了新的随机数,则存入数组*/ /*根据t的模值,判断当前的牌应存入哪个数组中*/ if(t%4==0) b1[b11++]=a[t-1]; else if(t%4==1) b2[b22++]=a[t-1]; else if(t%4==2) b3[b33++]=a[t-1]; else if(t%4==3) b4[b44++]=a[t-1]; } } qsort(b1, 13, sizeof(int), comp); /*将每个人的牌进行排序*/ qsort(b2, 13, sizeof(int), comp); qsort(b3, 13, sizeof(int), comp); qsort(b4, 13, sizeof(int), comp); p(b1, n); /*分别打印每个人的牌*/ p(b2, n); p(b3, n); p(b4, n); return 0;}void p(int b[], char n[]){ int i; printf("n 06 "); /*打印黑桃标记*/ for(i=0; i<13; i++) /*将数组中的值转换为相应的花色*/ if(b[i]/13==0) /*找到该花色对应的牌*/ printf("%c ", n[b[i]%13]); printf("n 03 "); /*打印红桃标记*/ for(i=0; i<13; i++) if((b[i]/13)==1) printf("%c ", n[b[i]%13]); printf("n 04 "); /*打印方块标记*/ for(i=0; i<13; i++) if(b[i]/13==2) printf("%c ", n[b[i]%13]); printf("n 05 "); /*打印梅花标记*/ for(i=0; i<13; i++) if(b[i]/13==3 || b[i]/13==4) printf("%c ", n[b[i]%13]); printf("n");}int comp(const void *j, const void *i) /*qsort调用的排序函数*/{ return(*(int*)i-*(int*)j);}差不多就到这里了,欢迎大家指正,这是我初学C语言时积累的一下代码,时隔久远,仍要守住一份初心,坚持学好算法,解决更多问题。