关于#c语言#的问题,请各位专家解答!

用C怎么做,求专家帮忙

自己写了一个代码错了,也知道原因,主要是输入问题,但不知道怎么解决,所以求各位给个方法

img

img

img

主要是我自己写的代码用的是getchar()这个函数只能输入10以下的数

主要是获取数据的方法不恰当,改为scanf()获取输入即可,修改如下:




#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    
    int i,y,k,z=0,j,x2[3],a,conut=0;
    scanf("%d",&y);  // 数组元素的个数 n 
    
    int x1[y];  // 数组A 
    for(i=0; i<y; i++) { // 从输入获取数组A的元素值 
        //x1[i]=getchar()-48;
        //getchar();
        scanf("%d",&x1[i]);
    }
    
    scanf("%d",&k);  //操作命令的行数m 
    
//    fflush(stdin);
    int b[k]={0};  // 存储m行操作命令 
    for(i=0; i<k; i++) {
    //    z=getchar()-48;
        //getchar();
        scanf("%d",&z); // 获取操作类型是1还是2 
    
        
        if(z==2) {
            for(j=0; j<3; j++) {
                scanf("%d",&x2[j]); // 存储操作命令数据 
                //x2[j]=getchar()-48;
                //getchar();
            }
//data=daxiao(x1,x2[3]);
    // 执行操作命令2 
            for(a=x2[0]-1; a<=x2[1]-1; a++) {
                if(x1[a]<=x1[x2[2]-1]) {
                    b[conut]++;
                }
            }
            conut++;
        }
        if(z==1) {
            
            for(j=0; j<2; j++) {
                scanf("%d",&x2[j]);  // 存储操作命令数据 
                //x2[j]=getchar()-48;
            //    getchar();
            }
            
        // 执行操作命令1  
            x1[x2[0]-1]=x2[1];
        }

    }
    
    // 打印执行命令的结果 
    for(i=0; i<conut; i++) {
        printf("%d ",b[i]);
    }
    return 0;
}

img