鱼C论坛

 找回密码
 立即注册
查看: 1363|回复: 4

[已解决]switch报错

[复制链接]
发表于 2020-1-4 14:54:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
下面这段代码计算某一天是一年中的第几天。switch的第七个case开始报错。删掉case 7 ~ case 12则可以运行。
报错:||=== Build: Debug in project (compiler: GNU GCC Compiler) ===|
D:\myCODE\c\project\main.c||In function 'Days':|
D:\myCODE\c\project\main.c|19|error: lvalue required as increment operand|
D:\myCODE\c\project\main.c|19|error: expected ';' before numeric constant|
D:\myCODE\c\project\main.c|20|error: lvalue required as increment operand|
D:\myCODE\c\project\main.c|20|error: expected ';' before numeric constant|
D:\myCODE\c\project\main.c|21|error: lvalue required as increment operand|
D:\myCODE\c\project\main.c|21|error: expected ';' before numeric constant|
D:\myCODE\c\project\main.c|22|error: lvalue required as increment operand|
D:\myCODE\c\project\main.c|22|error: expected ';' before numeric constant|
D:\myCODE\c\project\main.c|23|error: lvalue required as increment operand|
D:\myCODE\c\project\main.c|23|error: expected ';' before numeric constant|
D:\myCODE\c\project\main.c|24|error: lvalue required as increment operand|
D:\myCODE\c\project\main.c|24|error: expected ';' before numeric constant|
D:\myCODE\c\project\main.c||In function 'main':|
D:\myCODE\c\project\main.c|42|error: expected expression before '=' token|
||=== Build failed: 13 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5. #include <stdarg.h>

  6. int Days(int *a, int *b);
  7. int Days(int *a, int *b){
  8.     unsigned int x = *a;
  9.     int y = *b;
  10.     int days;
  11.     switch(x){
  12.         case 1: days = y;break;
  13.         case 2: days = 31+y;break;
  14.         case 3: days = 31+28+y;break;
  15.         case 4: days = 31+28+31+y;break;
  16.         case 5: days = 31+28+31+30+y;break;
  17.         case 6: days = 31+28+31+30+31+y;break;
  18.         case 7: days = 31+28+31+30++31+30+y;break; [color=Red]//从这里开始会报错[/color]
  19.         case 8: days = 31+28+31+30++31+30+31+y;break;
  20.         case 9: days = 31+28+31+30++31+30+31+31+y;break;
  21.         case 10: days = 31+28+31+30++31+30+31+31+30+y;break;
  22.         case 11: days = 31+28+31+30++31+30+31+31+30+31+y;break;
  23.         case 12: days = 31+28+31+30++31+30+31+31+30+31+30+y;break;
  24.         default: break;
  25.     }
  26.     return days;
  27. }

  28. int main(void)
  29. {
  30.     int year, month, day;
  31.     int DAY;
  32.     printf("please enter year-month-day.eg: 1995-5-3");
  33.     scanf("%d-%d-%d",&year, &month, &day);
  34.     if(year%4 ==0 || year%400 == 0){
  35.         DAY = Days(&month, &day) + 1;
  36.         printf("this is the %d th day of %d", DAY, year);
  37.     }
  38.     else
  39.         printf("this is the %d th day of %d", Days(&month, &day), year);
  40.     return = 0;
  41. }
复制代码


最佳答案
2020-1-4 15:05:57
zhuwei9999 发表于 2020-1-4 15:03
谢谢,你这样是正确运行的。请问改动了哪里?


        case 7: days = 31+28+31+30++31+30+y;break;
        case 8: days = 31+28+31+30++31+30+31+y;break;
        case 9: days = 31+28+31+30++31+30+31+31+y;break;
        case 10: days = 31+28+31+30++31+30+31+31+30+y;break;
        case 11: days = 31+28+31+30++31+30+31+31+30+31+y;break;
        case 12: days = 31+28+31+30++31+30+31+31+30+31+30+y;break;

还有程序最后:

return = 0;
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-1-4 14:57:42 | 显示全部楼层
代码有问题,试试这样:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5. #include <stdarg.h>

  6. int Days(int *a, int *b);
  7. int Days(int *a, int *b){
  8.     unsigned int x = *a;
  9.     int y = *b;
  10.     int days;
  11.     switch(x){
  12.         case 1: days = y;break;
  13.         case 2: days = 31+y;break;
  14.         case 3: days = 31+28+y;break;
  15.         case 4: days = 31+28+31+y;break;
  16.         case 5: days = 31+28+31+30+y;break;
  17.         case 6: days = 31+28+31+30+31+y;break;
  18.         case 7: days = 31+28+31+30+31+30+y;break;
  19.         case 8: days = 31+28+31+30+31+30+31+y;break;
  20.         case 9: days = 31+28+31+30+31+30+31+31+y;break;
  21.         case 10: days = 31+28+31+30+31+30+31+31+30+y;break;
  22.         case 11: days = 31+28+31+30+31+30+31+31+30+31+y;break;
  23.         case 12: days = 31+28+31+30+31+30+31+31+30+31+30+y;break;
  24.         default: break;
  25.     }
  26.     return days;
  27. }

  28. int main(void)
  29. {
  30.     int year, month, day;
  31.     int DAY;
  32.     printf("please enter year-month-day.eg: 1995-5-3");
  33.     scanf("%d-%d-%d",&year, &month, &day);
  34.     if(year%4 ==0 || year%400 == 0){
  35.         DAY = Days(&month, &day) + 1;
  36.         printf("this is the %d th day of %d", DAY, year);
  37.     }
  38.     else
  39.         printf("this is the %d th day of %d", Days(&month, &day), year);
  40.     return 0;
  41. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-4 15:03:36 | 显示全部楼层
zltzlt 发表于 2020-1-4 14:57
代码有问题,试试这样:

谢谢,你这样是正确运行的。请问改动了哪里?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-4 15:05:57 | 显示全部楼层    本楼为最佳答案   
zhuwei9999 发表于 2020-1-4 15:03
谢谢,你这样是正确运行的。请问改动了哪里?


        case 7: days = 31+28+31+30++31+30+y;break;
        case 8: days = 31+28+31+30++31+30+31+y;break;
        case 9: days = 31+28+31+30++31+30+31+31+y;break;
        case 10: days = 31+28+31+30++31+30+31+31+30+y;break;
        case 11: days = 31+28+31+30++31+30+31+31+30+31+y;break;
        case 12: days = 31+28+31+30++31+30+31+31+30+31+30+y;break;

还有程序最后:

return = 0;
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-4 15:07:04 | 显示全部楼层
zltzlt 发表于 2020-1-4 15:05
case 7: days = 31+28+31+30++31+30+y;break;
        case 8: days = 31+28+31+30++31+30+31 ...

谢谢,我太粗心了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-4 01:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表