二维数组的打印以及其数据的计算

img

img


为什么我接收的数字打出来之后成乱码了,怎么算这个数字分成几个因数

打印数来的结果乱码,一是因为arr数组的foloat类型与scanf获取输入的整数类型不对,二是arr数组没有初始化;

可以在双层循环中,逐个判断输入的数是否可以整除面额500到面额1之间的数,如果可以,则将此数置0,如果不可以则将此数置为相除的余数,如此循环计算下去,即可将此数分解成几个因数了。

代码如下:

#include <stdio.h>

int main(void){
    
    int i,n,m,t;
    int arr[5][10];
    int salary[10]={0,500,200,100,50,20,10,5,2,1};
    int num[10]={0};
    
    for(i=0;i<5;i++){
        printf("Give the salary for the %d. employee > ",i+1);
        scanf("%d",&n);
        arr[i][0] = n; 
    }
    
    printf("Salary\t500\t200\t100\t50\t20\t10\t5\t2\t1\n"); 
    for(i=0;i<5;i++){
        
        printf("%d\t",arr[i][0]);
        t=arr[i][0];
        for(m=1;m<10;m++){
            
            printf("%d\t",t/salary[m]); //打印输入的数除以当前面额的整数商 
            if(t%salary[m]==0){    //如果可以整除,则将t置0,同时将商累加到当前面额的数量 
                            
                num[m]+=t/salary[m];
                //t= t%salary[m];
                t=0;
            }else{  //如果不可以整除,则将t置为余数,同时将商累加到当前面额的数量 
                num[m]+=t/salary[m];
                t=t-t/salary[m]*salary[m];
                
            }
            
            
        }
        printf("\n"); //打印换行 
    }
    
    printf("Total\t"); 

    //打印每种面额各有多少个    
    for(m=1;m<10;m++){
        printf("%d\t",num[m]);
    }
    printf("\n");
    
    
    return 0;
} 

img