好文档 - 专业文书写作范文服务资料分享网站

C语言程序改错题

天下 分享 时间: 加入收藏 我要投稿 点赞

C语言程序改错题

Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】

第1题 【程序改错】

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

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

------------------------------------------------------*/

#include <> #include <> #include <>

void fun (char *s, char *t) {

/**********FOUND**********/ int i;

sl = strlen(s); for (i=0; i

/**********FOUND**********/ t[i] = s[sl-i]; for (i=0; i

/**********FOUND**********/ t[2*sl] = \ } main() {

char s[100], t[100];

printf(\ fun(s, t);

printf(\ } 答案:

1). int i,sl;

2). t[i] = s[sl-i-1];

3). t[2*sl] = '\\0'; 或 t[2*sl] = 0;

第2题 【程序改错】

功能:求出以下分数序列的前n项之和。和值通过函数值返回main 函数。

2/1+3/2+5/3+8/5+13/8+21/13 …… 例如:若n = 5,则应输出:。

------------------------------------------------------*/

#include <> #include <>

/**********FOUND**********/ fun ( int n ) {

int a, b, c, k; double s; s = ; a = 2; b = 1;

for ( k = 1; k <= n; k++ ) {

/**********FOUND**********/ s = (double)a / b; c = a; a = a + b; b = c; }

/**********FOUND**********/ return c; } main( ) {

int n = 5;

printf( \ } 答案:

1). double fun(int n)

2). s = s + (double)a / b; 或 s += (double)a / b; 或 s += a /(double)b; 或 s=s+a/(double)b; 3). return s;

第3题 【程序改错】

功能:读入一个整数m( 5≤m≤20 ),函数getarr调用函数rnd获 得m个随机整数,函数sortpb将这m个随机整数从小到大排序。 例如:若输入整数7,则应输出:3 10 17 28 32 36 47。

------------------------------------------------------*/

#include \

#include <>

sortpb ( int n, int *a ) {

/**********FOUND**********/ int i, j, p, t

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

for ( i = j + 1; i < n ; i ++ ) /**********FOUND**********/ if ( a[p] > a[j] ) p = i; /**********FOUND**********/ if ( p == j ) {

t = a[j]; a[j] = a[p]; a[p] = t; } } }

double rnd ( ) {

static t = 29, c = 217, m = 1024, r = 0; r =( r*t + c )%m; return( ( double )r/m ); }

getarr( int n, int *x ) { int i;

for( i = 1; i <= n; i++, x++ ) *x = ( int )( 50*rnd() ); }

