第四次编程总结

作业一:
题目:输出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)调试过程中遇到的问题及解决办法:
1631085-20190418221349230-87050056.png
解决方法:21实际的第一年是2001年而不是2000年,所以不能写year<=2000,需要把=去掉
4)运行结果截图:
1631085-20190418221817349-2016897822.png

作业二:
题目:本题要求将输入的任意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)调试过程中遇到的问题及解决办法:
1631085-20190418224349526-1077428842.png
没有考虑到全等的情况,应在后面添加一段全等的情况时的代码。
4)运行结果截图:
1631085-20190418224601087-1939159375.png
作业三:
题目:
本题要求统计给定整数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)调试过程中遇到的问题及解决办法:
1631085-20190424161841187-1063052033.png
解决办法:没有将特殊情况i=1和i=2时的情况进行分析,所以需在第一个for循环后面加上对这两种情况的判断分析。
4)运行结果截图:
1631085-20190424162809633-1762128424.png

转载于:https://www.cnblogs.com/ck11-06/p/10732956.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值