怎么解决C语言万年历的指针错误
不知道这个错误该怎么改char*week[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
expected initializer before 'char' 求助大佬们
结课作业就这一个错不知道怎么搞了 本帖最后由 人造人 于 2019-9-16 12:43 编辑
你怎么知道是这一行的问题? #include <stdio.h>
int main(void)
{
char week[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
printf("%s\n" , week) ;
}
人造人 发表于 2019-9-16 12:40
你怎么知道是这一行的问题?
报错一直是这一栏 jackz007 发表于 2019-9-16 15:00
这个改了有要求重新定义主函数int main换成voidmain也不行 自己改了一些 结果出这个
ld returned 1 exit status {:10_333:} Chenglin 发表于 2019-9-16 17:34
这个改了有要求重新定义主函数int main换成voidmain也不行
不要转述,把编译出来的错误信息文本直接贴出来看看。 楼主的这条语句并没有半点错误,可检查下是不是其它 语句忘加分号了! 程序现在运行不出查询某年某月某日的结果
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;
}
}
运行出来就是一行空白
然后结束 这是前面的定义
#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;
}
}
} 输入查询某年某月某日的日期 就不断刷上面写的主界面 const char*week[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
这是什么操作?
char *str= "string"这是用指针定义的常量字符数组。
char ty[]= "ghkkl";
char *str[] = ty;这是数组指针。
char (*str)[]这是指针数组。 要是为了定义二维数组还不如用char week[][]写法 ......
printf("这天是%s\n",week);
printf("是否继续查询(Y/N)?");
getchar(); //增加这行就可以了
scanf("%c",&yn);getchar();
if(yn=='y' || yn=='Y')k=1;
else k=0;
...... /*查询某月最大天数*/
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;
}
}
打印某月最大天数给不出结果啊一直没改出来 Process exited after 6.147 seconds with return value 3221225477
提示是这个 本帖最后由 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;
}
}
谢谢各位大佬
页:
[1]