putarr( int n, int *z ) { int i;

for( i = 1; i <= n; i++, z++ ) {

printf( \

if ( !( i ) ) printf( \ }

printf(\ }

main() {

int aa[20], n;

printf( \ scanf( \ getarr( n, aa );

printf( \ sortpb( n, aa );

printf( \ } 答案:

1). int i, j, p, t;

2). if ( a[p] > a[i] ) p = i; 3). if ( p != j )

第4题 【程序改错】

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

功能:以下程序能求出1*1+2*2+......+n*n<=1000中满足条件的 最大的n。

------------------------------------------------------*/ #include <> #include \ main() {

int n,s;

/**********FOUND**********/ s==n=0;

/**********FOUND**********/ while(s>1000) { ++n; s+=n*n; }

/**********FOUND**********/ printf(\ } 答案: 1). s=n=0;

2). while(s<=1000) 3). printf(\

第5题 【程序改错】

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

功能:求出a所指数组中最大数和次最大数(规定最大数和次最大 数不在a[0]和a[1]中),依次和a[0]、a[1]中的数对调。 例如:数组中原有的数:7、10、12、0、3、6、9、11、5、8, 输出的结果为:12、11、7、0、3、6、9、10、5、8。

------------------------------------------------------*/

#include <> #include <> #define N 20

void fun ( int * a, int n ) {

int k,m1,m2,max1,max2,t; max1=max2= -32768; m1=m2=0; for ( k = 0; k < n; k++ ) if ( a[k]>max1 ) {

max2 = max1; m2 = m1; max1 = a[k]; m1 = k; }

/**********FOUND**********/ else if( a[k]>max1 ) {

max2 = a[k]; m2 = k; } /**********FOUND**********/ t = a[0]; a[m1]=a[0]; a[m1] = t;

/**********FOUND**********/ t = a[1]; a[m2]=a[1]; a[m2] = t; } main( ) {

int b[N]={7,10,12,0,3,6,9,11,5,8}, n=10, i; for ( i = 0; i

printf(\ fun (b, n);

for ( i=0; i

1). else if( a[k]>max2 )

2). t = a[0]; a[0]=a[m1]; a[m1] = t; 3). t = a[1]; a[1]=a[m2]; a[m2] = t;

第6题 【程序改错】

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

功能:读入一个整数k(2≤k≤10000),打印它的所有质因子(即 所有为素数的因子)。

例如:若输入整数:2310,则应输出:2、3、5、7、11。 请改正程序中的语法错误,使程序能得出正确的结果。

------------------------------------------------------*/

#include \ #include <>

/**********FOUND**********/ isPrime(integer n ) {

int i, m; m = 1;

for ( i = 2; i < n; i++ ) /**********FOUND**********/ if ( n%i ) {

m = 0; break; }

/**********FOUND**********/ return n ; } main( ) {

int j, k;

printf( \ scanf( \

printf( \ for( j = 2; j <= k; j++ )

if((!( k%j))&&( IsPrime(j))) printf( \ printf(\ } 答案:

1). IsPrime(int n) 2). if(!(n%i)) 3). return m ;

第7 题 【程序改错】

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

功能:为一维数组输入10个整数;将其中最小的数与第一个数 对换,将最大的数与最后一个数对换,输出数组元素。

------------------------------------------------------*/ #include <> 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 *p,i; p=arr;

printf(\ for(i=0;i

/**********FOUND**********/ scanf(\ }

void max_min(int *arr,int n) {

int *min,*max,*p,t; min=max=arr;

for(p=arr+1;p

else if(*p<*min) min=p; t=*arr;*arr=*min;*min=t; /**********FOUND**********/ if(max=arr) max=min; t=*(arr+n-1); *(arr+n-1)=*max; *max=t; }

void output(int *arr,int n) {

int *p,i; p=arr;

printf(\ /**********FOUND**********/ while(i=0;i

1). scanf(\或 scanf(\或 scanf(\或 scanf(\

2). if(*p>*max) 或 if(*max<*p) 3). if( max == arr )

4). for(i=0;ii;i++) 或 for(p=arr;p=i;i++) 或 for(p=arr;p<=arr+n-1;) 或 for(p=arr;arr+n-1>=p;)

第8题 【程序改错】

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

功能:求出在字符串中最后一次出现的子字符串的地址,通过函 数值返回,在主函数中输出从此地址开始的字符串;若未 找到,则函数值为NULL。

例如:当字符串中的内容为:\,t中的内容为: \时,输出结果应是:abcdx。当字符串中的内容为: \,t中的内容为:\时,则程序输出 未找到信息:not found!。

------------------------------------------------------*/

#include <> #include <> #include <>

char * fun (char *s, char *t ) {

char *p , *r, *a;

/**********FOUND**********/ a == NULL; while ( *s ) { p = s; r = t; while ( *r )

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

/**********FOUND**********/ if ( *r ='\\0' ) a = s; s++; }

return a ; } main() {

char s[100], t[100], *p;

printf(\ printf(\ p = fun( s, t ); if ( p )

printf(\ else

printf(\ } 答案:

1). a = NULL; 2). if ( *r == *p )

3). if ( *r == '\\0' ) a = s;

第9题 【程序改错】

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

功能:从m个学生的成绩中统计出高于和等于平均分的学生人数, 此人数由函数值返回。平均分通过形参传回,输入学生成 绩时,用-1结束输入,由程序自动统计学生人数。 例如:若输入 8 名学生的成绩,输入形式如下: 60 72 98 88 64 -1 结果为:

The number of students :4 Ave = 。

------------------------------------------------------*/

#include <> #include <> #define N 20

int fun ( float *s, int n, float *aver ) {

float av, t ; int count , i; count = 0; t=;

for ( i = 0; i < n; i++ ) t += s [ i ]; av = t / n; printf( \ for ( i = 0; i < n; i++ ) /**********FOUND**********/ if ( s[ i ] < av ) count++; /**********FOUND**********/ aver = av;

/**********FOUND**********/ return count } main() {

float a, s[30], aver; int m = 0;

printf ( \ scanf(\

while( a>0 ) {

s[m] = a; m++;

scanf ( \ }

printf( \ printf( \ } 答案:

1). if ( s[ i ] >= av ) count++; 2). *aver = av; 3). return count;

第10题 【程序改错】

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

功能:根据以下公式求π值,并作为函数值返回。 例如:给指定精度的变量eps输入时,应当输出Pi=。

π 1 1 2 1 2 3 1 2 3 4 — = 1 + — + — x — + — x — x — + — x — x — x — + ... 2 3 3 5 3 5 7 3 5 7 9

------------------------------------------------------*/ #include <>

double fun(double eps) {

double s,t; int n=1; s=; t=1;

/**********FOUND**********/ while(t<=eps) { s+=t;

/**********FOUND**********/ t=n/(2*n+1)*t; n++; }

/**********FOUND**********/ return s;

} main() {

double x; scanf(\

printf(\ } 答案:

1). while(t>eps) 或 while(eps=eps) 或 while(eps<=t) 或 while (t>eps) 或 while (eps=eps) 或 while (eps<=t)

2). t=t*n/(2*n+1); 或 t=*n/(2*n+1)*t; 或 t=n/(2*n+*t; 或 t=n/*n+1)*t; 或 t=n/*n+*t; 或 t=*n/*n+*t;

3). return 2 * s ; 或 return (2*s); 或 return(2*s); 或 return (s*2); 或 return(s*2);

第11题 【程序改错】

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

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

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

------------------------------------------------------*/

#include <> 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;

/**********FOUND**********/ while(s1[i]= ='\\0') i++;

/**********FOUND**********/ while(s2[j]= ='\\0') {

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

/**********FOUND**********/ s2[j]='\\0'; } 答案:

1). while( s1[i] != '\\0' ) 或 while(s1[i]) 或 while( s1[i] != 0 ) 2). while( s2[j] != '\\0' ) 或 while(s2[j]) 或 while( s2[j] != 0 ) 3). s1[i]=s2[j];

4). s1[i]='\\0'; 或 *(s1+i)='\\0'; 或 s1[i]=0;

第12题 【程序改错】

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

功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数 返回二分之一的圆面积。

例如:输入圆的半径值: 输出为:s = 。

------------------------------------------------------*/

#include <> #include <>

/**********FOUND**********/ double fun( r) {

double s;

/**********FOUND**********/ s=1/2** r * r;

/**********FOUND**********/ return r; } main() {

float x;

printf ( \ scanf ( \

printf (\

} 答案:

1). float fun(float r) 或 double fun(float r) 或 double fun(double r) 2). s=2** r * r; 3). return s;

第13题 【程序改错】

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

功能:利用二维数组输出如图所示的图形。

******* ***** *** * *** ***** *******

------------------------------------------------------*/ #include <> #include <>

/**********FOUND**********/ #define N= 7 main() {

char a[N][N]; int i,j,z; for(i=0;i

/**********FOUND**********/ a[i][j]=; z=0;

for(i=0;i<(N+1)/2;i++) {

for(j=z;j

/**********FOUND**********/ z=0;

for(i=(N+1)/2;i

{ z=z-1;

for(j=z;j

for(i=0;i

for(j=0;j

/**********FOUND**********/ printf(\ printf(\ } } 答案:

1). #define N 7 2). a[i][j]=' ';

3). z=z-1; 或 z--; 或 z=-1+z; 4). printf(\

第14题 【程序改错】

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

功能:读取7个数(1-50)的整数值,每读取一个值,程序打印 出该值个数的*。

------------------------------------------------------*/

#include <> main() {

int i,a,n=1;

/**********FOUND**********/ while(n<7) { do {

scanf(\ }

/**********FOUND**********/ while(a<1&&a>50);

/**********FOUND**********/ for(i=0;i<=a;i++)

printf(\ printf(\ n++; } } 答案:

1). while(n<=7) 或 while(n<8)

2). while(a<1||a>50); 或 while(a>50||a<1); 3). for(i=1;i<=a;i++)

C语言程序改错题

C语言程序改错题Documentserialnumber【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】第1题【程序改错】功能:先将在字符串s中的字符按逆序存放到t串中,然后把s
推荐度:
点击下载文档文档为doc格式
6yd641zghf553973044s2xc786b4a900ywd
领取福利

微信扫码领取福利

微信扫码分享