C语言新手问题,我实在不会了

来源:百度知道 编辑:UC知道 时间:2024/06/10 08:31:34
最近自学C语言,练习题目时候,有这样一道题:编写一个程序,将用科学计数法输入的一个数串(全部由数字或小数点字符组成的字符串)转换成对应的实数.

编程要求:用字符数组存放用户输入的数串.

我是这样写的.但是有错误

#include <stdio.h>
#include <math.h>
void main()
{
char str[100];
float total,first,s,fdsa;
int i,n=0,ws,ew,m;
printf ("请用科学计数法输入一个数串,回车结束(用E表示)");
for(i=0;i<100;i++,n++) //让用户输入字符串,存放在字符数组中
{
scanf ("%c",&str[n]);
if str[n]=='69'; //判断E出现的位置
ew=n;
if str[n]=='\r'; //判断回车,一出现就退出循环.
ws=n-1;
break;
}
for (i=2,m=1;i<ew;i++,m++) //我想用循环先写出用户输入的字符串(E前面的)
{
s=str[i]/pow(10,m); //这是从第三位开始转换为小数,然后再加第一位,就是用户输入的了
fdsa=fdsa+s;
}
first=str[0]+fdsa;

if (str[ew+1]='45') //然后再判断E后面一位是不是"-",如果是就除,不是就乘.
total=first/pow(10,(ws-ew));
else
total=first

#include <stdio.h>
#include <math.h>
void main()
{
char str[100];
float total,first,s,fdsa;
int i,n=0,ws,ew,m;
printf ("请用科学计数法输入一个数串,回车结束(用E表示)");
for(i=0;i<100;i++,n++) //让用户输入字符串,存放在字符数组中
{
scanf ("%c",&str[n]);
if (str[n]=='69') //判断E出现的位置 对比这一行
ew=n;
if (str[n]=='\r') //判断回车,一出现就退出循环. 这行也是
ws=n-1;
break;
}
for (i=2,m=1;i<ew;i++,m++) //我想用循环先写出用户输入的字符串(E前面的)
{
s=str[i]/pow(10,m); //这是从第三位开始转换为小数,然后再加第一位,就是用户输入的了
fdsa=fdsa+s;
}
first=str[0]+fdsa;

if (str[ew+1]='45') //然后再判断E后面一位是不是"-",如果是就除,不是就乘.
total=first/pow(10,(ws-ew));
else
total=first*pow(10,(ws-ew));
printf ("整理结果为:%f",total);
}

其它没有什么问题了,为什么你"if str[n]=='69';"呢?这样if(条件)才对,
if (str[n]=='69');(看这个分号)代表表结束了,但永远执行ew=n;