C 嗨,我正在写一个程序,显示一年是否是一个飞跃,以及它的数字总和是多少
我理解用来判断某件事是否是闰年的代码行,我见过用来确定数字总和的代码行,但我不知道如何将两者结合起来。当我运行它时,我得到一个错误C 嗨,我正在写一个程序,显示一年是否是一个飞跃,以及它的数字总和是多少,c,C,我理解用来判断某件事是否是闰年的代码行,我见过用来确定数字总和的代码行,但我不知道如何将两者结合起来。当我运行它时,我得到一个错误 In function "main": error. "else" without a previous "if" error. "else" without a previous "if" 代码: 代码中有几个问题- 问题1- 如果程序中的语句包含多个语句,但尚未将它们括在{}中 问题2- 您正在修改year变量的值,如果发现年份为闰年,则将其打印。因此,年的值
In function "main":
error. "else" without a previous "if"
error. "else" without a previous "if"
代码:
代码中有几个问题- 问题1- 如果程序中的语句包含多个语句,但尚未将它们括在{}中 问题2- 您正在修改year变量的值,如果发现年份为闰年,则将其打印。因此,年的值将始终打印为0。 备份可变年份值,然后执行步骤计算总和,并在printf中打印备份值
#include <stdio.h>
int main()
{
int year,sum=0,r;
int year_val;
printf("Enter a year to check if it is a leap year\n");
scanf("%d", &year);
year_val = year;
if ( year%400 == 0) {
for(;year!=0;year=year/10){
r=year%10;
sum=sum+r;
}
printf("%d is a leap year and the sum is %d.\n", year_val,sum);
} else if ( year%100 == 0)
printf("%d is not a leap year.\n", year);
else if ( year%4 == 0 ) {
for(;year!=0;year=year/10){
r=year%10;
sum=sum+r;
}
printf("%d is a leap year and the sum is %d.\n", year_val,sum);
} else
printf("%d is not a leap year.\n", year);
return 0;
}
在代码中,对于某些if语句,您不使用带有{}对的块语法。后来插入了一些额外的printf语句,打破了语法 鉴于您的技能水平,最好始终对所有复合语句使用块语法。依我看,即使是高级程序员也不应该对任何东西使用单语句语法,除非是最简单的复合语句(如果有的话) 该年的输出不正确,因为您修改了for循环中的变量。使用另一个变量进行此计算 以下是修改后的代码:
#include <stdio.h>
int main(void) {
int year, sum = 0, y, r;
printf("Enter a year to check if it is a leap year\n");
scanf("%d", &year);
if (year % 400 == 0) {
for (y = year; y != 0; y = y / 10) {
r = y % 10;
sum = sum + r;
}
printf("%d is a leap year and the sum is %d.\n", year, sum);
} else
if (year % 100 == 0) {
printf("%d is not a leap year.\n", year);
} else
if (year % 4 == 0) {
for (y = year; y != 0; y = y / 10) {
r = year % 10;
sum = sum + r;
}
printf("%d is a leap year and the sum is %d.\n", year, sum);
} else {
printf("%d is not a leap year.\n", year);
}
return 0;
}
请注意,可以根据公历对闰年进行复合测试来简化代码:
#include <stdio.h>
int main(void) {
int year, sum, y, r;
printf("Enter a year to check if it is a leap year\n");
if (scanf("%d", &year) == 1) {
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
for (sum = 0, y = year; y != 0; y = y / 10) {
r = y % 10;
sum = sum + r;
}
printf("%d is a leap year and the sum is %d.\n", year, sum);
} else {
printf("%d is not a leap year.\n", year);
}
} else {
printf("input error.\n");
}
return 0;
}
代码中有很多语法错误。首先,尝试编写干净的代码 以下是您需要更正的错误 a删除第5行多余的分号 b在第8,18行为if语句添加大括号{} c添加一个临时变量来保存年份,这样,如果年份是闰年, 你可以在那里打印temp。因为年份变量随后将减少为0。 我刚刚纠正了上面提到的事情,现在你的代码工作得很有魅力 这是修改后的代码。获取大括号{}的详细信息
#include <stdio.h>
int main()
{
int year,sum=0,r;
printf("Enter a year to check if it is a leap year\n");
scanf("%d", &year);
int temp = year;
if ( year%400 == 0){
for(;year!=0;year=year/10){
r=year%10;
sum=sum+r;
}
printf("%d is a leap year and the sum is %d.\n", temp,sum);
}
else if ( year%100 == 0)
printf("%d is not a leap year.\n", year);
else if ( year%4 == 0 ){
for(;year!=0;year=year/10){
r=year%10;
sum=sum+r;
}
printf("%d is a leap year and the sum is %d.\n", temp,sum);
}
else
printf("%d is not a leap year.\n", year);
return 0;
}
缩进你的代码,也许你会发现不匹配的地方。
#include <stdio.h>
int main()
{
int year,sum=0,r;
printf("Enter a year to check if it is a leap year\n");
scanf("%d", &year);
int temp = year;
if ( year%400 == 0){
for(;year!=0;year=year/10){
r=year%10;
sum=sum+r;
}
printf("%d is a leap year and the sum is %d.\n", temp,sum);
}
else if ( year%100 == 0)
printf("%d is not a leap year.\n", year);
else if ( year%4 == 0 ){
for(;year!=0;year=year/10){
r=year%10;
sum=sum+r;
}
printf("%d is a leap year and the sum is %d.\n", temp,sum);
}
else
printf("%d is not a leap year.\n", year);
return 0;
}