求n个正整数中的奇数和的代码,用Dev C++
在Dev C++中,你可以使用循环结构和条件判断来计算给定数组中所有正整数的奇数之和。下面是一个简单的示例代码:
#include <iostream>
int main() {
int n, sum = 0; // n表示数字个数,sum初始化为0用于累加奇数
std::cout << "请输入正整数的数量: ";
std::cin >> n;
int arr[n]; // 数组来存储输入的正整数
for (int i = 0; i < n; i++) {
std::cout << "请输入第" << (i + 1) << "个正整数: ";
std::cin >> arr[i];
// 判断是否为奇数并累加
if (arr[i] % 2 != 0) {
sum += arr[i];
}
}
std::cout << "这些正整数中的奇数和是: " << sum << std::endl;
return 0;
}
输入正整数n,然后求出1~n中的奇数之和。输出数据时不控制列宽。例如,输入 100 则应输出 2500 注意:语言选DEV C++。
#include <stdio.h>
int main() {
int n, sum = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
if (i % 2 == 1) {
sum += i;
}
}
printf("%d", sum);
return 0;
}
线性表的应用算法:构造一个递增有序的正整数链表,实现链表分解为一个奇数表和一个偶数表,之后再将两个链表合并一个递减链表。用单链表写,在devc++中运行,对该代码进行详细描写
线性表是一种常见的数据结构,常用于存储一系列元素。在实现这个特定的问题中,我们需要创建一个递增有序的正整数链表,并将其分为奇数表和偶数表,然后合并这两个表形成一个递减的链表。
首先,我们可以创建一个Node
结构体,包含一个整数值和指向下一个节点的指针:
struct Node {
int value;
Node* next;
};
接下来,我们需要三个函数:初始化链表、分解链表和合并链表。
链表初始化:
- 创建一个空链表作为输入列表的头节点。
Node* createLinkedList(int arr[], int n) { Node* head = new Node(); Node* current = head; for (int i = 0; i < n; ++i) { Node* newNode = new Node{arr[i], nullptr}; current->next = newNode; current = newNode; } return head; }
- 创建一个空链表作为输入列表的头节点。
链表分解:
遍历链表,根据节点值的奇偶性将其添加到相应的表中。 ```cpp void splitList(Node* head, Node** oddHead, Node** evenHead) { Node* oddCurrent = oddHead ? oddHead : nullptr; Node evenCurrent = evenHead ? *evenHead : nullptr;
while (head != nullptr) { if (head->value % 2 == 1) { oddCurrent->next = head; oddCurrent = oddCurrent->next; } else { evenCurrent->next = head; evenCurrent = evenCurrent->next; } head = head->next; } *oddHead = oddCurrent; *evenHead = evenCurrent;
}
链表合并:
将两个链表合并成一个递减链表,可以先比较奇数表和偶数表的头节点,将较小的节点插入新链表,然后更新头节点。 ```cpp Node* mergeLists(Node* odd, Node* even) { if (odd == nullptr) return even; if (even == nullptr) return odd;
if (odd->value > even->value) { odd->next = mergeLists(odd->next, even); return odd; } else { even->next = mergeLists(odd, even->next); return even; }
} ```
最后,你可以编写主函数,调用这些函数并显示结果:
int main() {
// 初始化数组并创建链表
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int n = sizeof(arr) / sizeof(arr[0]);
Node* inputList = createLinkedList(arr, n);
// 分解链表
Node* oddList, *evenList;
splitList(inputList, &oddList, &evenList);
// 合并链表并打印结果
Node* result = mergeLists(oddList, evenList);
while (result != nullptr) {
std::cout << result->value << " ";
result = result->next;
}
delete inputList;
// 删除其他节点...
return 0;
}
注意,由于main()
部分涉及到链表操作,删除节点的部分未在此给出,因为完整的删除操作需要遍历整个链表。在实际应用中,这部分也需要处理好。运行这个程序,你应该能看到一个从大到小的递减链表,偶数列在前,奇数列在后。
相关推荐

















