输入一批正整数,求其中所有奇数的和。要求定义和调用函数判断函数的奇偶性,当n为偶数返回1,否则返回0

这个程序有啥问题,为什么输进去之后没有反应了,是进不了循环还是出不了循环啊
使用函数求奇数和:输入一批正整数(以零或负数为结束标志),求其中的奇数和。要求定义和调用函数even(n)判读数的奇偶性,当n为偶数时返回1,否则返回0.

img

在while循环内,还要添加scanf语句啊。否则只是在while开始前接收了一个整数而已,然后whlie(1)就死循环了
在while循环内最后一行加上scanf("%d",&n);

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7441561
  • 除此之外, 这篇博客: 《手撕力扣链表题》反转链表、删除链表的倒数第 N 个结点中的 🌻快慢指针法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    刚才我们看到了,因为题目要求删除的是倒数第n个结点,所以上面的方法都是先要求出链表的长度,再通过长度求出要删除结点的下标,那我们能不能再不求出链表长度的情况下成功删除该结点呢?

    💖我们其实想象一下我们的链表其实是分为两个部分的:倒数第n个结点前面是一部分,倒数第n个结点后面又是一部分。而双指针法正是利用了这个特性来做的

    📝你看,如果我们fast和slow这两个结点引用变量一开始都分别指向我们的虚拟头结点,如果fast先移n个结点,那么是不是此时fast到链表结尾的距离就是我们从虚拟头结点到倒数第n个结点的距离了。

    📝那么我们就可以先让fast先移动n步,然后fast和slow再同时开始移动,直到fast指向了链表的结尾,此时slow不就指向了我们要删除的那个结点了吗?

    🔔 但要注意的是我们删除结点一般都是要找到该结点的前一个结点,所以我们的fast先要移动n+1步,以便之后让我们的slow指向要删除结点的前一个结点。

     public ListNode removeNthFromEnd(ListNode head, int n) {
            ListNode dummyHead = new ListNode(0, head); // 定义一个虚拟头结点,并将它指向头结点,这样删除头结点时就不用再专门考虑了
            ListNode fast = dummyHead, slow = dummyHead; // 定义两个快慢指针,分别指向该虚拟头节点
            for(int i = 0; i < n + 1; ++i) { // fast先移动n+1步
                fast = fast.next;
            }
            while (fast != null) { 
                slow = slow.next;
                fast = fast.next;
            }
            // 此时slow指向要删除的结点的前一个结点
            slow.next = slow.next.next;
            return dummyHead.next; // 返回头结点
        }

    小伙伴们,都看到这里了,是不是已经迫不及待的想刷题了,一起冲呀!!! 

     

  • 以下回答来自chatgpt:
    1. 为了编写程序求一批正整数中所有奇数的和,需要了解输入格式、数据组织方式和预期输出。根据数据组织方式不同,输入方法也有所不同,可以采用手动输入、读取文件等方式,这里以手动输入为例。首先需要输入正整数的数量n,然后输入n个整数,将这n个整数依次放入一个列表中,然后遍历列表,将其中所有奇数相加,得到所有奇数的和。具体代码如下:
    n = int(input("请输入正整数的数量:"))
    nums = []
    sum = 0
    for i in range(n):
        x = int(input("请输入第%d个正整数:" % (i+1)))
        nums.append(x)
    for num in nums:
        if num % 2 == 1:
            sum += num
    print("所有奇数的和为:%d" % sum)
    
    1. 函数没有反应可能是因为程序没有传递正确的参数,或者是函数定义中有问题。需要进一步了解程序运行的环境、函数的定义方式和输入数据的类型等。比如如果函数是通过命令行参数传递参数,那么需要检查命令行的格式是否正确;如果是通过GUI界面传参,需要检查界面相应控件的属性是否设置正确;如果函数是从其他模块导入的,需要检查导入的方式和目标函数的定义是否正确等等。如果不确定具体原因,可以尝试在函数中打印日志或调试,找出问题所在并解决它。

    2. 对于一个函数的定义和调用,程序需要输入函数的参数,并根据函数的返回值进行后续处理。具体来说,输入格式应当符合函数定义中的参数类型和数量要求,如果有默认值则可以不用输入该参数。函数的返回值可以是单个值、元组、字典或其他类型,需要按照函数定义的返回值类型进行处理。代码示例如下:

    def multiply(a, b=1):
        return a * b
    
    #调用函数
    result = multiply(3, 5) #result的值为15
    result2 = multiply(3) #result2的值为3
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^