过程结束,退出代码139(被信号11:SIGSEGV中断)——叮当声 #包括 int-mm; int-dd; int-yy; 因特迪兹; 温热的; 神圣的字符; 国际年代码(国际年){ int a=(yy/4)+yy; int b=a%7; 返回b;} 整数月码(整数毫米){ 如果(mm==1 | | mm==10){ deez=0; }如果(mm==2 | | mm==3){ deez=3; }如果(mm==4 | | mm==7){ deez=6; }如果(mm==5){ deez=1; }如果(mm==6){ deez=4; }如果(mm==8){ deez=2; }如果(mm==9 | | mm==12){ deez=5; }返回deez;} int main(){ printf(“请以mm/dd/yy\nEx.03/26/19的格式输入您的日期:”); scanf(“%d/%d/%d”,&mm,&dd,&yy); 如果(mm==1 | | mm==2){ 解冻=(年代码(yy)+月代码(mm)+6+dd+-1)%7; }否则{ 解冻=(年代码(yy)+月代码(mm)+6+dd)%7; } 如果(解冻==0){ 神圣=“星期日”; }如果(解冻==1){ “星期一”; }如果(解冻==2){ “星期二”; }如果(解冻==3){ “星期三”; } 如果(解冻==4){ “星期四”; }如果(解冻==5){ “星期五”; }否则{ 神圣=“星期六”; } printf(“%d/%d/%d,在%s”上,月、日、年、日); 返回0; }

过程结束,退出代码139(被信号11:SIGSEGV中断)——叮当声 #包括 int-mm; int-dd; int-yy; 因特迪兹; 温热的; 神圣的字符; 国际年代码(国际年){ int a=(yy/4)+yy; int b=a%7; 返回b;} 整数月码(整数毫米){ 如果(mm==1 | | mm==10){ deez=0; }如果(mm==2 | | mm==3){ deez=3; }如果(mm==4 | | mm==7){ deez=6; }如果(mm==5){ deez=1; }如果(mm==6){ deez=4; }如果(mm==8){ deez=2; }如果(mm==9 | | mm==12){ deez=5; }返回deez;} int main(){ printf(“请以mm/dd/yy\nEx.03/26/19的格式输入您的日期:”); scanf(“%d/%d/%d”,&mm,&dd,&yy); 如果(mm==1 | | mm==2){ 解冻=(年代码(yy)+月代码(mm)+6+dd+-1)%7; }否则{ 解冻=(年代码(yy)+月代码(mm)+6+dd)%7; } 如果(解冻==0){ 神圣=“星期日”; }如果(解冻==1){ “星期一”; }如果(解冻==2){ “星期二”; }如果(解冻==3){ “星期三”; } 如果(解冻==4){ “星期四”; }如果(解冻==5){ “星期五”; }否则{ 神圣=“星期六”; } printf(“%d/%d/%d,在%s”上,月、日、年、日); 返回0; },c,C,这段代码将允许用户输入数据,输出将是日期所在的星期几。我是C语言的新手,刚学了大约4天,所以我不确定如何修复这个错误。当代码更改为output int thawy时,结果是正确的,但是,打印字符串'divine'会产生错误 字符串“神圣”是错误的原因。有什么解决办法吗?我很确定这个错误是由内存问题引起的。不太确定如何修复此问题,已经尝试了malloc函数,可能使用了错误的方法。变量“神圣”只是一个字符。您不能将字符串分配给它,也不能使用“%s”来显示它。将其更改为“char const*”或“c

这段代码将允许用户输入数据,输出将是日期所在的星期几。我是C语言的新手,刚学了大约4天,所以我不确定如何修复这个错误。当代码更改为output int thawy时,结果是正确的,但是,打印字符串'divine'会产生错误

字符串“神圣”是错误的原因。有什么解决办法吗?我很确定这个错误是由内存问题引起的。不太确定如何修复此问题,已经尝试了malloc函数,可能使用了错误的方法。

变量“神圣”只是一个字符。您不能将字符串分配给它,也不能使用“%s”来显示它。将其更改为“char const*”或“char”。“char*”可以指向字符串,“const”告诉编译器内容不能更改


或者,您可以使用“char divide[10]”(9表示最长字符串,1表示末尾的NUL字符),并使用strcpy函数复制字符串。

不确定如何修复此错误。第一步是缩小根本原因。实现这一点的方法是使用基本调试。在调试器中运行程序,至少获得触发seg故障的确切代码行。然后检查变量,特别是指针和缓冲区访问,看看是否有任何错误。启动那些编译器警告并注意它们。您可以做的另一件重要事情是一致地格式化代码。它可能看起来很琐碎,但非常重要——如果代码不容易阅读,就无法很好地调试代码。确保函数之间有空格,并且一致应用缩进
#include <stdio.h>
int mm;
int dd;
int yy;
int deez;
int thawy;
char divine;
int yearcode(int yy){
int a=(yy/4)+yy;
int b=a%7;
return b;}
int monthcode(int mm){
    if(mm==1||mm==10){
        deez=0;
    } if(mm==2||mm==3){
        deez = 3;
    }if(mm==4||mm==7){
        deez=6;
    } if(mm==5){
        deez=1;
    }if(mm==6){
        deez=4;
    } if(mm==8){
        deez=2;
    } if(mm==9||mm==12) {
        deez = 5;
    }return deez;}
    int main() {
  printf("Please enter your date in the form mm/dd/yy\nEx. 03/26/19\n:");
  scanf("%d/%d/%d",&mm,&dd,&yy);
if(mm==1||mm==2){
thawy=(yearcode(yy)+monthcode(mm)+6+dd+-1)%7;
}else{
    thawy=(yearcode(yy)+monthcode(mm)+6+dd)%7;
}
if(thawy==0){
     divine="Sunday";
}if(thawy==1){
     divine="Monday";
}if(thawy==2){
   divine="Tuesday";
}if(thawy==3){
     divine="Wednesday";
}
if(thawy==4){
     divine="Thursday";
}if(thawy==5){
   divine="Friday";
}else{
    divine="Saturday";
}

printf("%d/%d/%d,is on a %s",mm,dd,yy,divine);
  return 0;
}