-
以下 ** 应该是正确的。
评论中解释了这些更改。
#include
const int n=5;
void extrm(int a,int n,int *max,int *min);
void main()
int a[n];
int i = 0;
printf("请输入五个整数:");
for(i=0;ia[i])这里有一个逻辑错误。
min=a[i];
-
#include
在此处定义 N 5。
void extrm(int a,int n,int *max,int *min);
void main()
int a[n];
int m,n;
int i;变量应该首先在使用中定义,而不是在中间定义。
printf("请输入五个整数:");
for(i=0;ia[i])
min=a[i];
就是现在。
-
你用的第7行后面的引号是全角的,应该用半角的,对应第一个引号,我扫描了一下程序,应该还是有一些问题的。
-
错误在于这句话:
if (p[i+j]!='*'a[i++]=p[i+j]其实用来给数组a写顺序字符的下标i,和用来遍历数组p的下标i+j,应该不会互相影响,但是在你的程序中,i是自递增的,导致后面的p[i+j]跳过一些字符,而不是一个个遍历。
正确的做法是使用单独的下标来处理数组 a。
void fun(char *a)
n = i;n 表示前导 * 符号末尾的位置和实际有效字母开头的位置。
for(j=0;p[i+j] != '\0';j++)a[n]='\0';在数组 a 的末尾写 0 个字符的结尾 }
-
printf("%.2f%f",fa,db);
由于浮点数据具有默认的位数,并且后面的数据通常不准确,因此最好自己使用它来精确精确小数位数。
-
问题超出了浮点数的范围,浮点数为 4 个字节,双精度为 8 个字节。
浮点数的范围是 -2 128 2 128,即双倍的范围是 -2 1024 2 1024,即
这意味着浮点数不能超过 7 个有效数字,而 double 不能超过 16 个有效数字。
房东的 fa = 超过 7 位,所以有错误。
-
浮动具有双倍的范围和精度。
1.范围。
float 和 double 的范围由索引的位数决定。
浮点数有 8 位数字,双精度值有 11 位数字,分布如下:
float:
1bit(符号位)、8bit(指数位)、23bit(尾数位)。
double:
1bit(符号位)、11bit(指数位)、52bit(尾数数字)。
因此,float 的指数范围为 -127 +128,而 double 的指数范围为 -1023 +1024,指数数字除以补码。
其中负指数确定浮点数可以表示的具有最小绝对值的非零数; 正指数确定浮点数可以表示的绝对值最大的数字,即确定浮点数的值范围。
浮点数的范围是 -2 128 2 128,即双倍的范围是 -2 1024 2 1024,即
2.精度。
float 和 double 的精度由尾数的位数决定。 浮点数按照科学记数法存储在内存中,其整数部分始终是隐含的“1”,由于不变,因此不会影响精度。
float:2 23 = 8388608,总共 7 位,表示最多可以有 7 位有效位,但绝对保证是 6 位,即浮点数的准确率为 6 7 位;
double:2 52 = 4503599627370496,共 16 位,同理,double 的精度为 15 16 位。
我想收养,谢谢!
-
错误 ** 是这句话 s=1 2*(a+b+c); 乘法和除法的优先级相同,程序等价于s=(1 2)*(a+b+c); 默认情况下,1 和 2 都是整数,即 (1 2) 是 0,所以无论 (a+b+c) 是什么,s 都等于 0
你可以把 1 或 2 修改为或程序认为 (1 2) 是一个浮点数,并且值只是弯曲,这样就可以计算出正确的结果。
#include
#include
main()
float a,b,c,area,s;
scanf("%f%f%f",&a,&b,&c);
s=(;area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("%f%f",s,area);
结果如下:
-
您好,**没有错,只是当你输入重力时,输入格式没有按要求输入重力g,正确的输入g应该是这样的,请看下图。
希望对你有所帮助。
-
scanf 并输出 a b c 以查看它是否是您输入的值。 scanf 中的格式字符串直接尝试使用 %d%d%d。
我同意我楼上说的加{}来划分级别,但是,其实没有{},看看你发的这个**的缩进关系,也可以看出if和else的对应关系。 >>>More