作业一:
题目:输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。
输入格式:
输入在一行中给出21世纪的某个截止年份。
输出格式:
逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出"Invalid year!"。若不存在任何闰年,则输出“None”。
输入样例1:
2048
输出样例1:
2004
2008
2012
2016
2020
2024
2028
2032
2036
2040
2044
2048
输入样例2:
2000
输出样例2:
Invalid year!
1)实验代码:
#include<stdio.h>
nt main()
{
int year,i,count;
scanf("%d",&year);
count=0;
if(year<2000||year>2100)
printf("Invalid year!");
else
{
for(i=2001;i<=year;i++)
{
if((i%4==0&&i%100!=0)||(i%400==0))
{
printf("%d\n",i);
count++;
}
}
if(count==0)
printf("None\n");
}
return 0;
}
2)设计思路:
第一步:定义year,i,count。
第二步:如果输入的年份小于2000或者大于2100,那么它就会输出”Invalid year!",令count=0。
第三步:如果输入的年份不在上述范围中,那么将进入循环,如果满足循环内的条件(i%4==0&&i%100!=0)||(i%400==0)那么就会输出闰年年份。
第四步:如果进入循环之后,count依旧等于0,那么就会输出“None”。
3)调试过程中遇到的问题及解决办法:
解决方法:21实际的第一年是2001年而不是2000年,所以不能写year<=2000,需要把=去掉
4)运行结果截图:
作业二:
题目:本题要求将输入的任意3个整数从小到大输出。
输入格式:
输入在一行中给出3个整数,其间以空格分隔。
输出格式:
在一行中将3个整数从小到大输出,其间以“->”相连。
输入样例:
4 2 8
输出样例:
2->4->8
1)实验代码:
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a>b&&a>c&&b>c)
{
printf("%d->%d->%d",c,b,a);
}
else if(a>c&&a>b&&c>b)
{
printf("%d->%d->%d",b,c,a);
}
else if(b>a&&b>c&&a>c)
{
printf("%d->%d->%d",c,a,b);
}
else if(b>c&&b>a&&c>a)
{
printf("%d->%d->%d",a,c,b);
}
else if(c>a&&c>b&&a>b)
{
printf("%d->%d->%d",b,a,c);
}
else if(c>b&&c>a&&b>a)
{
printf("%d->%d->%d",a,b,c);
}
else if(a==b&&a==c&&b==c)
{
printf("%d->%d->%d",c,b,a);
}
return 0;
}
2)设计思路:
第一步:定义a,b,c
第二步:列出a,b,c之间大小关系的所有可能,再用if语句表达出来
第三步:得出需要结果
3)调试过程中遇到的问题及解决办法:
没有考虑到全等的情况,应在后面添加一段全等的情况时的代码。
4)运行结果截图:
作业三:
题目:
本题要求统计给定整数M和N区间内素数的个数并对它们求和。
输入格式:
输入在一行中给出两个正整数M和N(1≤M≤N≤500)。
输出格式:
在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。
输入样例:
10 31
输出样例:
7 143
1)实验代码:
include<stdio.h>
int main()
{
int i, j, m, n;
int flag = 0, count = 0, sum = 0;
scanf("%d%d", &m, &n);
for (i = m; i <= n; i++)
{
//flag = 0;
if (i == 1)
flag = 0;
else if (i == 2)
flag = 1;
else
{
for (j = 2; j < i; j++)
{
if (i % j == 0)
{
flag = 0;
break;
}
flag = 1;
}
}
if (flag == 1)
{
count++;
sum+=i;
}
}
printf("%d %d", count, sum);
return 0;
}
2)设计思路:
第一步:定义i,j,m,n,且定义count和sum的初始值为0.还要令flag=0以用于检测输入的i值是否为素数。
第二步:使用for循环语句令i=m,且i<=m,再循环进入下一步。
第三步:把特殊情况i等于1和2时单独用if语句进行判断。是素数,则flag=1,不是素数,那么flag依旧等于0.
第四步:再让j从2开始且小于i进行j循环,再在这个循环内判断i是否能被j整除,若能则flag=0,终止循环,若不能则跳出循环。
第五步:当flag等于1的时候,说明跳出前段循环的都是素数,那么再用count++对这些素数进行计数,再求sum+=i对这些素数进行求和,即可得出题目所求结果。
3)调试过程中遇到的问题及解决办法:
解决办法:没有将特殊情况i=1和i=2时的情况进行分析,所以需在第一个for循环后面加上对这两种情况的判断分析。
4)运行结果截图: