用C怎么做,求专家帮忙
自己写了一个代码错了,也知道原因,主要是输入问题,但不知道怎么解决,所以求各位给个方法
主要是我自己写的代码用的是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;
}