PTA作业 7-4 4.16-输出小于某数的所有奇数

题目:

7-4 4.16-输出小于某数的所有奇数

分数 10

全屏浏览题目

切换布局

作者 张伟

单位 杭州职业技术学院

编写一段程序, 输入一个整数值, 显示该整数值以下的所有奇数.

-----出自【明解C语言】练习4-16.

整数值:15
1 3 5 7 9 11 13 15

注:若非正整数,则什么也不输出。

输入样例:

15

输出样例:

整数值:1 3 5 7 9 11 13 15

代码长度限制

16 KB

时间限制

400 ms

内存限制

1 MB

个人观点:

这道题我做错了几次,原因在于我的答案后面有空格的问题!

例如:1 3 5 7 9 11 13 15*(“*”代表空格)

我的15后面有一个空格,所以导致答案错误!

所以,这道题目关键在于怎么处理好“空格”!

我再CSDN上找到一个十分标准的答案:

这是链接,可以去看看:

循环类测验(上)7-4 4.16-输出小于某数的所有奇数 (10 分)_poise奔的博客-CSDN博客编写一段程序, 输入一个整数值, 显示该整数值以下的所有奇数.-----出自【明解C语言】练习4-16.整数值:151 3 5 7 9 11 13 15注:若非正整数,则什么也不输出。输入样例:15结尾无空行输出样例:整数值:1 3 5 7 9 11 13 15结尾无空行我的答案:#include <stdio.h>#include <math.h>int main(){ int a, n; scanf("...https://blog.csdn.net/qq_63782675/article/details/121391464

#include <stdio.h>
#include <math.h>
int main()
{
    int a, n;
    scanf("%d",&a);
    printf("整数值:");
    for(n=0;n<=a;n++)
    {
        if(n==1)
        {
            printf("%d",n);
        }
        else if(n%2==1)
        {
            printf(" %d",n);
        }
    }
    return 0;
}

这组代码的好处是在n=1的时候就处理好空格的问题了。

我看了答案之后,认为也要有属于自己的答案与想法,所以我想出了另一种思路,把处理空格的问题留到最后解决,所以我的答案相对复杂,但也是用了分类讨论思想。

我的答案:

#include <stdio.h>
#include <math.h>
int main (void)
{
	int m,i,x;
	scanf("%d",&m);
	printf("整数值:");
	for(i=0;i<=m;i++)
	{
		if(i%2 != 0 && i!=m && i != m-1)
		{
			printf("%d ",i);
		}
		//先判断M的奇偶性 
		else if(i%2 != 0 && i ==m)//奇数 
		{
		    printf("%d",m);
		}
		else if(i%2 == 0 && i==m)//偶数 
		{
			x = m-1;
			printf("%d",x);
		}
	}
	return 0;
}
//总结,这道题的关键是输入的这个整数m,对输出后面的空格进行处理,
//比如15后面有空格是错误的,关键在于怎么处理后面这个空格
//我用了分类讨论思想

我是对输入的这个整数m进行处理的,当其为奇数时候怎么处理,当其为偶数时怎么处理这两种情况。

首先,我用了for循环语句,把i=m-1就结束

再用if语句对m进行分类讨论,如果m是奇数,直接%d,后面是没有空格的!

如果m是偶数,则m不会被打印出来,这时候就要打印m前面的那个数,即m-1

这就是为什么for循环到m-1就结束,而不是到m结束的原因,因为我要对m进行分类讨论!

总结:

①整道题核心在于打印时 对数字后面空格的处理

②用到分类讨论的思想

欢迎评论、关注和转发!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值