|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目是这样的:写一函数 float getfloat(char s[]);把字符串s中的字符串转换成float型值。如果s中的字符串是“-123.45”,则应返回-123.45。
- #include<stdio.h>
- #include<string.h>
- float getfloat(char *s)
- {
- float ans = 0, tmp = 0;
- int i, tag = 1;
- if(s[0] == '-')
- {
- tag = -1;
- }
- for(i = 0+(tag == -1); s[i] != '.'; i++) // i = 0+(tag == -1)这句话是什么意思呀
- {
- ans = ans *10+s[i]-'0';
-
- }
- for(i = strlen(s)-1; s[i] != '.'; i--)
- {
- tmp = tmp/10+s[i]-'0';
- }
- ans += (tmp/10);
- return ans*tag;
- }
- int main()
- {
- char s[30];
- float a;
- gets(s);
- a = getfloat(s);
- printf("%f\n", a);
- return 0;
- }
复制代码
问题是注释的那里 for里面初始化 i = 0+(tag == -1) 是什么意思呀 能不能简单的讲(翻译)一下这句话~
还有一个问题是我的输出格式不知道怎么改,没办法输入几位小数就输出几位小数,能不能帮忙改一下。
本帖最后由 人造人 于 2018-3-8 19:33 编辑
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- int GetLength(char *str)
- {
- int i = 0;
- for(i = 0; str[i] != '.'; ++i)
- ;
- return strlen(str) - i - 1;
- }
- int main(void)
- {
- char *val = "123.45678987654321";
- char fmt[100];
- sprintf(fmt, "%%.%dlf\n", GetLength(val)); // 构建输出格式
- printf(fmt, atof(val)); // 使用构建的格式输出
- return 0;
- }
复制代码
- 123.45678987654321
- 请按任意键继续. . .
复制代码
|
|