我创建了一个程序,其中函数可以添加所有奇数位;但是,我想打印出所有奇数位,例如,sum_odd_digits(2139)返回1 + 3 + 9 = 13而sum_odd_digits(1024)返回1.
#include <iostream>
using namespace std;
int sum_odd_digits(unsigned int i){
unsigned int a =0;
while ((i !=0)&&(i%2 !=0)){
a +=i%10;
i/=10;
}
cout << a;
}
int main(){
sum_odd_digits(2139);
}
任何人都可以给我一些打印奇数位的提示吗? 谢谢你的帮助
答案 0 :(得分:1)
就是这样:
int sum_odd_digits(unsigned int i){
unsigned int a = 0;
while (i != 0){
if ( i % 2 == 1 )
cout << i % 10 << ' ';
a += i % 10;
i /= 10;
}
return a;
}
查看所有数字,如果数字是奇数则打印出来。它返回数字总和。
答案 1 :(得分:1)
你走在正确的轨道上。以下示例分隔数字的数字,如果它们是奇数,则打印它们。
代码清单
#include<stdio.h>
int main(){
int num,temp,factor=1;
printf("Enter a number: ");
scanf("%d",&num);
temp=num;
while(temp){
temp=temp/10;
factor = factor*10;
}
printf("The odd digits of the number are: ");
while(factor>1){
factor = factor/10;
switch (num/factor) {
case 1:
case 3:
case 5:
case 7:
case 9:
printf("%d ",num/factor);
break;
}
num = num % factor;
}
return 0;
}
答案 2 :(得分:1)
while ((i !=0)&&(i%2 !=0))
一旦条件为假,这将立即停止;当i
变为零时,或者当值为偶数时。但是,当您找到第一个偶数值时,您不想停止,您希望继续测试数字,并且仅在i
变为零时停止。所以这个结构应该是
while (i != 0) {
if (i % 2 != 0) {
// final digit is odd
a += i%10;
}
i/=10;
}
如果您愿意,可以将最后一行压缩到for
循环中
for (; i != 0; i /= 10)