(c语法百题17)打印某年某月有几天

知识点:

逻辑表达式的灵活运用

法1:

switch()的用法,注意字符用  case ‘a‘: ……;break;  数字用 case 6:……;break;

不要忘了break;

法2:

if……else 的用法

注意是否是闰年的算法

内容: 打印某年某月有几天

输入说明:

一行两个整数,前面是年份 后面是月份

输出说明:

一个整数

输入样例:

2009 6

输出样例 :

30

法1:

#include <stdio.h>
int main()
{
 int y,m;
 scanf("%d%d",&y,&m);
 if((y%4==0&&y%100!=0)||y%400==0)
 {
  switch (m)
  {
  case 1: printf("31\n");break;
  case 2: printf("29\n");break;
  case 3: printf("31\n");break;
  case 4: printf("30\n");break;
  case 5: printf("31\n");break;
  case 6: printf("30\n");break;
  case 7: printf("31\n");break;
  case 8: printf("31\n");break;
  case 9: printf("30\n");break;
  case 10: printf("31\n");break;
  case 11: printf("30\n");break;
  case 12: printf("31\n");break;
  }
 }
 else
  switch (m)
 {
  case 1: printf("31\n");break;
  case 2: printf("28\n");break;
  case 3: printf("31\n");break;
  case 4: printf("30\n");break;
  case 5: printf("31\n");break;
  case 6: printf("30\n");break;
  case 7: printf("31\n");break;
  case 8: printf("31\n");break;
  case 9: printf("30\n");break;
  case 10: printf("31\n");break;
  case 11: printf("30\n");break;
  case 12: printf("31\n");break;
 }
 return 0;
}

法2:

#include <stdio.h>
int main()
{
 int y,m;
 scanf("%d%d",&y,&m);
 if (m==1||m==3||m==5||m==7||m==8||m==10||m==12)
 {
  printf("31\n");
 }
 else
 {
  if (m==2)
  {
   if((y%4==0&&y%100!=0)||y%400==0)
   {
    printf("29\n");
   }
   else
   {
    printf("28\n");
   }
  }
  else
  {
   printf("30\n");
  }
 }
 return 0;
}

(c语法百题17)打印某年某月有几天

时间: 2024-10-16 17:37:52

(c语法百题17)打印某年某月有几天的相关文章

(c语法百题18)三数排序

知识点: 借用第四变量对三个变量进行排序. 排序的算法,if语句 内容: 任意输入三个数 a.b.c,按由大到小的顺序打印出来 输入说明: 一行 三个整数 输出说明: 一行三个整数,由大到小 1 #include <stdio.h> 2 int main() 3 { 4 int a,b,c,t; 5 scanf("%d %d %d",&a,&b,&c); 6 if(a<b) 7 { 8 t=b; 9 b=a; 10 a=t; 11 } 12 i

(c语法百题13)符号函数

知识点: if……else……if……else的用法. 内容: 计算下列函数(符号函数): 1 (x>0) y= 0 (x=0) -1 (x<0) 输入说明: 一个整数 输出说明: 一个数字(1,0,或者-1) 输入样例: 12 输出样例: 1 1 #include <stdio.h> 2 int main() 3 { 4 int a; 5 scanf("%d",&a); 6 if (a>0) 7 { 8 printf("1\n"

(c语法百题15)算术运算

知识点: 法1: 字符与ASCLL码的转换熟练! if……else的用法 法2: switch的用法 注意 scanf("%f %f %c",&a,&b,&c);与scanf("%f%f%c",&a,&b,&c);的区别,中间有无空格. 内容: 输入两个数值(均不为零)及一个算术运算符,输出其运算的结果(保留两位小数). 输入说明: 一行,2个数字,一字符(+,-,*,/,分别代表加.减.乘.除 输出说明: 一行,一个

(c语法百题14)判断直角三角形

知识点: 逻辑表达式的用法 &&       ||       !     注意优先级. 内容: 输入三角形的三边,判断它是否是直角三角形,是输出Yes,不是输出No,连三角形都不是,输出Error 输入说明: 一行,输入3个整数 输出说明: Yes! 或者 No!或者 Error! (注意大小写,标点前无空格) 输入样例: 3 4 5 输出样例 : Yes! 1 #include <stdio.h> 2 int main() 3 { 4 int a,b,c; 5 scanf(

(c语法百题16)一元二次方程的实数根

知识点: 数学函数头文件 #include <math.h> 开平方函数,sqrt() 注意等号 == 与赋值号= 的区别 内容: 求一元二次方程(二次项系统不为0)ax2+bx+c=0(a≠0)的实数根 输入说明: 一行三个系数(用空格隔开) 输出说明: 先输出(-b+sqrt())/2/a的根,一行一个,如果是相等实根,则输出一个(均保留两位小数) .若无实根输出No answer! 输入样例: 1 1 2 输出样例 : No answer! 1 #include <stdio.h&

(c语法百题22)统计字符

知识点: 数组的运用,结合循环 getchar()的用法 注意:对于数组a[1000],没有a=getchar()然后就把字符一个一个装进数组里面,这是错误的. 还有scanf("%s”,a);也不是正确的. 内容: 输入若干个字符(以‘#'作为结束),计算输入的字符中字母‘a'或‘A’出现的次数. 输入说明: 一行若干个字符. 输出说明: 一个整数,为a或者A字符出现次数和. 输入样例: abcdefABCDEFaaAA# 输出样例 : 6 1 #include <stdio.h>

(c语法百题24)最小公倍数

知识点: 算法 while循环的用法. 内容: 求两个自然数的最小公倍数 输入说明: 输出说明: 输入样例: 2 4 输出样例 : 4 1 #include <stdio.h> 2 int main() 3 { 4 int a,b,t,A,B; 5 scanf("%d %d",&a,&b); 6 A=a; 7 B=b; 8 do 9 { 10 t=a%b; 11 a=b; 12 b=t; 13 } 14 while (t!=0); 15 printf(&qu

(c语法百题25)从 n 个数中挑选出最大的数

知识点: 数组灵活运用 for循环灵活运用 简单的算法 内容: 从 n 个数中挑选出最大的数 输入说明: 两行 第一行一个数n,表示总的个数 第二行共n个数字,用空格隔开. 输出说明: 一行,最大数 输入样例: 4 1 2 3 4 输出样例 : 4 #include <stdio.h>#define MAX 200; int main() { int a[MAX],n,i,t; scanf("%d",&n); for (i=0;i<n;i++) { scanf

(c语法百题21)四位整数

知识点: for语句,if语句灵活运用 内容: 编程找出四位整数 abcd 中满足下述关系的数: ( ab + cd )( ab + cd ) = abcd 输入说明: 没有输入 输出说明: 输出abcd,从小到大,一行一个. 1 #include <stdio.h> 2 int main() 3 { 4 int i,a,b; 5 for(i=1000;i<10000;i++) 6 { 7 a=i/100; 8 b=i%100; 9 if((a+b)*(a+b)==i) 10 { 11