一些简单好玩的C语言程序
C/C++程序举例
打印素数表
// 输出前500个素数
#include<stdio.h>
#include<math.h>
#define N 500 //判断是否为素数
int isprime(int y)
{int i,ret=1;for(i=2;i<=sqrt(y);i++){ if(y%i==0){ret=0;break;}}return ret;
}//求第n个素数
int ThePrime(int n){int num = 0;int cur = 2;while(num < n) {if(isprime(cur))num++;cur++;}cur--;return cur;
}打印前N个素数
void test2(){int i;for(i = 1;i < N+1;i++){printf("%6d",ThePrime(i));if(i%10 == 0)printf("\n");} }
int main()
{test2();
}
结果如下
图案输出
//按照金字塔输出从A到Z的26个字母,用+填充空白
#include<stdio.h>
#include<math.h>
main()
{int i,j,k,n=9;char c='A'-1; for(i=1;i<=2*n-1;i++){k=n-abs(n-i);for(j=1;j<=abs(n-i)+1;j++){printf("+");} for(j=1;j<=2*k-1;j++){c++;printf("%c",c);if(c=='Z')c=c-26;}for(j=1;j<=abs(n-i)+1;j++){printf("+");}printf("\n");}return 0;
}
结果如下
4种方式打印九九乘法表
#include<iostream>
#include<iomanip>
using namespace std;void print1();
void print2();
void print3();
void print4();
int main(){print1();cout<<endl;print2();cout<<endl;print3();cout<<endl;print4(); return 0;
}void print1(){for(int i = 1;i < 10;i++){for(int j = 1;j < i+1;j++)cout<<i<<"*"<<j<<"="<<i*j<<" ";cout<<endl;}
}void print2(){for(int i = 1; i < 10;i++){for(int j = 1; j <= 9;j++){if(j < i) {cout<<"\t";continue;}cout<<setw(1)<<i<<"*"<<setw(1)<<j<<"="<<setw(2)<<i*j<<" ";}cout<<endl; } } void print3(){for(int i = 1;i < 10;i++){for(int j = 9;j >= i;j--)cout<<i<<"*"<<j<<"="<<setw(2)<<i*j<<" ";cout<<endl;}
}void print4(){for(int i = 1;i < 10;i++){for(int j = 1;j <= 9;j++){if(j <= 9-i)cout<<"\t";elsecout<<i<<"*"<<j<<"="<<i*j<<"\t";}cout<<endl;}
}
结果如下
螺旋阵
螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环.
#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片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
#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->%c\n",x,y);
}
结果如下
猜数游戏
//猜1个一百以内的整数,共5次机会
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{srand((unsigned)time(0));int num;int guess;//用户猜数 int right;//正确答案 int count;//已猜次数 while(1){count = 0;right = 0;num = rand()%100;printf("请猜一个数:");while(count++ < 5){scanf("%d",&guess);//小于5次,不断猜数 if(guess == num){right = 1;printf("恭喜猜对!\n");break;} else if(guess>num)printf("大.\n");elseprintf("小.\n");}if(right == 0)printf("尝试5次,失败\n");printf("是否继续?y/n:");int c; fflush(stdin);c = getchar();if(c == 'n' || c == 'N')break; }return 0;
}
打印ASCII码表可见字符
#include <stdio.h>
int main(void){int c;printf("\tCharacter Code\n");int i = 0;for (c=33; c<=126; c++){if(i%4==0)printf("\n");printf("\t%c\t%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] != '\0';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] = '\0';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];elseif(t%4==1)b2[b22++]=a[t-1];elseif(t%4==2)b3[b33++]=a[t-1];elseif(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\006 "); /*打印黑桃标记*/for(i=0; i<13; i++) /*将数组中的值转换为相应的花色*/if(b[i]/13==0) /*找到该花色对应的牌*/printf("%c ", n[b[i]%13]);printf("\n\003 "); /*打印红桃标记*/for(i=0; i<13; i++)if((b[i]/13)==1)printf("%c ", n[b[i]%13]);printf("\n\004 "); /*打印方块标记*/for(i=0; i<13; i++)if(b[i]/13==2)printf("%c ", n[b[i]%13]);printf("\n\005 "); /*打印梅花标记*/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语言时积累的一下代码,时隔久远,仍要守住一份初心,坚持学好算法,解决更多问题。
一些简单好玩的C语言程序相关推荐
- 简单游戏的c语言程序,[C语言编写小程序]简单打飞碟游戏
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 同样是最初步的模拟,有待再完善下去.飞碟速度上的问题还是希望大家自己调整gamespeed的速度. 空格是发射,发射的具体样子我没写. #include ...
- 简单的红绿灯c语言程序,基于Protues仿真的简单交通信号灯附C语言程序
简单的交通信号灯实现 本文中主要利用89C52单片机实现一个简单的交通信号灯系统,代码编写借助keil软件编写,再结合protues软件进行仿真.基本实现简单的交通信号等功能. 一.代码如下 #inc ...
- 单片机简单的计算器c语言程序,求一个 89C51 简易计算器的c语言程序 只要加减乘除就行!...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 case 0x7b: dengyu=1; //key=11; //wei++; break; } while(temp!=0xf0) { temp=P3; ...
- Go语言程序记录日志
许多软件系统运行中需要日志文件.Go语言程序中,输出日志需要使用包"log",编写程序十分简单. 像Java语言程序,输出日志时,往往需要使用开源的软件包来实现,编写程序稍微复杂一 ...
- 单片机c语言程序为什么要加密,(转老贴)单片机加密方法简介:
科研成果保护是每一个科研人员最关心的事情, 目的不使自己的辛苦劳动付注东流加密方法有软件加密, 硬件加密, 软硬件综合加密, 时间加密, 错误引导加密, 专利保护等措施有矛就有盾, 有盾就有矛, 有矛 ...
- 简单说明c语言程序步骤,C语言的入门简介和三个简单的C语言程序详细说明
学习一种编程语言,最重要的是建立一个练习环境,边学边练才能学好.Keil软件是目前最流行开发80C51系列单片机的软件,Keil提供了包括C编译器.宏汇编.连接器.库管理和一个功能强大的仿真调试器等在 ...
- 200个c语言程序(由简单到复杂),200个c语言程序(由简单到复杂)
200个C语言程序(由简单到复杂)从简单到难的200来个经典C程序csdn上的不过那里要资源分,自己下了下来,放到论坛里.有需要的童鞋可以下载学习学习.第一部分 基础篇 001 第一个C程序 002 ...
- 在c语言中pwm的作用,PWM调速的C语言程序编写(非常简单);
<PWM调速的C语言程序编写(非常简单);>由会员分享,可在线阅读,更多相关<PWM调速的C语言程序编写(非常简单);(4页珍藏版)>请在人人文库网上搜索. 1.PWM调速的C ...
- 一个简单的C语言程序是怎么来的呢?
1.定义程序的目标 首先构思这个C程序的作用,干什么,比如我想打印"hello world!" 2.设计程序: 进行简单的程序设计,比如我们需要设计一个打印hello word的C ...
- 一个简单的C语言程序(详解)
C Primer Plus之一个简单的C语言程序(详解) #include <stdio.h>int main(void) //一个简单的 C程序 {int num; //定义一个名为 n ...
最新文章
- Bootstrap学习遇到的role属性--- 无障碍网页应用属性
- Port Forwarding Port Triggering
- 用python向mongodb插入数据_Python操作MongoDB数据库(一)
- JVM体系结构:JVM和JVM体系结构概述
- mvc跳转html,ASP.NET MVC页面重定向简单介绍
- kubernetes资源管理
- C++list容器实现按照年龄升序排列,年龄相同按照身高降序排列,年龄身高相同对体重升序排列
- MyBatis配置使用
- 中科院-杨力祥视频教程	03课程
- 如何制作标识标志标签
- OSPF网络可以没有BDR(实验)
- 2018-03-25-利用动态二进制加密实现新型一句话木马之.NET篇
- 常用的Web前端开发框架有哪些呢?分享这11个
- Cadence OrCAD Capture 打印图纸的某一个部分的方法
- 欧文分校的计算机科学博士,加州大学欧文分校
- 打死都不要进外包,看看我在阿里外包的2年…
- quartz集群模式下qrtz_triggers表trigger_state变ERROR分析
- 三国演义中最具个性的名人名言
- pHP分析网站日志,通过用数据挖掘技术来分析Web网站日志?
- SuperZero gero同步区块进度可视化