首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建数组2降维

创建数组2降维
EN

Stack Overflow用户
提问于 2020-11-03 21:03:42
回答 1查看 43关注 0票数 0

下面是我的代码:

代码语言:javascript
运行
复制
#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维谁没有打印出真正的程序。

此程序应:

输入:

代码语言:javascript
运行
复制
5

输出:

代码语言:javascript
运行
复制
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的数组?

EN

回答 1

Stack Overflow用户

发布于 2020-11-03 21:15:40

  • 在整数后声明数组a会导致冲突。
  • 未使用变量b
  • 您不能访问arr[size][size],因为它应用于存储浮点数。( int)
  • To也可以工作,但至少不会有值递减,你可以使用subtraction.
  • /运算符有比+运算符更高的优先级,所以你应该在整数除法的/.
  • Results被截断之前使用括号让它计算+。您应该先将其中一个操作数转换为浮点数,然后division.
  • You才会将打印放入一些循环中。

试试这个:

代码语言:javascript
运行
复制
#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

代码语言:javascript
运行
复制
#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正在执行的公式:

  1. 计算乘以1000后的除法,计算到小数点后的3位。
  2. 5与divide by 10相加,将结果四舍五入到小数点后的2位。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64663389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档