习题4-1 求奇数和 (15分)| C语言实现 | PTA 基础编程题目集

习题4-1 求奇数和 (15分)

本题要求计算给定的一系列正整数中奇数的和。

输入格式:
输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。
输出格式:
在一行中输出正整数序列中奇数的和。

输入样例:

8 7 4 3 70 5 6 101 -1

输出样例:

116

代码:

#include <stdio.h>

int main() {
    int num,count=0;
    while(num>0) {
        if(scanf("%d",&num)){};
        if(num%2==1) {
            count +=num;
        }
    }
    printf("%d",count);
    return 0;
}
挺简单的一个题目,这里本来想用for循环,想了下while会更加简洁。
一开始考虑的设置一个flag变量,用这个变量判断是否退出循环
或遇到负数或0跳出循环
但仔细一想其实完全可以直接用我们输入的数字进行判断
这样就节省了很多,不过pta会报错说你没有对num初始化
by the way其实随便初始化一个大于等于零的变量就可以但是感觉没有意义的
一、单项选择题 1、 C语言源程序文件经过C编译程序编译连接之后生成一个后缀为( C )的文件。  A).c B).obj C).exe D).bas 2、 )完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( B ) A)连接、编译 B)编译、连接 C)连接、运行 D)运行 3、 关于C语言的叙述中,不正确的是( D ) A)C程序可由一个或多个函数组成 B)C程序必须包含一个main()函数 C)C程序的基本组成单位是函数 D)注释说明只能位于一条语句的后面 4、 一个C程序的执行是从( C )。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序的main函数开始,到本程序文件的最后一个函数结束 D) 本程序文件的第一个函数开始,到本程序main函数结束 5、 以下正确的叙述是( C ) A) 在C语言中,main函数必须位于文件的开头 B) C语言每行中只能写一条语句 C) C语言本身没有输入、输出语句 D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误 6、 下列选项中,不能用作标识符的是( D )。 A) _1234_ B) _1_2 C) int_2_ D) 2_int_ 7、 常数的书写格式决定了常数的类型和值,0x1011是( C ) A)8进制整型常量 B)字符常量 C)16进制整型常数 D)2进制整型常数 8、 以下4组用户定义标识符中,全部合法的一组是( D ) A)_total clu_1 sum B)if -max turb C)txt REAL 3COM D)int k_2 _001 9、 ( B )是合法的用户自定义标识符。 A) b-b B)float C)123a D) _isw 10、 以下选项中不正确的整型常量是( )。  A) 12L B) -10 C) 1,900 D) 123U 11、 表达式( C )的值是0。 A)3%5 B)3/5)0 C)3/5 D)3<5 12、 设int x=3,y=4,z=5,则下列表达式中的值为0的是 ( ) A) ‘x’&&’y’ B) x||y+z&&y-z C) x<=y D) !((x0||y>0) 等价于( )。 A)!x>0||!y>0 B)!(x>0)||!(y>0) C)!x>0&&!y>0 D)!(x>0)&&!(y>0) 14、 若变量已正确定义并赋值,表达式( )不符合C语言语法。 A)4&&3 B)+a C)a=b=5 D)int(3)14) 15、 C语句”x*=y+2;”还可以写作( ) A) x=x*y+2; B) x=2+y*x; C) x=x*(y+2); D) x=y+2*x; 16、 下列格式符中,可以用于以8进制形式输出整数的是( ) A) %d B) %o C) %ld D) %x
### 回答1: 题目描述: 编写一个函数sum_odd(n),用于计算1到n之间所有奇数的和。其中,n是一个正整数。 函数接口定义: def sum_odd(n): 输入参数: n:一个正整数 输出参数: 返回1到n之间所有奇数的和 样例: 输入:n=10 输出:25 解释:1+3+5+7+9=25 解题思路: 本题需要编写一个求奇数和的函数,可以使用循环遍历1到n之间的所有奇数和,也可以使用数学公式计算。 具体实现方法如下: 方法一:使用循环遍历 1. 定义一个变量sum,用于存储奇数和的结果,初始值为。 2. 使用for循环遍历1到n之间的所有奇数,每次将奇数加到sum中。 3. 循环结束后,返回sum的值。 方法二:使用数学公式 1. 定义一个变量sum,用于存储奇数和的结果,初始值为。 2. 计算n/2的整数,得到m。 3. 使用公式sum = m * m,计算1到n之间所有奇数的和。 4. 如果n为奇数,则需要加上n本身,即sum = sum + n。 5. 返回sum的值。 代码实现: 方法一:使用循环遍历 def sum_odd(n): sum = for i in range(1, n+1, 2): sum += i return sum 方法二:使用数学公式 def sum_odd(n): sum = (n // 2) ** 2 if n % 2 == 1: sum += n return sum 注意事项: 1. 在使用循环遍历的方法中,需要注意循环的步长为2,以遍历所有奇数。 2. 在使用数学公式的方法中,需要注意整数除法的运算符//,以及幂运算的运算符**。 ### 回答2: 这道题目要我们使用函数来1到100中的奇数和。要解决这个问题,我们需要先把1到100中的奇数找出来,然后将这些奇数相加,最终输出结果。 先来看如何找出1到100中的奇数。我们可以使用for循环从1到100遍历每个数,然后判断其是否为奇数。如果是奇数,就将其加入一个列表odd_numbers中保存。 接下来,我们可以编写一个函数sum_odd_numbers来计算odd_numbers中所有元素的和。这里可以使用sum函数来计算列表元素之和。 最后,我们只需要调用sum_odd_numbers函数并输出其结果即可。完整代码如下: ``` def sum_odd_numbers(): odd_numbers = [] for i in range(1, 101): if i % 2 != 0: odd_numbers.append(i) return sum(odd_numbers) print(sum_odd_numbers()) ``` 运行程序,输出结果为2500,符合预期结果。 这道题目的解法虽然简单,但是通过这道题可以学到如何使用函数来模块化程序,使得代码更加易于维护和扩展。同时,我们还学会了如何使用for循环和if语句来快速找出满足特定条件的数值。 ### 回答3: 这道题的要是使用函数一个范围内所有奇数的和,具体实现可以按照如下步骤进行: 1. 定义一个函数,接收两个参数,别为范围的起始和结束值。 2. 在函数内部,通过一个循环遍历指定范围内的所有数,判断每个数是否为奇数,如果是,则将其累加到一个变量中。 3. 最后返回累加和即可。 具体代码实现如下: ```python def sum_odd(start, end): sum = 0 for i in range(start, end+1): if i % 2 == 1: sum += i return sum ``` 可以看到,这个函数的思路非常简单,只需要判断一个数是否为奇数,然后累加即可,因此它的时间复杂度为O(n),其中n为范围内所有数的个数。 使用这个函数解具体范围的奇数和也很简单,只需要调用函数,传入起始和结束值即可,例如: ```python print(sum_odd(1, 100)) # 输出 2500,1到100之间所有奇数的和 ``` 总之,这道题的主要思路就是使用一个循环遍历范围内的所有数,判断是否为奇数,并累加到一个变量中,最终返回累加和。使用这个思路可以解决更多类似的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值