PTA 7-206 根据奇偶输出整数各位数字
分数 4
作者 叶斌
单位 成都信息工程大学
本题要求编写程序实现:对输入的一个整数,如果是偶数从高位开始逐位分割并输出它的偶数位数字;如果是奇数则从高位开始逐位分割并输出它的奇数位数字。
整数的个位对应数位1,十位对应数位2,百位对应数位3…
输入格式:
输入在一行中给出一个整型范围内的正整数N (N>10)。
输出格式:
从高位开始隔位输出该整数的各位数字,每个数字后面有一个空格。要求,偶数只输出偶数位上数字,奇数只输出奇数位上数字
输入样例1:
123456
输出样例1:
1 3 5
输入样例2:
123457
输出样例1:
2 4 7
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <stdio.h>
int main(){
int count = 0; //数组下标p; 记录位数count
int integer, _integer, temp; //定义个整数
scanf("%d", &integer);
temp = _integer = integer;
for(int i = 1; ; i++){ //计算该整数的位数
if(_integer == 0)
break;
count++; //记录该数的位数
_integer /= 10;
}
_integer = temp;
int numb[count]; //定义数组储存每位数
for(int i = count - 1; i >= 0; i--){ //将该数的每位储存到数组中
_integer = temp;
_integer %= 10; //取最后一位
numb[i] = _integer;
temp /= 10; //缩小10倍
}
if(count % 2 == 0){ //个数为偶数时
if(integer % 2 == 0){ //该整数为偶数时
for(int i = 0; i < count; i += 2){
printf("%d ", numb[i]);
}
}else{ //该整数为奇数时
for(int i = 1; i < count; i += 2){
printf("%d ", numb[i]);
}
}
}else{ //个数为奇数时
if(integer % 2 == 0){ //该整数为偶数时
for(int i = 1; i < count; i += 2){
printf("%d ", numb[i]);
}
}else{ //该整数为奇数时
for(int i = 0; i < count; i += 2){
printf("%d ", numb[i]);
}
}
}
return 0;
}
解题思路:
step1:计算该整数的位数并定义数组储存每位数
step2:判断个数是偶数还是奇数
step3:判断该整数时奇数还是偶数
step4:根据条件输出即可
归属知识点:
选择结构