热门标签 | 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;


}






推荐阅读
  • 本文详细探讨了KMP算法中next数组的构建及其应用,重点分析了未改良和改良后的next数组在字符串匹配中的作用。通过具体实例和代码实现,帮助读者更好地理解KMP算法的核心原理。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • 本文详细介绍了C语言中链表的两种动态创建方法——头插法和尾插法,包括具体的实现代码和运行示例。通过这些内容,读者可以更好地理解和掌握链表的基本操作。 ... [详细]
  • 本文详细探讨了VxWorks操作系统中双向链表和环形缓冲区的实现原理及使用方法,通过具体示例代码加深理解。 ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
  • Java 中 Writer flush()方法,示例 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 本文探讨了 C++ 中普通数组和标准库类型 vector 的初始化方法。普通数组具有固定长度,而 vector 是一种可扩展的容器,允许动态调整大小。文章详细介绍了不同初始化方式及其应用场景,并提供了代码示例以加深理解。 ... [详细]
  • 本实验主要探讨了二叉排序树(BST)的基本操作,包括创建、查找和删除节点。通过具体实例和代码实现,详细介绍了如何使用递归和非递归方法进行关键字查找,并展示了删除特定节点后的树结构变化。 ... [详细]
  • 文件描述符、文件句柄与打开文件之间的关联解析
    本文详细探讨了文件描述符、文件句柄和打开文件之间的关系,通过具体示例解释了它们在操作系统中的作用及其相互影响。 ... [详细]
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社区 版权所有