一些c语言入门练手的小程序


/*计算一个整型的二进制中有多少个1 */
int count_of_1()
{
 int c,r,num=0;
 printf("请输入一个整数\n");
 scanf("%d",&c);
 for(r=0;c!=0;c=c/2)
 {
  r=c%2;
  if(r==1)
   num++;
 }
 printf("这个整数的二进制中有%d个1\n",num);
return num;
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/* 渔夫打鱼三天打鱼两天晒网  从1990年1月1号开始工作  给出某日期 问这天 渔夫在干嘛呢
int main()
{
 int year,month,date,leap=0;
 int i,j,num;
 for(j=0;j<1000;j++)
 {
  printf("想知道渔夫今天在干嘛吗,请输入一个日期,以空格隔开数字:\n");
  scanf("%d %d %d",&year,&month,&date);
  if(year<1990||month>12||date>31)
   printf("输入有错!重输!\n");
  else
  {
   for(i=1990;i<year;i++)
   {
    if((year%4==0&&year%100!=0)||(year%4==0&&year%400==0))
     leap++;
   }
   leap=leap%5;
   switch(month)
   {
   case 1:num=0+date;break;
   case 2:num=31+date;break;
   case 3:num=31+28+leap+date;break;
   case 4:num=31+28+leap+31+date;break;
   case 5:num=31+28+leap+31+30+date;break;
   case 6:num=31+28+leap+31+30+31+date;break;
   case 7:num=31+28+leap+31+30+31+30+date;break;
   case 8:num=31+28+leap+31+30+31+30+31+date;break;
   case 9:num=31+28+leap+31+30+31+30+31+31+date;break;
   case 10:num=31+28+leap+31+30+31+30+31+31+30+date;break;
   case 11:num=31+28+leap+31+30+31+30+31+31+30+31+date;break;
   case 12:num=31+28+leap+31+30+31+30+31+31+30+31+30+date;break;
   }
   num=num-leap;
   num=num%5;
   printf("公元%d年%d月%d日",year,month,date);
   switch(num)
   {
   case 1:printf("渔夫正在打鱼呢!");break;
   case 2:printf("渔夫正在打鱼呢!");break;
   case 3:printf("渔夫正在打鱼呢!");break;
   case 4:printf("渔夫正在晒网呢!");break;
   case 0:printf("渔夫正在晒网呢!");break;
   default:printf("渔夫在干啥关你屁事!");break;
   }
   printf("\n\n");
  }
 }
}*/

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/*猴子偷桃  第一天偷了x个,吃了0.5x+1,
每一天都吃了剩下的一半多一个
第十天剩下一个桃
问最开始总共多少个*/
int monkey_peach()
{
 int num = 0;
 int end = 1;//end=0.5*x-1
 for (int i = 0; i < 9; ++i)
 {
  num = (end + 1) * 2;
  end = num;
 }
 printf("%d", num);
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/*
买苹果。d1=2,第一天买两个,
第二天买前前一天的两倍,
每个苹果price=0.8,直到买的苹果个数不超过100
求每天平均花多少钱?
*/
int buy_apple()
{
 double price = 0.8;
 int day = 1;
 int num = 2;
 int sum = 2;
 while (sum <= 100)
 {
  num = num * 2;
  sum += num;
  ++day;
 }
 double money = sum*price / day;
 printf("%f", money);
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/*
输入年月日
计算今天是今年的第几天?
*/
int count_day()
{
 int arr[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
 int year=1, month=1, date=1;
 while (1)
 {
 printf("请输入年月日,以逗号隔开:");
 scanf("%d,%d,%d", &year, &month, &date);
 if (month<1 || month>12 || date<1 || date>31 || year < 0)
 {
  printf("输入有误,请重输\n");
  continue;
 }
 else
  break;
 }
 
 int day = 0;
 if ((year % 4 == 0 && year % 100 != 0 )|| (year % 400 == 0))
 {/*
  1.能被4整除而不能被100整除.
  2.能被400整除.
  */
  arr[1] = 29;
 }///如果是闰年,二月多一天
 day += date;
 for (int i = 0; i+1 < month; ++i)
 {
  day += arr[i] ;
 }
 printf("今天是今年的第%d天\n", day);
 return day;
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~```

/*婚礼三对情侣  男ABC三人,女XYZ 三人
 说了三个谎言: A-X,X-C,C-Z  配对
问其实谁和谁配对?*/
int main()
{
 char A, B, C;
 for (A = 'X'; A <= 'Z'; ++A)
 {
  for(B = 'X'; B <= 'Z'; ++B)
  {
   for (C = 'X'; C <= 'Z'; ++C)
   {
    if (A != 'X'&&C != 'X'&&C != 'Z'&&A != B&&B != C&&A != C)
    {
     printf("A--%c\n", A);
     printf("B--%c\n", B);
     printf("C--%c\n", C);
    }
   }
  }
 }
 
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·
/*
百元买百鸡
公鸡-5元1个
母鸡-3元1个
小鸡-1元3个
问能买各几只?
*/
int main()
{
 int f_c = 0, m_c = 0, b_c = 0;
 for (; f_c < 20; f_c++)//公鸡最多二十只
 {
  for (m_c = 0; m_c < 30; ++m_c)//母鸡最多30只
  {
   for (int i = 0; i < 100; ++i)//买小鸡的钱 一元三只
   {
    b_c = 3 * i;
    if ((f_c + b_c + m_c == 100) && (f_c*5+m_c*3+i == 100) && (f_c != 0) && (m_c != 0) && (b_c != 0))
    {
     printf("一百元可以买\n公鸡:%d\n母鸡:%d\n小鸡:%d\n", f_c, m_c, b_c);
     //return 0;
    }
   }
  }
 }
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值