【题目一】程序改错题--闰年判断
输入一个年份,判断这一年是否是闰年,如果是输出 1,否则输出 0。
输入格式
输入一个正整数 n,表示年份。
输出格式
输出一行。如果输入的年份是闰年则输出 1,否则输出 0。
样例输入
1926
样例输出
0
/***********FOUND***********/
后是有问题的代码,请修改.
【分析】
在以上代码中,条件表达式存在一个错误。
cout<<(n/4==0&&n%100!=0)?1:0;
问题在于条件表达式中的判断条件有误。这段代码的目的是判断输入的整数n是否满足以下两个条件:
- n除以4的余数为0
- n除以100的余数不为0
然而,这个条件表达式的判断逻辑是错误的。
正确的判断条件应该是:
(n%4==0 && n%100!=0) || n%400==0
这个条件表达式的意思是:如果n除以4的余数为0且除以100的余数不为0,或者n除以400的余数为0,则条件成立。
cout<<((n%4==0 && n%100!=0) || n%400==0)?1:0;
完整代码如下:
#include<bits/stdc++.h>
using namespace std;
int n;
int main()
{
cin>>n;
/***********FOUND***********/
cout<<((n%4==0 && n%100!=0) || n%400==0)?1:0;
return 0;
}
【题目二】程序改错题--求和
下面的程序时计算并输出1到用户输入的 n 之间所有整数的和。
/***********FOUND***********/
后是有问题的代码
【分析】
在以上代码中,有一个问题存在于for循环的语法部分:
for(int i = 1; i <= n; i++);
{
sum += i;
}
问题在于for循环的结束括号后面多了一个分号。这个分号导致循环体为空,且循环体被提前结束,实际上循环体内的语句都不会执行。
完整代码如下:
#include<iostream>
using namespace std;
int main() {
int n, sum = 0;
cin >> n;
/**********FOUND**********/
for(int i = 1; i <= n; i++)
{
sum += i;
}
cout << "1到" << n << "的所有整数的和为:" << sum;
return 0;
}
【题目三】程序改错题--计算字符串的长度
修改下面的程序,使用户输入的一个字符串,可以计算并输出该字符串的长度。
/***********FOUND***********/
后是有问题的代码
【分析】
在上述的代码中,获取字符串长度的代码存在一个问题。
cout << "字符串的长度为:" << str.size;
在这行代码中,使用了str.size
来获取字符串的长度,但是忘记了调用函数的括号。
修正的代码如下所示:
cout << "字符串的长度为:" << str.size();
在这个修正后的代码中,我们在str.size
后面添加了括号()
,以调用字符串的size()
函数来获取字符串的长度
完整代码如下:
#include<iostream>
#include<string>
using namespace std;
int main() {
string str;
cin >> str;
/**********FOUND**********/
cout << "字符串的长度为:" << str.size();
return 0;
}
【题目四】程序填空题--打印信息
下面这个程序将读取用户的输入并打印出相应的消息,但是其中有一部分被遗漏了。请补全:
【分析】
在横线处填写输入和输出的占位符。
完整代码如下:
#include <iostream>
#