Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
知道c中某一天出现的月份日期_C - Fatal编程技术网

知道c中某一天出现的月份日期

知道c中某一天出现的月份日期,c,C,我试着打印一个月中某一天发生的日期。为了做到这一点,我需要得到一些天的整数值,比如0表示星期天,1表示星期一,2表示星期二等等。在C语言中如何做到这一点?我每次尝试都会出错 #include<stdio.h> #include<conio.h> #include<string.h> #include<stdlib.h> int main(){ int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};

我试着打印一个月中某一天发生的日期。为了做到这一点,我需要得到一些天的整数值,比如0表示星期天,1表示星期一,2表示星期二等等。在C语言中如何做到这一点?我每次尝试都会出错

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
int main(){
int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
  int year, day, month, date, a, y, m, s, i, b=0;
  char week[7][10] ;

 strcpy(week[0], "Sunday") ;
 strcpy(week[1], "Monday") ;
 strcpy(week[2], "Tuesday") ;
 strcpy(week[3], "Wednesday") ;
 strcpy(week[4], "Thursday") ;
 strcpy(week[5], "Friday") ;
 strcpy(week[6], "Saturday") ; 
 //char *week[]={"Sunday","Monday","Tuesday","Wednesday",
            //"Thrusday","Friday","Saturday"};
  printf("Enter the day:");
  scanf("%s",week[i]);
  printf("Enter the month:");
  scanf("%d",&month);
  printf("Enter the year:");
  scanf("%d",year);
  if(year%4==0&&year%100!=0||year%400==0)
  days[2]==
  29;
  else
  days[2]==28;

  //for(i=1;i<7;i++)
  //week[i]=i;
  //i=i+1;
  week[0]==0;
  week[1]==1;
  week[2]==2;
  week[3]==3;
  week[4]==4;
  week[5]==5;
  week[6]==6;

  //algorithm from http://www.tondering.dk/claus/cal/chrweek.php#calcdow
  a = (14 - month) % 12;
  y = year - a;
  m = month + (12 * a) - 12;

  date = (week[i] + y + (y / 4) - (y / 100) + (y / 400) + ((31 * m) / 12)) % 7 ;
  printf("%d",date);

  for(day=1; day<=days[month] ;day++)
  {
   date=date+7;
   date++;
  }
  return 0;
   }
