MOOC北京理工《C语言程序设计(上)》第5周第2题:寻找特殊偶数

题目内容:

有一种特殊偶数,它每一位上的数字都两两不相同。我们现在需要找出四位数中某一区间内的这类偶数。

输入格式:

所要寻找的四位偶数的范围。每组输入有两个数字:第一个数字是最小范围;第二个数字是最大范围。如果输入遇到0,输入结束。

输出格式:

列出此范围内的所有特殊偶数,并且列出此范围内特殊偶数的个数。

输入样例:

3000  3020
6040  6090
0 0

输出样例:

3012  3014  3016  3018  
counter=4
6042  6048  6052  6054  6058  6072  6074  6078  6082  6084  
counter=10
输入样例:

9  101
87 -1
0 0

输出样例:

Error
Error
#include<stdio.h> 
int main()
{ 
    int i, j, k, a, b, c, d, m=0, e; 
    for( e = 0 ; e >= 0 ; e++) 
    {
        scanf("%d%d",&i,&j);  
        if( i == 0 || j == 0 )  break;  
        else 
        if( ( i > 9999 || i < 1000 ) || ( j > 9999 || j < 1000 ) ) 
            printf("Error\n"); 
        else
        {
            for( k = i ; k <= j ; k++) 
            {
                if ( k % 2 == 1) continue; 
                a = k / 1000;
                b = ( k % 1000 ) / 100;
                c = ( k % 100 ) / 10;
                d = k % 10;   
                if( a == b || a == c || a == d || b == c || b == d || c == d ) continue; 
                printf("%d  ",k);
                m += 1;
            }  
            printf("\ncounter=%d\n",m);
            m=0;
        }
    }
    return 0;
}
  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 这是一个编程类的问,可以回答。可以用以下 C++ 代码实现: struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; void printOdd(ListNode *head) { while (head) { if (head->val % 2 == 1) { cout << head->val << " "; } head = head->next; } } void printEven(ListNode *head) { while (head) { if (head->val % 2 == 0) { cout << head->val << " "; } head = head->next; } } 其中,ListNode 是链表的结构体,printOdd() 函数可以输出链表中的奇数,printEven() 函数可以输出链表中的偶数。 ### 回答2: 寻找单链表中的奇数并将奇数输出的方法如下: 1. 遍历单链表中的每个节点。 2. 对于每个节点,检查节点的值是否为奇数。 3. 如果节点的值是奇数,将其输出。 寻找单链表中的偶数并将偶数输出的方法如下: 1. 遍历单链表中的每个节点。 2. 对于每个节点,检查节点的值是否为偶数。 3. 如果节点的值是偶数,将其输出。 例子说明: 假设我们有一个单链表,包含以下节点: 1 -> 2 -> 3 -> 4 -> 5 通过上述方法,我们可以找到并输出单链表中的奇数: 1 -> 3 -> 5 也可以找到并输出单链表中的偶数: 2 -> 4 ### 回答3: 要解决这个问,我们需要遍历单链表中的每个节点。首先,我们可以创建两个新的单链表,一个用来存储奇数,另一个用来存储偶数。然后,我们遍历单链表的每个节点,判断该节点的值是奇数还是偶数。如果是奇数,则将该节点添加到奇数链表中;如果是偶数,则将该节点添加到偶数链表中。 下面是一个示例代码实现: ```python class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def find_odd_even(head): odd_list = ListNode() # 奇数链表的头节点 even_list = ListNode() # 偶数链表的头节点 odd_ptr = odd_list even_ptr = even_list node = head while node: if node.val % 2 == 0: # 判断节点值的奇偶性 even_ptr.next = node even_ptr = even_ptr.next else: odd_ptr.next = node odd_ptr = odd_ptr.next node = node.next even_ptr.next = None # 断开偶数链表的最后一个节点的连接 odd_ptr.next = even_list.next # 将偶数链表连接到奇数链表的后面 return odd_list.next # 返回奇数链表的头节点 # 创建一个示例链表 1->2->3->4->5->None head = ListNode(1) head.next = ListNode(2) head.next.next = ListNode(3) head.next.next.next = ListNode(4) head.next.next.next.next = ListNode(5) result = find_odd_even(head) while result: print(result.val) # 输出奇数链表的值 result = result.next ``` 以上代码输出的结果将是 `1 3 5`,即将奇数输出。 如果要输出偶数,只需修改一行代码即可,将 `if node.val % 2 == 0` 中的等号改为不等号即可,即 `if node.val % 2 != 0`。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值