我是新手 问下循环语句的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 02:41:39
因为只学习了IF和SWITCH两个语句
题目是:输入一个65000以下的正整数
1.判断他是几位数
2.顺序写出他的每一位的数字
3.逆序写出他每一位的数字
谢谢
我自己写了一个 但是运行结果不正确 请指教一下 谢谢大家了

#include <stdio.h>
void main()
{
int a,b,c1,c2,c3,c4;
printf("请输入一个数:");
scanf("%d",&a);
printf("输入的数为%d\n",a);
if(a>=0&&a<=9)
{
b=1;

}
if(a>=10&&a<=99)
{
b=2;

}
if(a>=100&&a<=999)
{
b=3;

}
if(a>=1000&&a<=9999)
{
b=4;

}
if(a>=100000&&a<=65000)
{
b=5;

}
if(a<=0||a>65000)
{
printf("不合法");
}
switch(b)
{
case 1:printf("一位数\n");break;
case 2:printf("两位数\n");break;
case 3:printf("三位数\n");break;
case 4:printf("四位数\n");break;
case 5:printf(&

如果你是新手的话,希望我的代码不会对你的理解有影响
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int num;
scanf("%d",&num);
int i=0;
while(num/(int)pow(10,i++)>=10); //i就是位数了
printf("%d位数\n",i);
int tempnum=num,j=i;
int* pa=(int*)malloc(i*sizeof(int));
//正向输出
while(j){printf("%d,",*(pa+j-1)=(int)(tempnum/pow(10,j-1)));tempnum=tempnum-(int)pow(10,j-1)*(int)(tempnum/pow(10,j-1));j--;}
printf("\n");
//反向输出
while(printf("%d,",*(pa+(j++)))&&i-->1);
free(pa);
return 0;
}

下面的取余不太正确, 我是菜鸟,现在网吧,不能编译,不能发现问题,回家解答后再回答。

#include <stdio.h>
void main()
{
int a[5];
unsigned int ipt; // int的取值范围只能是-32768~32767 用 unsigned 是 65536
scanf('请输入一个65000以内的数字:%d', &ipt);
printf('您输入的数字是: %d\n', ipt);

int i = 0;

// 用循环来