题目要求宏定义,但是我不太懂,就看例子定义,写完运行程序是:Segmentation fault。
#include
#define LEAP_YEAR(y) j(y)
void j(int y);
int main()
{
int y;
scanf("%d", &y);
LEAP_YEAR(y);
return 0;
}
void j(int y){
if(y%400==0 || y%4==0 && y%100!=0){
printf('L');
}
else{
printf('N');
}
}
printf("L");
字符串用双引号
printf第一个参数必须用字符串,不能用char:
#include<stdio.h>
#define LEAP_YEAR(y) j(y)
void j(int y);
int main()
{
int y;
scanf("%d", &y);
LEAP_YEAR(y);
return 0;
}
void j(int y){
if(y%400==0 || y%4==0 && y%100!=0){
printf("L"); // 双引号
}
else{
printf("N"); // 双引号
}
}
让你宏定义实现逻辑,你定义了个函数然后宏定义调用函数,这不符合题意
#include<stdio.h>
#define LEAP_YEAR(y) ((y%4==0)&&(y%100!=0)||(y%400==0))?'L':'N'
int main()
{
int y;
scanf("%d", &y);
printf("%c",LEAP_YEAR(y));
return 0;
}
参考下面的方法,可行还望采纳,谢谢,
#include <stdio.h>
#define LEAP_YEAR(y) ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
int main() {
int year;
scanf("%d", &year);
if (LEAP_YEAR(year)) {
printf("L");
} else {
printf("N");
}
return 0;
}