热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c程序(打印日历、数转成素数乘积、猜随机数、九宫格,汉诺塔问题、main中命令行参数)

1.打印日历打印日历判断是否是闰年#include<stdio.h>inta[]{0,31,28,31,30,31,30,31,31




 

1.打印日历


//打印日历


//判断是否是闰年


#include


int a[]={0,31,28,31,30,31,30,31,31,30,31,30,31};


int b[]={0,0,31,59,90,120,151,181,212,243,273,304,334,365};


int isleap(int y)


{


       return (y%4==0 && y%100!=0 || y%400==0)==1?1:0;


}


//返回一个日期距1900年1月1日(星期1)有多少天


int totaldays(int y,int m,int d)


{


       int tdays;


       int tyear=y-1900;


       tdays=tyear*365+tyear/4-tyear/100+tyear/400;


       if(m>2) tdays+=isleap(y);


       tdays+=d+b[m];


       return tdays;


}


//返回此天是星期几


int tweek(int y,int m,int d)


{


       return totaldays(y,m,d)%7;


}


//打印日历


void pt(int y,int m,int d)


{


       int i;


       int j;


       if(m==2) j=a[m]+isleap(y);


       else     j=a[m];


       int week=tweek(y,m,1);


       printf("日\t一\t 二\t三\t四\t五\t六\n");


       for (i=0;i

           printf("\t");


       for (i=1;i<=j;i++)


       {


              printf("%d\t",i);


              if((week+i)%7==0)


                     printf("\n");


       }


}


int main()


{


    int y,m,d;//定义年、月、日


       printf("input y-m-d\n",&y,&m,&d);


       scanf("%d-%d-%d",&y,&m,&d);


       printf("%d\n",m);


       pt(y,m,d);


       return 0;


}


2.数转成素数乘积


//将一个数转化成它的素数的乘积,如90=2*3*3*5。


//判断一个数是否是素数,是的话返回1,否则返回0


#include


int isshu(int x)


{


       int i;


       for (i=2;i

       {


              if(x%i==0) return 0;


       }


       return 1;


}


int main()


{


       int x;


       int i;


       int a[20]={0};


       int cnt=0;


    printf("input data\n");


       scanf("%d",&x);


       while (isshu(x)==0)


       {


              for (i=2;i

              {


                     if(x%i==0 && isshu(i)==1)


                     {


                            a[cnt++]=i;break;


                     }


              }


              x/=i;


       }


       a[cnt]=x;


       //将所求的打印出来


       for (i=0;i<=cnt;i++)


       {


              printf("%d\t",a[i]);


       }


       return 0;


}


3.输入数据,猜次数


//产生一个随机数,然后输入它,输出输入的次数和猜测结果是否正确(最多猜7次)


#include


#include


#include


int main()


{


    srand(time(NULL));


       int x=rand()%100;


       int y=7;//最多猜测次数


       int cnt=0;//猜测次数


       int num;//你输入的数


       printf("产生的随机数是%d\n",x);


       while (cnt<7)


       {


              printf("请输入你猜测的数:\n");


              scanf("%d",&num);


              if (x==num)


              {break;}


              else


              {


                     if (x>num)


                     {


                            printf("你输入的数小了,请输入大的数\n");


                     }


                     else


                     {


                            printf("你输入的数大了,请输入小的数\n");


                     }


                     cnt++;


              }


       }


       if (cnt!=7)


       {printf("你太聪明了,你猜测的次数为%d。\n",cnt+1);


       }


       else


       {printf("今天没有猜中,明天再来吧!\n");


       }    


       return 0;


}


4.九宫格


//九宫格程序,横、竖、斜相加的数都一样。注意:第1行的中间必定放1.


#include


#include


#include


int main()


{


    int n;


       printf("输入一个奇数:\n");


       scanf("%d",&n);


       if(n%2==0) return 0;


       int cnt=1;//计算放了多少次数据


       int i=0;//行


       int j=n/2;//列


       int a[20][20]={0};//本来要定义一个a[n][n]的数组,但是vc6.0中不可以,办法,只好定义成20*20的,在打印的时候打前n行n列了。


       //九宫格赋值


       for (cnt=1;cnt<=n*n;cnt++)


       {


              a[i][j]=cnt;


              i--;


              j++;


              if(i<0 && j

              if(i>=0 && j>=n) j=0;//列越界


              if(i<0 && j>=n)  {i+=2;j-=1;}//行列都越界


              if(i>=0 && j

              {


                     if(a[i][j]!=0) {i+=2;j-=1;}


              }


       }


       //打印九宫格


       for (i=0;i

       {


              for (j=0;j

              {


                     printf("%d\t",a[i][j]);


              }


              printf("\n");


       }


       return 0;


}


5.汉诺塔问题


//汉诺塔问题用递归(注意,盘子数量不要太多,不然运行时间会很长),汉诺塔问题是每次只能移动一个盘子,并且只能大盘子在下,小盘子在上。


#include


void hano(int n,char a,char b,char c)//将n个盘子从位置a移动到位置c,利用中间位置b


{


       if(n<=0) return;//必须是n<=0是退出递归的条件


       hano(n-1,a,c,b);


       printf("第%d个盘子从%c到%c\n",n,a,c);


       hano(n-1,b,a,c);


}


int main()


{


    int n;//盘子数量


       printf("input n:\n");


       scanf("%d",&n);


       hano(n,'A','B','C');


       return 0;


}


6.main命令行作参数


//用命令行传递参数:在命令行中输入名字,判断是否是会员。


#include


#include


int main(int argc,char *argv[])


//argv[0]为执行的命令,后面依次为命令行中输入的字符串,argc为argv中的数据的个数。


{


    char *s[5]={"susan","marlyn","helen","lucy","john"};


       int i=0;


       int j=0;


       int flag=0;//为判断是否同s中名字相同的标志,0为不一样,1为一样。


       for (i=1;i

       {


              for (j=0;j<5;j++)


              {


                     if (strcmp(argv[i],s[j]) == 0 )


                     {flag=1;break;}


              }


              if(1==flag)  printf("%s同main函数中数组%d的数据一样。\n",argv[i],s[j]);


              else   printf("%s同main函数中数组的数据不一样。\n",argv[i]);


       }


       return 0;


}






推荐阅读
  • 本文档旨在提供C语言的基础知识概述,涵盖常量、变量、数据类型、控制结构及函数定义等内容。特别强调了常量的不同类型及其在程序中的应用,以及如何正确声明和使用函数。 ... [详细]
  • 2022年4月15日的算法练习题,包括最长公共子序列和线段树的应用。 ... [详细]
  • 本文章探讨了如何使用动态规划解决LeetCode第32题——寻找最长的有效括号子串。通过具体示例和代码解析,帮助读者理解算法背后的逻辑。 ... [详细]
  • ZOJ 2760 - 最大流问题
    题目链接:How Many Shortest Paths。题目描述:给定一个包含n个节点的有向图,通过一个n*n的矩阵来表示。矩阵中的a[i][j]值为-1表示从节点i到节点j无直接路径;否则,该值表示从i到j的路径长度。输入起点vs和终点vt,计算从vs到vt的所有不共享任何边的最短路径数量。如果起点和终点相同,则输出无穷大。 ... [详细]
  • 本文详细介绍了Oracle RMAN中的增量备份机制,重点解析了差异增量和累积增量备份的概念及其在不同Oracle版本中的实现。通过对比两种备份方式的特点,帮助读者选择合适的备份策略。 ... [详细]
  • SpringBoot底层注解用法及原理
    2.1、组件添加1、Configuration基本使用Full模式与Lite模式示例最佳实战配置类组件之间无依赖关系用Lite模式加速容器启动过程,减少判断配置类组 ... [详细]
  • 本文详细介绍了如何将After Effects中的动画相机数据导入到Vizrt系统中,提供了一种有效的解决方案,适用于需要在广播级图形制作中使用AE动画的专业人士。 ... [详细]
  • BL550721、特点液晶驱动输出:Common输出4线,Segment输出36线内置显示寄存器364144bit2线串行接口(SCL,SDA)内置震荡电路内置液晶驱动电源电路13 ... [详细]
  • 深入解析轻量级数据库 SQL Server Express LocalDB
    本文详细介绍了 SQL Server Express LocalDB,这是一种轻量级的本地 T-SQL 数据库解决方案,特别适合开发环境使用。文章还探讨了 LocalDB 与其他轻量级数据库的对比,并提供了安装和连接 LocalDB 的步骤。 ... [详细]
  • 近期在研究Java IO流技术时,遇到了一个关于如何正确读取Doc文档而不出现乱码的问题。本文将详细介绍使用Apache POI库处理Doc和Docx文件的具体方法,包括必要的库引入和示例代码。 ... [详细]
  • 本文探讨了Java中有效停止线程的多种方法,包括使用标志位、中断机制及处理阻塞I/O操作等,旨在帮助开发者避免使用已废弃的危险方法,确保线程安全和程序稳定性。 ... [详细]
  • 本文详细探讨了如何处理包含多种分隔符的字符串分割问题,并提供了一个高效的C++实现方案。 ... [详细]
  • 本题要求计算从起点到终点所有最短路径的总权重,使用SPFA算法进行求解。 ... [详细]
  • 本文详细解析 Skynet 的启动流程,包括配置文件的读取、环境变量的设置、主要线程的启动(如 timer、socket、monitor 和 worker 线程),以及消息队列的实现机制。 ... [详细]
  • 本文详细介绍了如何处理Oracle数据库中的ORA-00227错误,即控制文件中检测到损坏块的问题,并提供了具体的解决方案。 ... [详细]
author-avatar
妖精蝴蝶74
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有