程序改错题

更新时间:2023-10-09 01:50:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

【程序改错】

功能:已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项的和。下列给定程序中,函数fun的功能是:计算并输出该数列的前n项的平方根 之和sum,n的值通过形参传入。

例如:当n=10时,程序的输出结果应为23.197745。 #include \#include

float fun(int n)

{ double sum,s0,s1,s2,s; int k; sum=1.0;

sum=1;

if(n<=2) sum=0.0; s0=0.0; s1=0.0; s2=1.0;

s2=1;

for(k=4;k<=n;k++)

{ s=s0+s1+s2; sum+=sqrt(s);

s0=s1;s1=s2;s2=s; } return sum; }void main() { int n;

scanf(\

printf(\

1【程序改错】下面给定程序中,函数fun的功能是:判断用户输入的任意一个字符串是否为\回文串\。所谓\回文串\是指从开头读和从末尾读均为相同字符,例如:\。请改正程序中的错误。

#include #define N 50

int fun(char a[])

{ int i=0,num=0,flag=0; Do

{ num++; }

while(a[num]!='\\0');

do

{ if(a[i]!=a[num-1-i]) { flag=1;

break; } i++;

}while(i

scanf(\ m=fun(a);

if(m==1) printf(\此数组不为回文串\\n\ else printf(\此数组为回文串\\n\ 2【程序改错】

功能:将6个数按输入时顺序的逆序进行排列. #include \

void sort(char *p,int m) { int i;

char change,*p1,*p2; for(i=0;i

{ *p1=p+i; *p2=p+(m-1-i); change=*p1; *p1=*p2;

*p2=change; }} main( ) { int i; /

char p,num[6]; for(i=0;i<=5;i++)

scanf(\ p=&num[0]; sort(*p,6);

for(i=0;i<=5;i++) printf(\3【程序改错】

功能:给定n个实数,输出平均值,并统计在平均值以下(含平 例如:n=6时,输入23.5, 45.67, 12.1, 6.4,58.9, 98.4所得 平均值以下的实数个数应为3。

-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ #include \

int fun(float x[],int n) {

int j,c=0;

/**********ERROR**********/

float xa=0;或float xa=0.0; /**********ERROR**********/ for(j=0;j

for(j=0;n>j;j++) for(j=0;n-1>=j;j++) for(j=0;j<=n-1;j++)1/4

xa+=x[j]; xa=xa/n;

printf(\

/**********ERROR**********/

均值)的实数个数。 平均值为40.828335,在

for(j=0;jj;j++) for(j=0;j<=n-1;j++)

for(j=0;n-1>=j;j++) 1/4

/**********ERROR**********/

return c;或return (c);

}

void main() {

float x[]={23.5,45.67,12.1,6.4,58.9,98.4}; printf(\}

4功能:计算正整数num的各位上的数字之积。 例如:输入252,则输出应该是20。

-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ #include \long fun (long num) {

/**********ERROR**********/ long k=1; do {

k*=num;

/**********ERROR**********/ num/=10;或num=num/10;

}while (num); return k; }

main() {

long n;

printf(\ /**********ERROR**********/ scanf(\

/**********ERROR**********/

printf(\

; }

5【程序改错】

--------------------------------------------------------

功能:用指针作函数参数,编程序求一维数组中的最大和最小的 元素值.

-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ #include \#define N 10

/***********ERROR***********/

void maxmin(int arr[ ],int *pt1,int *pt2,int n) maxmin(int arr[ ],int *pt1,int *pt2,int n)

void maxmin(int *arr,int *pt1,int *pt2,int n)1/3

{

int i;

/***********ERROR***********/ *pt1=*pt2=arr[0];

*pt1=*pt2=*(arr+0); *pt2=*pt1=arr[0];1/3

for(i=1;i

/***********ERROR***********/

if(arr[i]>*pt1) *pt1=arr[i];

if(*(arr+i)>*pt1)) *pt1=arr[i]; if(*pt1<*(arr+i))) *pt1=arr[i]; if(*pt1

if(arr[i]<*pt2) *pt2=arr[i]; } }

main( ) {

int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; /***********ERROR***********/ p1=&a;p2=&b;

maxmin(array,p1,p2,N);

printf(\}

6【程序改错】

功能:将字符串s中最后一次出现的子字符串t1替换成字符串t2, 所形成的新串放在w所指的数组中,在此处,要求t1和t2所指字符串的长度相同

例如:当s所指字符串中的内容为\,t1中的内容为\,t2中的内容为\时,结果w所指数组中的内容应为\。 #include \#include \#include \

int fun (char *s, char *t1, char *t2 , char *w) {

int i; char *p , *r, *a; strcpy( w, s );

/**********ERROR**********/ while (*w)

while (*w!=0) while (*w!='\\0') for (;*w;)

for (;*w!='\\0';)1/4

{p = w; r = t1; while ( *r )

/**********ERROR**********/ if (*r==*p) { r++; p++; } else break;

/**********ERROR**********/ if (*r=='\\0') a=w;

if (*r==0 ) a=w; if(!*r) a=w;1/3

w++;} r = t2;

while ( *r )

{ /**********ERROR**********/ *a=*r; a++; r++; }} main()

{char s[100], t1[100], t2[100], w[100];

printf(\

printf(\ printf(\ if ( strlen(t1)==strlen(t2) ) { fun( s, t1, t2, w);

printf(\ else

printf(\

7【程序改错】

--------------------------------------------------------

功能:将一个字符串中的大写字母转换成小写字母。 例如:输入aSdFG输出为asdfg。

-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/

#include \

/**********ERROR**********/

char fun(char *c)

{

if(*c<='Z'&&*c>='A')*c-='A'-'a'; /**********ERROR**********/

return *c; return (*c); return(*c);

}

main() {

/**********ERROR**********/ char s[81],*p=s;

gets(s); while(*p) {

*p=fun(p);

/**********ERROR**********/ putchar(*p);

printf(\

p++; }

putchar('\\n'); }

8【程序改错】

--------------------------------------------------------

功能:给定n个实数,输出平均值,并统计在平均值以下(含平 均值)的实数个数。

例如:n=6时,输入23.5, 45.67, 12.1, 6.4,58.9, 98.4所得 平均值为40.828335,在平均值以下的实数个数应为3。

-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ #include \

int fun(float x[],int n) {

int j,c=0;

/**********ERROR**********/

float xa=0;或float xa=0.0; /**********ERROR**********/ for(j=0;j

或for(j=0;n>j;j++) 或for(j=0;n-1>=j;j++) 或for(j=0;j<=n-1;j++)

xa+=x[j]; xa=xa/n;

printf(\

/**********ERROR**********/

for(j=0;jj;j++) 或for(j=0;j<=n-1;j++) 或for(j=0;n-1>=j;j++)

if(x[j]<=xa) c++;

/**********ERROR**********/

return c;

或return (c);

}

void main() {

float x[]={23.5,45.67,12.1,6.4,58.9,98.4}; printf(\}

9【程序改错】

功能:将6个数按输入时顺序的逆序进行排列.

-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ #include \

void sort(char *p,int m) {

int i;

char change,*p1,*p2;

for(i=0;i

/***********ERROR***********/ *p1=p+i; p2=p+(m-1-i); change=*p1; *p1=*p2; *p2=change; } }

main( ) {

int i;

/***********ERROR***********/

char *p,num[6];

for(i=0;i<=5;i++)

/***********ERROR***********/ scanf(\ p=&num[0];

/***********ERROR***********/

sort(p,6);

for(i=0;i<=5;i++) printf(\}

10【程序改错】

--------------------------------------------------------

功能:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输 出主对角线上的元素之和sum。

-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/

#include \int fun() {

int a[3][3],sum; int i,j;

/**********ERROR**********/ sum=0;

for(i=0;i<3;i++) for(j=0;j<3;j++)

/**********ERROR**********/ scanf(\ for(i=0;i<3;i++)

/**********ERROR**********/ sum=sum+a[i][i];

sum+=a[i][i]; sum=a[i][i]+sum; sum+=a[i][j=i]; sum=sum+a[i][j=i];

sum=a[i][j=i]+sum; 1/5 /**********ERROR**********/ printf(\

}

void main() {

fun(); }

11【程序改错】

--------------------------------------------------------

功能:用指针作函数参数,编程序求一维数组中的最大和最小的 元素值.

-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ #include \#define N 10

/***********ERROR***********/

void maxmin(int arr[ ],int *pt1,int *pt2,int n) maxmin(int arr[ ],int *pt1,int *pt2,int n)

void maxmin(int *arr,int *pt1,int *pt2,int n)1/3

{

int i;

/***********ERROR***********/

*pt1=*pt2=arr[0]; *pt1=*pt2=*(arr+0); *pt2=*pt1=arr[0]; 1/3

for(i=1;i

/***********ERROR***********/

if(arr[i]>*pt1) *pt1=arr[i];

if(*(arr+i)>*pt1)) *pt1=arr[i]; if(*pt1<*(arr+i))) *pt1=arr[i];

if(*pt1

}

}

main( ) {

int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; /***********ERROR***********/ p1=&a;p2=&b;

maxmin(array,p1,p2,N);

printf(\}

12【程序改错】

功能:实现两个字符串的连接。

例如:输入dfdfqe和12345时,则输出dfdfqe12345.

注意:不可以增加或删除程序行,也不可以更改程序的结构。

#include \void main() {

char s1[80],s2[80];

void scat(char s1[],char s2[]); gets(s1); gets(s2); scat(s1,s2); puts(s1); }

void scat (char s1[],char s2[]) {

int i=0,j=0;

/**********ERROR**********/

while(s1[i]!='\\0')i++; while(s1[i])i++;

while(s1[i]!=NULL)i++; while(s1[i]!=0)i++;(1/4)

/**********ERROR**********/ while(s2[j]!='\\0')

while(s2[j])

while(s2[j]!=NULL)

while(s2[j]!=0)(1/4)

{

/**********ERROR**********/ s1[i]=s2[j]; i++; j++; }

组元素仍按升序排列。

-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ #include \#define N 11 void main() {

int i,j,t,number,a[N]={1,2,4,6,8,9,12,15,149,156};

printf(\ /**********ERROR**********/

scanf(\

printf(\ for(i=0;i

/**********ERROR**********/

for(i=N-2;i>=0;i--)或for(i=N-2;0<=i;i--) if(number<=a[i])

/**********ERROR**********/ a[i+1]=a[i] else {

a[i+1]=number;

/**********ERROR**********/ break; }

if(number

printf(\ printf(\}

21【程序改错】

--------------------------------------------------------

功能:用指针作函数参数,编程序求一维数组中的最大和最小的 元素值.

-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ #include \#define N 10

/***********ERROR***********/

void maxmin(int arr[ ],int *pt1,int *pt2,int n)

或maxmin(int arr[ ],int *pt1,int *pt2,int n) 或void maxmin(int *arr,int *pt1,int *pt2,int n)

{

int i;

/***********ERROR***********/ *pt1=*pt2=&arr[0]; for(i=1;i

/***********ERROR***********/ *pt1=*pt2=arr[0];

或 *pt1=*pt2=*(arr+0);

或*pt2=*pt1=arr[0]; if(arr[i]<*pt2) *pt2=arr[i];

} }

main( ) {

int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; /***********ERROR***********/ if(arr[i]>*pt1) *pt1=arr[i];

或 if(*(arr+i)>*pt1)) *pt1=arr[i]; 或if(*pt1<*(arr+i))) *pt1=arr[i]; 或if(*pt1

maxmin(array,p1,p2,N);

printf(\}

22【程序改错】

--------------------------------------------------------

功能:求如下表达式:

1 1 1

S = 1 + -- + ----- + ...... + ------------- 1+2 1+2+3 1+2+3+......+n -------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/

#include \void main() {

int n;

float fun();

printf(\ /**********ERROR**********/

scanf(\

printf(\}

/**********ERROR**********/

float fun(int n)

{

int i,j,t; float s; s=0;

/**********ERROR**********/

for(i=1;i<=n;i++)

或for(i=1;n>=i;i++)或for(i=1;ii;i++)

{

t=0;

for(j=1;j<=i;j++) t=t+j;

/**********ERROR**********/

} return s; }

23【程序改错】

--------------------------------------------------------

功能:用指针作函数参数,编程序求一维数组中的最大和最小的 元素值.

-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ #include \#define N 10

/***********ERROR***********/

s+=1.0/t;或s=s+1.0/(float)t;或s=s+1.0/t;或s+=1.0/(float)t;

void maxmin(int arr[ ],int *pt1,int *pt2,int n) 或maxmin(int arr[ ],int *pt1,int *pt2,int n) 或void maxmin(int *arr,int *pt1,int *pt2,int n)

{

int i;

/***********ERROR***********/

*pt1=*pt2=arr[0];

或*pt1=*pt2=*(arr+0);

或*pt2=*pt1=arr[0]; for(i=1;i

{

/***********ERROR***********/

if(arr[i]>*pt1) *pt1=arr[i];

或if(*(arr+i)>*pt1)) *pt1=arr[i]; 或if(*pt1<*(arr+i))) *pt1=arr[i]; 或if(*pt1

if(arr[i]<*pt2) *pt2=arr[i]; } }

main( ) {

int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; /***********ERROR***********/

p1=&a;p2=&b; maxmin(array,p1,p2,N); printf(\}

24【程序改错】

--------------------------------------------------------

功能:为一维数组输入10个整数;将其中最小的数与第一个数 对换,将最大的数与最后一个数对换,输出数组元素。 -------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ #include \void main ( ) {

int a[10]; void input(); void output(); void max_min(); input(a,10); max_min(a,10); output(a,10); }

void input(int arr[],int n) {

int i;

printf(\ for(i=0;i

/**********ERROR**********/ scanf(\}

void max_min(int arr[],int n)

{

int max,min,t,i; min=max=0;

for(i=1;i

/**********ERROR**********/ if(arr[i]>arr[max]) max=i;

else if(arr[i]

arr[n-1]=arr[max]; arr[max]=t; }

void output(int arr[],int n) {

int i;

printf(\ /**********ERROR**********/ for(i=0;i

*【程序改错】

--------------------------------------------------------

功能:有一数组内放10个整数,要求找出最小数和它的下标,然后 把它和数组中最前面的元素即第一个数对换位置.

------------------------------------------------------*/ #include main( ) {

int i,a[10],min,k=0;

printf(\给数组元素赋值:\\n\ for(i=0;i<10;i++)

/***********ERROR***********/

scanf(\

for(i=0;i<10;i++)

printf(\ min=a[0];

/***********ERROR***********/

for(i=1;i<10;i++)

/***********ERROR***********/ if(a[i]

/***********ERROR***********/ a[k]=a[0]; a[0]=min;

printf(\输出互换后数组:\\n\ for(i=0;i<10;i++) printf(\ printf(\*【程序改错】

--------------------------------------------------------

功能:先将在字符串s中的字符按正序存放到t串中,然后把s中的 字符按逆序连接到t串的后面。

例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为: “ABCDEEDCBA”。

-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/

#include #include #include

void fun(char s[],char t[]) {

int i,k; k=strlen(s);

/**********ERROR**********/

for(i=0;i

t[i]=s[i]; for(i=0;i

/**********ERROR**********/ t[k+i]=s[k-i-1];

/**********ERROR**********/ t[k+i]='\\0'; }

main() {

char s[100],t[100];

printf(\ fun(s,t);

printf(\}

*【程序改错】

--------------------------------------------------------

题目:假定输入的字符串中只包含字母和*号。编写程序只删除字符串的前面*号。 例如,******ACF*F*G****,删除后,字符串中的字符为ACF*F*G**** 程序中共有3条错误语句,请改正错误。

-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/

#include #include void fun(char a[]); main()

{ char a[80]; gets(a); fun(a); puts(a); }

void fun(char a[]) {

/**********ERROR**********/ int i=0,j=0;

/**********ERROR**********/ while(a[i]=='*')i++; /**********ERROR**********/

while(a[i]) a[j++]=a[i++]; a[j]='\\0'; }

本文来源:https://www.bwwdw.com/article/4vcf.html

Top