怎么样可以在C语言中实现下列要求
发布网友
发布时间:2022-08-24 21:03
我来回答
共4个回答
热心网友
时间:2024-11-23 03:36
#include<stdio.h>
#include<string.h>
void main()
{
char chToNum[51],*pCh=chToNum,Nodigital='\0';
//Nodigital如果一个数字字符都没有输入,它就为'\0'。为'\0'就表示没有数字
//Nodigital为'y'或其他ASCII不为0的字符都表示,输入了一个或多个数字
double dnum=0.0;
gets(chToNum);
for ( ; *pCh; pCh++)
if (*pCh>=48 && *pCh<=57)//0到9的ASCII48~57,,或者*pCh>='0' && *pCh<='9'
{
dnum*=10; //让dnum所有位向左移动一个位置,右边补零。
dnum+=(double)(*pCh-48); //0的ASCII为48。字符'4'-48=52-48=4,其他同理。
Nodigital='y';
}
if (Nodigital) //本来直接写的if ((int)dnum),但是如果dnum为0.0,那么就有漏洞了。
printf("%.4f\n",dnum);
else
printf("the digital string is empty!\n");
}
//VC++6.0已运行通过。
/*
如果不熟悉指针,那么for ()........这一段可以替换为
当然,要在double dnum=0.0下一行,声明int i;上面没有这个声明。
for (i=0 ; chToNum[i];i++)
if (chToNum[i]>=48 && chToNum[i]<=57)//
{
dnum*=10; //让dnum所有位向左移动一个位置,右边补零。
dnum+=(double)(chToNum[i]-48);
Nodigital='y';
}
*/
热心网友
时间:2024-11-23 03:37
是将'1'转成1.0输出
还是 将'1'转换成49.0输出?
如果是第一种 就:
#include<stdio.h>
int main()
{
char str1[51],str2[51];
int i,n;
double a;
printf("请输入长度不超过50的字符串:\n");
gets(str1);
for(i=0,n=0;str1[i]!=0;i++)
{
if(48<=str[i]&&str[i]<=57)
{
str2[n]=str1[i];
n=n+1;
}
}
if(n==0)
printf("the digital string is empty!\n");
else
for(i=0;i<=n;i++)
printf("%.4f\n",((double)(str2[i]-48)));
return 0;
}
如果是第二种 就:
#include<stdio.h>
int main()
{
char str1[51],str2[51];
int i,n;
printf("请输入长度不超过50的字符串:\n");
gets(str1);
for(i=0,n=0;str1[i]!=0;i++)
{
if(48<=str[i]&&str[i]<=57)
{
str2[n]=str1[i];
n=n+1;
}
}
if(n==0)
printf("the digital string is empty!\n");
else
for(i=0;i<=n;i++)
printf("%.4f\n",(double)str2[i]);
return 0;
}
我没调试 也不知道行不行 = =追问最后他给结果应该是只输出一个双浮点型数值,不管是有多少个数字一律作为该数值中的一位,输出。比如输入“!1 @2 #3 $4”,最后输出“1234.0000” 请问如何实现?
追答#include
#include
int main()
{
char str1[51],str2[51];
int i,n;
long double sum
printf("请输入长度不超过50的字符串:\n");
gets(str1);
for(i=0,n=0;str1[i]!=0;i++)
{
if(48<=str[i]&&str[i]<=57)
{
str2[n]=str1[i];
n=n+1;
}
}
if(n==0)
printf("the digital string is empty!\n");
else
{
long double a[n];
for(i=0;i<n;i++)
a[i]=str2[i]*pow(10,(n-i-1));
for(i=0;i<n;i++)
sum+=a[i];
printf("%lf",sum);
}
return 0;
}
其实long double有效数字为19……所以如果你输入50位数字的话……= =||||
同样是没调试的……不知道行不行……
热心网友
时间:2024-11-23 03:37
#include <stdio.h>
#include <ctype.h>
void main()
{
char c;
int i=0;
double n=0;
while(c!='\n')
{
c=getchar();
if(isdigit(c))//判断是否是数字字符
n=n*10+c-'0';
}
if(!i)
printf("the digital string is empty!\n");
else
printf("%.4lf\n",n);
}
热心网友
时间:2024-11-23 03:38
shenmehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa