一些简单好玩的C语言程序

一些简单好玩的C语言程序C C 程序举例打印素数表 输出前 500 个素数 include stdio h include math h defineN500 判断是否为素数 intisprime inty inti ret 1 for i 2 i lt sqrt y i if y i 0 ret 0 break math h stdio h

C/C++程序举例

打印素数表

// 输出前500个素数  #include 
     #include 
      #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 
     #include 
     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 
     #include 
     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"; else cout<<i<<"*"<<j<<"="<<i*j<<"\t"; }cout<<endl; } } 

螺旋阵

螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环.

#include 
     #include 
     #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 
     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 
     #include 
     #include 
     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"); else printf("小.\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  
     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 
     //字符转数字  int char2num(char ch) { 
    if(ch >= '0' && ch <= '9') return ch - '0'; else return ch - 'a' + 10; } //数字转字符  char num2char(int num) { 
    if(num >=0 && num <= 9) return num + '0'; else return 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 
     #include 
     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\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语言时积累的一下代码,时隔久远,仍要守住一份初心,坚持学好算法,解决更多问题。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/205745.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午5:18
下一篇 2026年3月19日 下午5:18


相关推荐

  • COM技术内幕–QueryInterface函数「建议收藏」

    COM技术内幕–QueryInterface函数「建议收藏」接口查询:在客户查询组件的其他接口时,也是通过接口完成的。这个接口就是IUnknown.头文件包含在Win32SDK的unknwn.h头文件中。引用如下:interfaceIUnknown{virtualHRESULT__stdcallQueryInterface(constIID&iid,void**ppv)=0;virtual

    2022年6月18日
    38
  • httprunner(4)录制生成测试用例[通俗易懂]

    httprunner(4)录制生成测试用例[通俗易懂]前言写用例之前,我们应该熟悉API的详细信息。建议使用抓包工具Charles或AnyProxy进行抓包。har2case我们先来了解一下另一个项目har2case他的工作原理就是将当前主流的抓

    2022年7月29日
    19
  • 信息审计服务器功能,服务器审计日志「建议收藏」

    信息审计服务器功能,服务器审计日志「建议收藏」服务器审计日志内容精选换一换Manager的审计日志默认保存在数据库中,如果长期保留可能引起数据目录的磁盘空间不足问题,管理员如果需要将审计日志保存到其他归档服务器,可以在FusionInsightManager设置转储参数及时自动转储,便于管理审计日志信息。若用户未配置审计日志转储,当审计日志达到十万条,系统自动将这十万条审计日志保存到文件中。保存路径为主管理节为加强对系统数据的容灾管理,云…

    2022年5月4日
    56
  • 2、认识python

    1,python历史。宏观上:python2 与 python3 区别:python2 源码不标准,混乱,重复代码太多,python3 统一 标准,去除重复代码。2,python的环境。编译型:一次性将所有程序编译成二进制文件。缺点:开发效率低,不能跨平台。优点:运行速度快。:C,C++等等。解释型:当程序执行时,一行一行的解释。优点:开发效率高,可以跨…

    2021年11月30日
    47
  • Say Hi to ERNIE!富通科技实现文心大模型“即刻”部署

    Say Hi to ERNIE!富通科技实现文心大模型“即刻”部署

    2026年3月12日
    1
  • html 下拉框

    html 下拉框1 简单下拉框 VolvoSaabFia 有预选项的下拉框 VolvoSaabFia

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号