#包括
#包括
#包括
#包括
int main(){
国际日[]={0,31,28,31,30,31,31,30,31,30,31};
int年,日,月,日,a,y,m,s,i,b=0;
字符周[7][10];
strcpy(第[0]周,“星期日”);
strcpy(第[1]周,“星期一”);
strcpy(第[2]周,“星期二”);
strcpy(第[3]周,“周三”);
strcpy(第[4]周,“星期四”);
strcpy(第[5]周,“星期五”);
strcpy(第[6]周,“星期六”);
//字符*周[]={“星期日”、“星期一”、“星期二”、“星期三”,
//“星期四”、“星期五”、“星期六”};
printf(“输入日期:”);
scanf(“%s”,周[i]);
printf(“输入月份:”);
scanf(“%d”和“月”);
printf(“输入年份:”);
scanf(“%d”,年份);
如果(第%4年==0和第%100年!=0 | |第%400年==0)
天[2]==
29;
其他的
天[2]==28;

//对于(i=1;i在第一次扫描中,我没有值。周[0]、周[1]等都是字符数组。通过将它们与int进行比较,您想做什么?(周[0]==0…)

声明一个字符[10]wordday;
printf(“输入日期:”);
scanf(“%s”,wordday);

对于(i=0;i在第一次扫描中,我没有值。周[0]、周[1]等都是字符数组。通过将它们与int进行比较,您想做什么?(周[0]==0…)

声明一个字符[10]wordday;
printf(“输入日期:”);
scanf(“%s”,wordday);

对于(i=0;i您的代码有没有被程序员仔细阅读和分析的迹象-无意冒犯,这只是学习编程过程的一部分。解决方案?复制一份,删除所有对测试程序核心不是绝对关键的代码,然后从中构建。为代码构建测试用例e您可能不理解这种独立运行的方式,因此您对您在程序中整合的代码片段有信心。阅读错误,搜索错误,并理解它们。只有将错误理解纳入编程语言的学习范围,您才能流利地使用该语言。错误alwa他们的意思是什么,他们的信息是具体和信息

例如,这段代码:

  char week[7][10] ;

 strcpy(week[0], "Sunday") ;
 strcpy(week[1], "Monday") ;
 strcpy(week[2], "Tuesday") ;
 strcpy(week[3], "Wednesday") ;
 strcpy(week[4], "Thursday") ;
 strcpy(week[5], "Friday") ;
 strcpy(week[6], "Saturday") ; 
 //char *week[]={"Sunday","Monday","Tuesday","Wednesday",
            //"Thrusday","Friday","Saturday"};
当我看到有效的、更简洁的代码被注释掉并替换为蛮力方法时,我总是持怀疑态度。这通常意味着程序员不理解他们看到的错误,因此他们会删掉一些他们不完全理解的代码,并替换为更直接或显式的方法,从而丢失了这些代码这是提高他们对语言理解能力的有效机会

下面是我为向自己(和读者!)证明注释调用工作良好的最简单示例,并且更简单:

#include <time.h>
#include <stdio.h>
int main(int argc, char**argv){
  char *week[]={
    "Sunday","Monday","Tuesday","Wednesday",
    "Thrusday","Friday","Saturday"
  };
  for( int i = 0; i < 7; i++)
    printf("%s\n", week[i]);
  return 0;
}
最好在scanf
scanf
上阅读文档。你让他们输入一天,然后将该字符串存储在指针
week[i]处的字符串中
。等一下,
week
不是将成为您的工作日姓名查询表的工作日号码吗?您为什么要在用户输入的当天使用它?我想您知道您想在这里做什么,但实际情况并非如此


我向您推荐的是,将此代码精简为一些最小且易于验证的内容,确保核心功能正常工作,然后从中成长。在这种情况下,您应该首先删除所有
scanf
语句,并对输入的日期、月份和年份进行硬编码。然后通过检查你的算法,看看你是否得到了预期的结果。一旦你验证了算法,你可以添加
scanf
语句和对指定日期的支持(@Kristjan Kica的答案有助于这一部分)。如果你专注于组装成最终产品的小部件,那么你最终的代码工作速度会比你一次完成整个程序而没有真正理解它快得多。

你的代码有没有被程序员仔细阅读和分析的迹象-无意冒犯,它只是一部分学习编程的过程。解决方案?复制一份,删掉所有对测试程序核心不是绝对关键的代码,然后从那里开始构建。为您可能不理解的代码构建测试用例,这些代码可以单独运行,因此您对您在应用程序中集成的代码片段有信心编程。阅读错误,用谷歌搜索错误,并理解它们。只有当你将错误理解纳入编程语言学习的范围时,你才能流利地使用该语言。错误总是有意义的,它们的信息是具体的和信息性的

例如,这段代码:

  char week[7][10] ;

 strcpy(week[0], "Sunday") ;
 strcpy(week[1], "Monday") ;
 strcpy(week[2], "Tuesday") ;
 strcpy(week[3], "Wednesday") ;
 strcpy(week[4], "Thursday") ;
 strcpy(week[5], "Friday") ;
 strcpy(week[6], "Saturday") ; 
 //char *week[]={"Sunday","Monday","Tuesday","Wednesday",
            //"Thrusday","Friday","Saturday"};
当我看到有效的、更简洁的代码被注释掉并替换为蛮力方法时,我总是持怀疑态度。这通常意味着程序员不理解他们看到的错误,因此他们会删掉一些他们不完全理解的代码,并替换为更直接或显式的方法,从而丢失了这些代码这是提高他们对语言理解能力的有效机会

下面是我为向自己(和读者!)证明注释调用工作良好的最简单示例,并且更简单:

#include <time.h>
#include <stdio.h>
int main(int argc, char**argv){
  char *week[]={
    "Sunday","Monday","Tuesday","Wednesday",
    "Thrusday","Friday","Saturday"
  };
  for( int i = 0; i < 7; i++)
    printf("%s\n", week[i]);
  return 0;
}
最好在scanf
scanf
上阅读文档。你让他们输入一天,然后将该字符串存储在指针
week[i]处的字符串中
。等一下,
week
不是将成为您的工作日姓名查询表的工作日号码吗?您为什么要在用户输入的当天使用它?我想您知道您想在这里做什么,但实际情况并非如此

<
printf("Enter the day:");
scanf("%s",week[i]);