【测试面试题】偶数和奇数

测试面试题

此模块致力于我遇到过的面试题,希望可以给大家带来帮助!!!

偶数和奇数

编写程序,使其满足:

  • 使用键盘输入一个正数。确定输入数字中的偶数和奇数的数量。
  • 如果一个数字可被 2 整除而没有余数(即,余数为零),则该数为偶数。
  • 然后,我们将偶数计数器(static 变量 even)加 1。
  • 否则,该数为奇数,我们将增加奇数计数器(static 变量 odd)。
  • 显示以下消息:“偶数:a 奇数:b”,其中 a 为偶数的数量,b 为奇数的数量。

例如,对于 4445:
偶数:3 奇数:1

Python

class Solution:
    def __init__(self):
        self.even = 0		# 偶数
        self.odd = 0		# 奇数

    def solution_main(self):
        # 从键盘获取数值
        n = str(input())
        # 将从键盘获取的数值分割成为单个数值的列表
        input_n = list(n)

        # 偶数 | 奇数 ?
        for i in input_n:
            if int(i) % 2 == 0:
                self.even += 1
            else:
                self.odd += 1
        print(f'偶数:{self.even} 奇数:{self.odd}')


if __name__ == '__main__':
    Solution = Solution()
    Solution.solution_main()

Java

package main;

import java.io.*;

public class Solution {

    public static int even;		// 偶数
    public static int odd;		// 奇数

    public static void main(String[] args) throws IOException {
        // 从键盘获取数值
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String input_n = reader.readLine();
        String[] arr;

        // 将从键盘获取的数值分割成为单个数值的列表
        arr = input_n.split("");
        // 偶数 | 奇数 ?
        for (String s : arr) {
            if (Integer.parseInt(s) % 2 == 0) {
                even++;
            } else {
                odd++;
            }
        }

        System.out.println("偶数:" + even + " " + "奇数:" + odd);
    }
}

GO

package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main() {
	// 从键盘输入数值
	var n string
	_, _ = fmt.Scanln(&n)
	even := 0		// 偶数
	odd := 0		// 奇数

	// 将数值进行分割
	arr := strings.Split(n, "")
	// 偶数 | 奇数 ?
	for i:=0; i< len(arr);i++ {
		nS, _ := strconv.Atoi(arr[i])
		if nS % 2 == 0 {
			even++
		} else {
			odd++
		}
	}
	fmt.Printf("偶数:%d 奇数:%d", even, odd)
}
<think>嗯,用户想要找C语言相关的测试开发面试题。我需要先理解他们的需求。测试开发通常涉及代码质量、测试用例设计、自动化测试工具等,所以面试题可能不仅考察C语言基础,还会涉及测试相关的知识点。 首先,用户提供的引用里有指针、字符串操作、函数指针、静态变量等内容。这些是C语言的核心概念,应该在回答中覆盖。比如指针算术、内存管理、函数指针的应用,这些对测试开发很重要,因为测试经常需要处理底层数据结构内存问题。 接下来,测试开发可能关注代码的健壮性边界条件。比如,用户提供的字符串逆序例子,测试时需要考虑空字符串、特殊字符等情况。可以生成相关问题,如如何设计测试用例来覆盖这些情况。 动态库静态变量的引用也很相关。测试开发中可能需要编写或测试动态库的代码,了解函数指针静态变量的行为有助于设计有效的测试策略。例如,静态变量在多次函数调用中的状态保持,可能导致测试中的意外行为,需要特别注意。 用户可能需要的问题类型包括基本概念、代码分析、测试用例设计、调试技巧等。需要确保生成的题目涵盖这些方面,并且问题能够考察应聘者的实际应用能力,而不仅仅是理论知识。 还要注意回答的结构,按照用户的要求分点回答,每个问题有解析示例代码。同时,引用提供的资料来支持答案,比如引用[1]中的指针算术,引用[2]中的字符串逆序问题,引用[3]的动态库函数指针,引用[4]的静态变量。 最后,相关问题部分需要引导用户深入思考,比如指针数组的区别、内存泄漏检测方法、测试用例设计策略等。这些问题不仅帮助用户准备面试,也符合测试开发岗位的实际需求。</think>以下是为您整理的C语言测试开发方向重点面试题目及解析,涵盖代码质量、测试思维开发能力三个维度: ### 一、核心语法与内存管理 1. **指针算术应用场景** 指针加减运算基于数据类型大小自动偏移,常用于数组遍历内存操作: ```c int arr[5] = {10,20,30,40,50}; int *ptr = &arr[2]; printf("%d", *(ptr + 1)); // 输出40 ``` 典型应用包括:缓冲区处理、动态内存分配验证测试等[^1] 2. **静态变量陷阱** ```c void counter() { static int count = 0; count++; printf("%d", count); } // 连续调用输出1,2,3... ``` 需注意静态变量在多次测试用例中的状态残留问题[^4] ### 二、测试用例设计 3. **字符串逆序测试点** 针对引用[2]的逆序代码,应设计测试用例: - 空字符串 - 奇数/偶数长度字符串 - 含特殊字符`\0`的字符串 - 超长字符串(边界测试) 4. **函数指针测试策略** 对动态库函数指针的测试应包含: ```c typedef void (*callback)(int); void register_callback(callback cb) { // 注册回调 } ``` - 空指针传入测试 - 多次注册覆盖测试 - 异常参数传递测试[^3] ### 三、调试与质量保障 5. **内存泄漏检测** 使用valgrind工具检测: ```bash valgrind --leak-check=full ./program ``` 重点关注`malloc/calloc`与`free`的配对使用 6. **边界条件测试** 对数组操作代码需验证: - 索引越界访问 - 缓冲区溢出 - 除零操作 - 负数输入处理
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Warolitbos

如果有帮助,请我喝咖啡!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值