为什么运行就显示0.00?
#include<stdio.h>
int main()
{
FILE*fp;
float a,b,c,sum;
fp=fopen("in.txt","rt+");
fscanf(fp,"%f,%f,%f",&a,&b,&c);
sum=a*0.1+b*0.2+c*0.7;
fp=fopen("out.txt","wt+");
fprintf(fp,"%4.2f",sum);
fclose(fp);
printf("%4.2f",sum);
return 0;
}
这是 fscanf……是从文件输入流读取,不是控制台输入流。不是要你输入的,是从文件读取。
你得看看a,b,c都读出来是啥值啊。别人也不知道你文件里存储了啥,咋解决
为什么在DEV-c++里面一运行就显示0.00,无法输入a,b,c
修改如下,供参考:
#include<stdio.h>
int main()
{
FILE* fp;
float a, b, c, sum;
char str[128];
fp = fopen("in.txt", "rt+");
if (fp) {
fscanf(fp, "%s", str); //fscanf(fp, "%f,%f,%f", &a, &b, &c);
fclose(fp);
sscanf(str, "%f,%f,%f", &a, &b, &c);
sum = a * 0.1 + b * 0.2 + c * 0.7;
fp = fopen("out.txt", "wt+");
fprintf(fp, "%4.2f", sum);
fclose(fp);
printf("%4.2f", sum);
}
else
printf("open file fail!");
return 0;
}
有符号整数是用补码表示的。具体的表示形式如下,其中,向量的每个元素表示了整数的每一位。
负数的最高位是1,非负数最高位是0。
假设有符号整数共w位,那么最小的负数最高位为1,其他为0,即 −2w-2^w−2w。 最大的正数最高位为0,其他位为1,即 2w−12^w-12w−1。
因此有符号整数可表示的范围为[−2w,2w−1][-2^w, 2^w-1][−2w,2w−1]。负数和非负数各占了取值范围的一半,而非负数中有一个数是0,这也就导致了负数和正数不对称。