答案:
=======(答案1)======= right--
=======(答案2)======= b[i]
第5题 (20.0分) 题号:654 难度:中 第1章 /*------------------------------------------------------- 【程序填空】
---------------------------------------------------------
函数void change(char s[],char t[])将s字符串中字母和数 字字符按以下规则转换,并将其保存在t中。其他字符则不作 转换。
大写字母转换规则:'A'->'z','B'->'y',...,'Z'->'a' 小写字母转换规则:'z'->'A','y'->'B',...,'a'->'Z' 数字字符转换规则:'0'->'9','1'->'8',...,'9'->'0'
--------------------------------------------------------- 注意:请勿改动程序中的其他内容。
-------------------------------------------------------*/ #include
void change(char s[],char t[]) {
int i;
for(i=0;s[i];++i) {
if(isalpha(s[i]))
t[i]=(isupper(s[i]) ? 'Z'-s[i]+'a' : 'z'-s[i]+'A'); else if(isdigit(s[i])) t[i]='9'-s[i]+'0'; else
/**************************SPACE*************************/ 【?】; } t[i]=0; }
int main() {
char t[100]=\ char s[100];
/**************************SPACE*************************/ 【?】;
printf(\ return 0; } 答案:
=======(答案1)======= t[i]=s[i]
=======(答案2)======= change(t,s)
二、程序改错 共5题 (共计150分)
第1题 (30.0分) 题号:575 难度:中 第1章 /*------------------------------------------------------- 【程序改错】
---------------------------------------------------------
题目:int sort(int a[],int n)函数将n个元素的数组a中互不相 同的元素按升序排列,重新存入数组a中,函数返回按升序 排列后互不相同元素的个数。
例如:数组a中元素为6,2,7,5,4,3,4,6,5,4,调用sort函数后, 函数值为6,主函数中输出排序后的数组a元素为 2,3,4,5,6,7。
请改正程序中的错误,使它能得出正确的结果。
--------------------------------------------------------- 注意:不得增行或删行,也不得更改程序的结构。
--------------------------------------------------------*/
#include
int i,j,k,low,high,mid,t; for(k=i=1;i low=0; high=k-1; while(low<=high) { mid=(low+high)/2; if(a[mid]>=a[i]) high=mid-1; else low=mid+1; } if(low>=k||a[low]!=a[i]) { /*******************FOUND*******************/ t=a[i]-1; /*******************FOUND*******************/ for(j=k;j>=low;j--) a[j+1]=a[j]; a[low]=t; k++; } } return k; } int main() { int a[ ]={6,2,7,5,4,3,4,6,5,4}; int i,n; n=sizeof(a)/sizeof(int); for(i=0;i printf(\ /*******************FOUND*******************/ sort(a,n); printf(\ for(i=0;i =======(答案1)======= t=a[i]; =======(答案2)======= for(j=k-1;j>=low;j--) =======(答案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;