输入一个小数,输出该小数的最后一位数字及它是小数位的第几位。
比如输入3.2,则输出2,1;
输入65.2345,则输出5,4;
输入-9.02147,则输出7,5。
请问用C语言编程怎么实现?
可以以字符串的形式将小数存储起来,然后输出,源代码如下,不知道能不能解决你的问题:
#include <stdio.h>
#include <malloc.h>
void main()
{
char *a;//用以存储输入的小数
char ch;
int i=0;
int j=0;
a=(char*)malloc(sizeof(char));
printf("请输入一个小数,以回车换行结尾:\n");
while ((ch=getchar())!='\n')//将小数存储起来,可以用a寻址
{
a[i]=(char)malloc(sizeof(char));
a[i++]=ch;
}
a[i]='\0';//小数结束标志
i=0;
while (a[i++]!='.')
{
if(a[i]=='\0')
{
printf("输入为非小数\n");
getchar();
return;
}
continue;//可以不要这条语句
}
while (a[i++]!='\0')//统计共有多少位小数
{
j++;
}
printf("小数最后一位数字为:%d\t共有小数[%d]位\n",a[i-2]-'0',j);//其实可以%c与a[i-2]对应的
getchar();
}
#include <stdio.h>
#include <malloc.h>
void main()
{
char *a;//用以存储输入的小数
char ch;
int i=0;
int j=0;
a=(char*)malloc(sizeof(char));
printf("请输入一个小数,以回车换行结尾:\n");
while ((ch=getchar())!='\n')//将小数存储起来,可以用a寻址
{
a[i]=(char)malloc(sizeof(char));
a[i++]=ch;
}
a[i]='\0';//小数结束标志
i=0;
while (a[i++]!='.')
{
if(a[i]=='\0')
{
printf("输入为非小数\n");
getchar();
return;
}
continue;//可以不要这条语句
}
while (a[i++]!='\0')//统计共有多少位小数
{
j++;
}
printf("小数最后一位数字为:%d\t共有小数[%d]位\n",a[i-2]-'0',j);//其实可以%c与a[i-2]对应的
getchar();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2011-07-01
下面的程序是可以做到题目要求的。直接输入为字符串,再对字符串进行操作,基本上用指针。
#include <stdio.h>
void main()
{
char a[100],*p,*q;
scanf("%s",&a);
for(p=q=&a[0];*p&&*p!='.';p++,q++);
for(;*(p+1);p++);
printf("%s : %s, %d\n",a,(char*)p,p-q);
}
#include <stdio.h>
void main()
{
char a[100],*p,*q;
scanf("%s",&a);
for(p=q=&a[0];*p&&*p!='.';p++,q++);
for(;*(p+1);p++);
printf("%s : %s, %d\n",a,(char*)p,p-q);
}
第2个回答 2011-07-01
好像有问题,想想