下面是我的代码:
#include <stdio.h>
#define size 100
int main(){
int a,b,i,j;
int arr[size][size];
printf("input : ");
scanf("%d",&a);
int a[a];
arr[size][size]= a[a];
for(i=0;i<a ;i++){
a[i]=a[a]-a[i];
for(j=0; j<i; j++){
arr[i][j]=i+1/j+1;
}
}
printf("%d", arr[i][j]);
return 0;
}
我遇到了问题,也许有人想帮我解决它。我在循环中混淆了使用递减和数组2维谁没有打印出真正的程序。
此程序应:
输入:
5
输出:
1.00 0.50 0.33 0.25 0.20
2.00 1.00 0.67 0.50
3.00 1.50 1.00
4.00 2.00
5.00
它是使用double还是int的数组?
发布于 2020-11-03 21:15:40
a
会导致冲突。b
。arr[size][size]
,因为它应用于存储浮点数。( int
)/
运算符有比+
运算符更高的优先级,所以你应该在整数除法的/
.+
。您应该先将其中一个操作数转换为浮点数,然后division.试试这个:
#include <stdio.h>
#define size 100
int main(){
int a,i,j;
double arr[size][size];
printf("input : ");
scanf("%d",&a);
for(i=0;i<a ;i++){
for(j=0; j<a-i; j++){
arr[i][j]=(double)(i+1)/(j+1);
}
}
for(i=0;i<a ;i++){
for(j=0; j<a-i; j++){
printf("%.2f%c", arr[i][j], j+1<a-i ? ' ' : '\n');
}
}
return 0;
}
或者,您可以避免使用浮点数,而对数组使用int
。
#include <stdio.h>
#define size 100
int main(){
int a,i,j;
int arr[size][size];
printf("input : ");
scanf("%d",&a);
for(i=0;i<a ;i++){
for(j=0; j<a-i; j++){
arr[i][j]=(((i+1)*1000)/(j+1)+5)/10;
}
}
for(i=0;i<a ;i++){
for(j=0; j<a-i; j++){
printf("%d.%02d%c", arr[i][j]/100, arr[i][j]%100, j+1<a-i ? ' ' : '\n');
}
}
return 0;
}
(((i+1)*1000)/(j+1)+5)/10
正在执行的公式:
1000
后的除法,计算到小数点后的3位。5
与divide by 10
相加,将结果四舍五入到小数点后的2位。https://stackoverflow.com/questions/64663389
复制相似问题