
以下是实现该功能的代码:
c
include
int main() {
int num, temp, result = 0, factor = 1; // factor用于存放当前位置的权重,例如对于数ABC,A的权重为1,B的权重为10,C的权重为100
printf(“请输入一个不超过五位的十进制整数:”);
scanf(“%d”, &num); // 输入一个整数
temp = num; // 保存原始数字,用于后续检查输入的数字是否超过五位
while (temp != 0) { // 通过循环获取每一个位的数字并判断是否奇数
if (temp % 10 % 2 == 1) { // 如果当前位的数字是奇数
result += (temp % 10) factor; // 把该位数字加到结果中,并且按照对应的权重(即该位所处的位置值)添加到结果中
}
temp /= 10; // 移动到下一位数字
factor = 10; // 更新权重值,用于下一轮判断下一位置的数字是否在结果现过(避免重复)
}
printf(“新的数(包含所有奇数数字并按照原顺序排列)是:%d”, result); // 输出结果
return 0;
1. 有一个已排序的数组,需要插入一个新的数并维持排序。
include
int main() {
int i, j, s, array[10] = {1, 2, 4, 9, 32, 41, 64, 88, 91, 98};
scanf(“%d”, &s);
for (i = 0; i
if (s > array[i]) { // 如果新数大于当前位置的元素,将元素向右移动一个位置为新的数腾出空间
for (j = 9; j > i; j–) { // 从数组最后一个元素开始向左移动元素到前一个位置,为插入新数做准备
array[j] = array[j – 1];
}
array[i] = s; // 在正确的位置插入新数
break; // 找到合适的位置后跳出循环
}
}
// 如果整个数组都遍历完了还没找到合适的位置,那么将新数插入到数组的末尾(数组已经是升序排列的)
if (i == 9) {
array[10] = s; // 在数组末尾添加新数(注意数组索引的变化)
}
// 输出排序后的数组
for (i = 0; i
