=======(答案3)======= n=sort(a,n);
第2题 (30.0分) 题号:576 难度:中 第1章 /*------------------------------------------------------- 【程序改错】
---------------------------------------------------------
题目:函数unsigned delbits(unsigned x,unsigned p,unsigned n) 把非负整数x从左端第p(p>1)位开始的n位删除,形成新的数 返回。
例如:若x为12345,p为3,n为2,形成新的数为125。 若x为12345,p为6,n为2,形成新的数为12345。 若x为12345,p为3,n为4,形成新的数为12。
请改正程序中的错误,使它能得出正确的结果。
--------------------------------------------------------- 注意:不得增行或删行,也不得更改程序的结构。
--------------------------------------------------------*/
#include
unsigned delbits(unsigned x,unsigned p,unsigned n) {
int a[10],i,j,k; i=0; while(x) {
/*******************FOUND*******************/ a[i]=x; x/=10; } k=i;
for(i=0;i a[i]+=a[k-i-1]; a[k-i-1]=a[i]-a[k-i-1]; a[i]=a[i]-a[k-i-1]; } j=p-1; /*******************FOUND*******************/ for(i=p+n;i<=k-1;i++) { a[j]=a[i]; j++; } k=j; for(i=0;i /*******************FOUND*******************/ x+=a[i]*10; return x; } int main() { unsigned x,p,n; printf(\ scanf(\ printf(\ scanf(\ printf(\ scanf(\ x=delbits(x,p,n); printf(\ return 0; } 答案: =======(答案1)======= a[i++]= x; =========或========= a[i]=x,i++; =========或========= a[i]=x,++i; =========或========= a[i]=x,i=i+1; =========或========= a[i]=x,i=1+i; =========或========= a[i]=x,i+=1; =========或========= a[i]=x;i++; =========或========= a[i]=x;++i; =========或========= a[i]=x;i=i+1; =========或========= a[i]=x;i=1+i; =========或========= a[i]=x;i+=1; =======(答案2)======= for(i=p+n-1;i<=k-1;i++) =========或========= for(i=p-1+n;i<=k-1;i++) =======(答案3)======= x=x*10+a[i]; =========或========= x=10*x+a[i]; =========或========= x=a[i]+x*10; =========或========= x=a[i]+10*x; 第3题 (30.0分) 题号:577 难度:中 第1章 /*------------------------------------------------------- 【程序改错】 --------------------------------------------------------- 题目:void move(int a[],int n,int m)函数将n个元素的一维 数组a循环左移m个位置, void change(int a[],int n,int b[][N])函数将数组a按 行存入二维数组b,然后将b按列重新存入数组a。 例如:数组a的元素为1,2,3,4,5,6,7,8,9,10,11,12,调用move函 数将a循环左移3个位置后,a的元素为 4,5,6,7,8,9,10,11,12,1,2,3,调用change函数后,a的元 素为4,8,12,5,9,1,6,10,2,7,11,3。 请改正程序中的错误,使它能得出正确的结果。 --------------------------------------------------------- 注意:不得增行或删行,也不得更改程序的结构。 --------------------------------------------------------*/ #include void move(int a[],int n,int m) { int i,t; while(m) { t=a[0]; for(i=0;i /*******************FOUND*******************/ a[i]=a[i+m]; a[n-1]=t; m--; } } void change(int a[],int n,int b[][N]) { int i,j; for(i=0;i /*******************FOUND*******************/ b[i/M][i-i/N]=a[i]; for(i=0;i /*******************FOUND*******************/ a[j*M+i]=b[i][j]; } int main() { int a[M*N]={1,2,3,4,5,6,7,8,9,10,11,12}; int b[M][N],i,j,m; printf(\ for(i=0;i printf(\ for(i=0;i