Chenglin 发表于 2019-9-16 12:33:55

怎么解决C语言万年历的指针错误

不知道这个错误该怎么改
char*week[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
expected initializer before 'char'

Chenglin 发表于 2019-9-16 12:34:27

求助大佬们
结课作业就这一个错不知道怎么搞了

人造人 发表于 2019-9-16 12:40:59

本帖最后由 人造人 于 2019-9-16 12:43 编辑

你怎么知道是这一行的问题?

jackz007 发表于 2019-9-16 15:00:21

#include <stdio.h>

int main(void)
{
      char week[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
      printf("%s\n" , week)                                                                  ;
}

Chenglin 发表于 2019-9-16 17:34:01

人造人 发表于 2019-9-16 12:40
你怎么知道是这一行的问题?

报错一直是这一栏

Chenglin 发表于 2019-9-16 17:34:44

jackz007 发表于 2019-9-16 15:00


这个改了有要求重新定义主函数int main换成voidmain也不行

Chenglin 发表于 2019-9-16 17:35:37

自己改了一些 结果出这个
ld returned 1 exit status

雷蛇 发表于 2019-9-16 17:35:39

{:10_333:}

jackz007 发表于 2019-9-16 17:55:24

Chenglin 发表于 2019-9-16 17:34
这个改了有要求重新定义主函数int main换成voidmain也不行

      不要转述,把编译出来的错误信息文本直接贴出来看看。

ijy 发表于 2019-9-17 01:22:13

楼主的这条语句并没有半点错误,可检查下是不是其它 语句忘加分号了!

Chenglin 发表于 2019-9-17 21:04:28

程序现在运行不出查询某年某月某日的结果
void whatisit()
{
        int y,m,d,s,k=1,sum,n,i;
        char yn;
        int a={0,31,28,31,30,31,30,31,31,30,31,30,31};
        while(k)
        {
                printf("请依次输入年,月,日:\n");
                scanf("%d,%d,%d",&y,&m,&d);
                s=0;
                for(i=1;i<m;i++)
                        s=s+a;
                s=s+d;
                if(IsLeapYear(y)&&m>2)
                        s=s+1;
                sum=s;
                n=(y-1+(y-1)/4-(y-1)/100+(y-1)/400+sum)%7;
                printf("这天是%s\n",week);
                printf("是否继续查询(Y/N)?");
                scanf("%c",&yn);getchar();               
                if(yn=='y' || yn=='Y')k=1;
                else k=0;
        }
}
运行出来就是一行空白
然后结束

Chenglin 发表于 2019-9-17 21:04:58

这是前面的定义
#include<stdio.h>
void screen();
void whatisit();
void leapyear();
void printyearday();
int IsLeapYear(int);
int whatisita(int,int);
int everymonth(int,int);
void printmonth(int,int);
void printmonthday();

const char*week[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

int main()
{
screen();
}
/*万年历查询主界面*/
void screen()
{
        int n;
        while(1)
                {
                printf(" 万年历查询程序:\n");
                printf("1.查询某年某月某日是星期几\n");
                printf("2.查询某年是否是闰年\n");
                printf("3.打印某年的全年日历\n");
                printf("4.查询某月的最大天数\n");
                printf("5.退出\n");
                printf("请输入要查询的选项:");
                scanf("%d",&n);
                switch(n)
                        {       
                                case 1:whatisit();break;
                                case 2:leapyear();break;
                                case 3:printyearday();break;
                                case 4:printmonthday();break;
                                case 5:return;
                                default:printf("你输入错误,请按要求输入!\n");break;
                        }
                }
}

Chenglin 发表于 2019-9-17 21:06:17

输入查询某年某月某日的日期   就不断刷上面写的主界面

bin554385863 发表于 2019-9-18 03:10:28

const char*week[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
这是什么操作?

char *str= "string"这是用指针定义的常量字符数组。
char ty[]= "ghkkl";
char *str[] = ty;这是数组指针。
char (*str)[]这是指针数组。

bin554385863 发表于 2019-9-18 03:13:45

要是为了定义二维数组还不如用char week[][]写法

superbe 发表于 2019-9-18 10:18:38

......
printf("这天是%s\n",week);
printf("是否继续查询(Y/N)?");
getchar();      //增加这行就可以了
scanf("%c",&yn);getchar();               
if(yn=='y' || yn=='Y')k=1;
else k=0;
......

Chenglin 发表于 2019-9-19 19:23:31

/*查询某月最大天数*/
int everymonth(int year,int month)
{
        int s;
        static int a={0,31,28,31,30,31,30,31,31,30,31,30,31};
        s=a;
        if(IsLeapYear(year)&&month==2)
        s=s+1;
        return s;
}
/*打印某年的某月最大天数函数*/
void printmonthday()
{
        int y,m,value,k=1;
        char yn;
        while (k)
        {
                printf("请输入查询的年份,月份\n:");
                scanf("%d,%d",&y,&m);
                value=everymonth(y,m);
                printf("%d年%d月的最大天数为%d:\n",y,m,value);
                printf("是否继续查询(Y/N)?");
                scanf("%c",&yn);
                getchar();
                if(yn=='y'||yn=='Y')k=1;
                else k=0;
        }

}
打印某月最大天数给不出结果啊一直没改出来   

Chenglin 发表于 2019-9-19 19:24:44

Process exited after 6.147 seconds with return value 3221225477
提示是这个

superbe 发表于 2019-9-19 20:51:24

本帖最后由 superbe 于 2019-9-19 20:53 编辑

/*打印某年的某月最大天数函数*/
void printmonthday()
{
      int y,m,value,k=1;
      char yn;
      while (k)
      {
                printf("请输入查询的年份,月份:\n");
                scanf("%d,%d",&y,&m); // %d,%d中间原来是全角逗号,输入时注意要输入全角。我改成半角了。
                value=everymonth(y,m);
                printf("%d年%d月的最大天数为%d:\n",y,m,value);
                printf("是否继续查询(Y/N)?");
                getchar();    //增加了这行
                scanf("%c",&yn);
                getchar();
                if(yn=='y'||yn=='Y')k=1;
                else k=0;
      }

}

Chenglin 发表于 2019-9-19 21:02:54

谢谢各位大佬
页: [1]
查看完整版本: 怎么解决C语言万年历的指针错误