一道C语言编程题,求大神们帮帮忙,谢谢了。。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一道C语言编程题,求大神们帮帮忙,谢谢了。。相关的知识,希望对你有一定的参考价值。

编程实现:输入一个不多于5位的正整数,要求:(1)输出它是几位数,(2)分别输出每一位数字,(3)按逆序输出各位数字,如原数为321,则应输出123。

应准备以下测试数据

要处理的数为1位正整数;

要处理的数为2位正整数;

要处理的数为3位正整数;

要处理的数为4位正整数;

要处理的数为5位正整数;
除此之外,程序还应当对不合法的输出作必要的处理。例如:输入负数。

参考技术A #include<stdlib.h>
#include<stdio.h>
int main()

int num;
int a;
scanf("%d",&num);
if(num<0)

printf("非法输入!");

else if(num/10==0)

printf("该数字为一位数!\n");a=1;

else if(num/100==0)

printf("该数字为二位数!\n"); a=2;

else if(num/1000==0)

printf("该数字为三位数!\n"); a=3;

else if(num/10000==0)

printf("该数字为四位数!\n"); a=4;

else

printf("该数字为五位数!\n");a=5;

switch(a)

case 1:printf("正序为:%d\n",num);
printf("逆序为:%d\n",num);
break;
case 2:printf("正序为:%d\n",num);
printf("逆序为:%d%d\n",num%10,num/10);
break;
case 3:printf("正序为:%d\n",num);
printf("逆序为:%d%d%d\n",num%10,num%100/10,num/100);
break;
case 4:printf("正序为:%d\n",num);
printf("逆序为:%d%d%d%d\n",num%10,num%100/10,num%1000/100,num/1000);
break;
case 5:printf("正序为:%d\n",num);
printf("逆序为:%d%d%d%d%d\n",num%10,num%100/10,num%1000/100,num%10000/1000,num/10000);
break;



我用笨方法写的,没用字符串什么的,你可以看看本回答被提问者采纳
参考技术B #include<stdio.h>
#include <string.h>
int main()

int i,j,k,n=-1,x;
int num[100];
while(n<=0)

scanf("%d",&n);
if(n<=0)
printf("非法输入\n");

k=0;
for(;n;n/=10)
num[k++]=n%10;

printf("your number have %d digit\n",k);

for(i=0; i<k ; i++) //
printf("%d\t",num[i]);
printf("\n");

j=k-1;
for(i=0; i<j; i++,j--)

x=num[i];
num[i]=num[j];
num[j]=x;


for(i=0; i<k ; i++) //
printf("%d\t",num[i]);
printf("\n");
return 0;


刚才忘加判断了..
好孩子要自己写作业啊 - -
参考技术C # include <stdio.h>
# include <string.h>

int main(void)

    char ui[5] = 0;
    int i;
    
    for(i=0; i<5; i++)
    
        ui[i] = getchar();
        if (ui[i] == '\\n')
            break;
        while(ui[i]<'0'||ui[i]>'9')
        
            puts("请输入一个正整数!请重新输入:");
            ui[i] = getchar();
        
    
    ui[i] = 0;
    printf("你输入的是一个%d位数\\n", strlen(ui));
    printf("你输入的数的每位数分别为:");
    for(i=0; ui[i]!=0; i++)
    
        putchar(ui[i]);
        putchar('\\t');
    
    putchar('\\n');
    for(i=4; ui[i]!=0; i--)
    
        putchar(ui[i]);
    
    putchar('\\n');
    

    return 0;

参考技术D #include <stdio.h>
main()

int a,i,t[5],n;;
while(1)


printf("\npls input number");
scanf("%d",&a);
if(a==111111)break;

for(i=0;i<5;i++)

t[i]=a%10;
a=a/10;

if(a==0)

n=i+1;
printf("n=%d\n",n);
break;


for(i=0;i<n;i++)

printf("%d ",t[i]);


我是C语言新手。求大神解释一下这一道题,书里没解析的额

有一程序:
#include<stdio.h>
main()
struct cmplxint x;int y;cnum[2]=1,3,2,7;
printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);

运行结果是6。
求解析!!

首先main函数里定义个结构体类型 struct cmplx该结构体包含两个成员变量x和y。
cnum是结构体类型的数组,数组中有2个数组元素cnum[0]和cnum[1],每个数组元素都是结构体类型的变量。所以
cnum[0].x=1,cnum[0].y=3;
cnum[1].x=2,cnum[1].y=7;
则cnum[0].y/cnum[0].x*cnum[1].x的值是3/1*2=6追问

哦!原来如此,我还在纳闷怎么一个只有两个元素的数组有四个元素呢

参考技术A struct cmplx

    int x;
    int y;
cnum[2]=1,3,2,7;   //定义一个结构体,并同时定义一个该结构体类型的数组cnum, 初始化为:cnum[0].x=1   cnum[0].y=3   cnum[1].x=2   cnum[1].y=7

追问

简单明了

参考技术B 3/1*2=6
cnum[0].x=1
cnum[0].y=3
cnum[1].x=2
参考技术C 谁这么无聊写的这么烂的程序先将p指针使用一个for循环指向字符串末尾然后又将字符从末尾往前打印出来所以这个东西就是说反向打印字符串追问

你走错地方了吧......

以上是关于一道C语言编程题,求大神们帮帮忙,谢谢了。。的主要内容,如果未能解决你的问题,请参考以下文章

c语言编程题 利用指针编写函数用选择法对整数数组排序(降序)。 求大神帮忙啊!!!谢谢

C语言程序编程题,求大神帮帮忙

我是C语言新手。求大神解释一下这一道题,书里没解析的额

c语言啊,求大神您解答

帮忙做一道C语言小题,求2到100的素数,素数是指,只能被一和整除,望给出解释,用for语句做出,

用C语言写出一道关于随机数的编程题