统计n个数中各位上的数字均是奇数的数的个数用C语言怎样实现??

//这样可以吗
#include
#define N 50
int judge(int num);
void sort(int num[] ,int n);
void main()
{
int num[N];
int num1[N];//存储符合条件的整数
int i,n=0;
int count = 0;
//进行输入
for(i = 0 ;i {
printf("输入第%d个数:",i+1);
scanf("%d",&num[i]);
if(num[i] ==-1)
{
break;
}
n++;
}
//查找有多少个符合条件的整数
for(i = 0 ;i {
if(judge(num[i]))
{
num1[count] = num[i];
count++;
}
}
//排序
sort(num1,count);
//打印
printf("%d个数中各位上的数字均为奇数的数为:\n",n);
for(i=0;i {
printf("%d ",num1[i]);
}
printf("\n个数为:%d\n",count);
}
//判断是否为全为奇数
int judge(int num)
{
int temp;
while(num >10)
{
temp = num%10;
if((temp%2) ==0)
{
return 0;
}
num /= 10;
}
return 1;
}

//选择排序
void sort(int num[],int n)
{
int i,j,t,temp;
for(i=0;i {
t=i;
for(j=i+1;j {
if(num[t]>num[j])
t=j;
}
if(t!=i)
{
temp = num[t];
num[t] = num[i];
num[i] = temp;
}
}
}
分析:由于数字的长度不好判断,建议转成字符数组后再进行处理。
程序:
/*判断数字是否各位均是奇数*/
bool isAllOdd(int n)
{
int i;
bool isOdd = true;
char s[10]; //最大10位数,可扩展
sprintf(s, "%d", n); //将n转为字符数组
for (i=0; i if ((s[i]-'0')%2==0) {isOdd=false; break;} 通过-'0'转为原数字,如果是偶数跳出
return isOdd;
}
/*main*/
int main()
{
int i,n=0;
for (i=1; i<9999; i++)
{
if (isAllOdd(i)) {
printf("%d ", i); n++;
if (n%10==0) printf("\n");//每十个换行
}
}
int arr[];
main()
{
int count = 0;
for(int i=0;i{
if(CheckNumber(arr[i]))count ++;
}
printf("%d", count);
}

bool CheckNumber(int number)
{
while(number !=0)
{
int tmp = number%10;
if(tmp % 2 == 0)return false;
number = number / 10;
}
}