改错题考试做题要求:
1、在/**********found**********/的下一行改正错误。
2、将题目做完之后一定要保存。
3、不能删除/**********found**********/,也不能多行或少行。
1、给定程序MODI1.C中函数fun的功能是,比较两个字符串,将长的那个字符串的首地址作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
/**********found**********/
char fun(char *s,char *t)
{ int sl=0,tl=0; char *ss,*tt;
ss=s; tt=t;
while(*ss)
{ sl++;
/**********found**********/
(*ss)++;
}
while(*tt)
{ tl++;
/**********found**********/
(*tt)++;
}
if(tl>sl) return t;
else return s;
}
main()
{ char a[80],b[80],*p,*q; int i;
printf("\nEnter a string,"); gets(a);
printf("\nEnter a string again,"); gets(b);
printf("\nThe longer is,\n\n\"%s\"\n",fun(a,b));
}
2、给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。
例如,调用fun函数之前给字符串输入:ABCDeFGH,
调用后字符串中的内容为:eABCDFGH。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h>
fun( char *p )
{ char max,*q; int i=0;
max=p[i];
while( p[i]!=0 )
{ if( max<p[i] )
{ max=p[i];
/**********found**********/
q=p+i
}
i++;
}
/**********found**********/
wihle( q>p )
{ *q=*(q-1);
q--;
}
p[0]=max;
}
main()
{ char str[80];
printf("Enter a string,"); gets(str);
printf("\nThe original string,"); puts(str);
fun(str);
printf("\nThe string after moving,"); puts(str); printf("\n\n");
}
3、给定程序MODI1.C中函数fun的功能是:根据整型形参m,计算如下公式的值。
1 1 1 1
y = ------- + --------- + --------- + …… + -------
100*100 200*200 300*300 m*m
例如,若m = 2000,则应输出,0.000160。
请改正程序中的语法错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
/************found************/
fun ( int m )
{ double y = 0,d ;
int i ;
/************found************/
for( i = 100,i <= m,i += 100 )
{ d = (double)i * (double)i ;
y += 1.0 / d ;
}
return( y ) ;
}
main( )
{ int n = 2000 ;
printf( "\nThe result is %lf\n",fun ( n ) ) ;
}
4、给定程序MODI1.C中函数 fun 的功能是,读入一个字符串(长度<20 ),将该字符串中的所有字符按ASCII码升序排序后输出。
例如,若输入,edcba,则应输出,abcde。
请改正程序中的错误,使它能统计出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
void fun( char t[] )
{
char c;
int i,j;
/**********found***********/
for( i = strlen( t ); i; i-- )
for( j = 0; j < i; j++ )
/**********found***********/
if( t[j] < t[ j + 1 ] )
{
c = t[j];
t[j] = t[ j + 1 ];
t[j + 1 ] = c;
}
}
main()
{
char s[81];
printf( "\nPlease enter a character string," );
gets( s );
printf( "\n\nBefore sorting:\n \"%s\"",s );
fun( s );
printf( "\nAfter sorting decendingly:\n \"%s\"",s );
}
5、给定程序MODI1.C中 fun 函数的功能是:分别统计字符串中大写字母和小写字母的个数。
例如,给字符串 s 输入:AAaaBBb123CCccccd,则应输出结果:upper = 6,lower = 8。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
/**********found**********/
void fun ( char *s,int a,int b )
{
while ( *s )
{ if ( *s >= 'A' && *s <= 'Z' )
/**********found**********/
*a=a+1 ;
if ( *s >= 'a' && *s <= 'z' )
/**********found**********/
*b=b+1;
s++;
}
}
main( )
{ char s[100]; int upper = 0,lower = 0 ;
printf( "\nPlease a string," ); gets ( s );
fun ( s,& upper,&lower );
printf( "\n upper = %d lower = %d\n",upper,lower );
}
6、给定程序MODI1.C中函数 fun 的功能是:统计substr所指子字符串在str所指字符串中出现的次数。
例如,若字符串为aaas lkaaas,子字符串为as,则应输出2。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
fun (char *str,char *substr)
{ int i,j,k,num=0;
/************found************/
for(i = 0,str[i],i++)
for(j=i,k=0;substr[k]==str[j];k++,j++)
/************found************/
If(substr[k+1]=='\0')
{ num++;
break;
}
return num;
}
main()
{
char str[80],substr[80];
printf("Input a string:") ;
gets(str);
printf("Input a substring:") ;
gets(substr);
printf("%d\n",fun(str,substr));
}
7、给定程序MODI1.C中函数fun的功能是:根据整型形参m的值,计算如下公式的值。
1 1 1
t = 1 - ----- - ----- - …… - -----
2*2 3*3 m*m
例如,若 m 中的值为,5,则应输出,0.536389。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
double fun ( int m )
{ double y = 1.0 ;
int i ;
/**************found**************/
for(i = 2 ; i < m ; i++)
/**************found**************/
y -= 1 /(i * i) ;
return( y ) ;
}
main( )
{ int n = 5 ;
printf( "\nThe result is %lf\n",fun ( n ) ) ;
}
8、给定程序MODI1.C中函数fun的功能是:逐个比较p、q所指两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c所指数组中,形成一个新的字符串。
例如,若主函数中a字符串为:aBCDeFgH,
主函数中b字符串为:ABcd,
则c中的字符串应为:aBcdeFgH。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h>
#include <string.h>
void fun(char *p,char *q,char *c)
{
/************found************/
int k = 1;
/************found************/
while( *p != *q )
{ if( *p<*q ) c[k]=*q;
else c[k]=*p;
if(*p) p++;
if(*q) q++;
k++;
}
}
main()
{ char a[10]="aBCDeFgH",b[10]="ABcd",c[80]={'\0'};
fun(a,b,c);
printf("The string a,"); puts(a);
printf("The string b,"); puts(b);
printf("The result,"); puts(c);
}
9、给定程序MODI1.C中函数fun的功能是:从s所指字符串中删除所有小写字母c。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
void fun( char *s )
{ int i,j;
for(i=j=0; s[i]!='\0'; i++)
if(s[i]!='c')
/************found************/
s[j]=s[i];
/************found************/
s[i]='\0';
}
main()
{ char s[80];
printf("Enter a string,"); gets(s);
printf("The original string,"); puts(s);
fun(s);
printf("The string after deleted,"); puts(s);printf("\n\n");
}
10、给定程序MODI1.C中函数fun的功能是:根据以下公式求π值,并作为函数值返回。
例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。
π 1 1 2 1 2 3 1 2 3 4
─=1+ ─ + ─×─ + ─×─×─ + ─×─×─×─+……
2 3 3 5 3 5 7 3 5 7 9
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <math.h>
#include <stdio.h>
double fun(double eps)
{ double s,t; int n=1;
s=0.0;
/************found************/
t=0;
while( t>eps)
{ s+=t;
t=t * n/(2*n+1);
n++;
}
/************found************/
return(s);
}
main()
{ double x;
printf("\nPlease enter a precision,"); scanf("%lf",&x);
printf("\neps=%lf,Pi=%lf\n\n",x,fun(x));
}
11、给定程序MODI1.C中函数fun的功能是:找出一个大于形参m且紧随m的素数,并作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
int fun(int m)
{ int i,k ;
for (i = m + 1 ; ; i++) {
for (k = 2 ; k < i ; k++)
/**************found**************/
if (i % k != 0)
break ;
/**************found**************/
if (k < i)
return(i);
}
}
void main()
{
int n ;
n = fun(20) ;
printf("n=%d\n",n) ;
}
12、给定程序MODI1.C中函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。例如,当a所指字符串中的内容为"abcdefg",b所指字符串中的内容为"1234"时,c所指数组中的内容应该为"a4b3c2d1efg";而当a所指字符串中的内容为"1234",b所指字符串中的内容为"abcdefg"时,c所指数组中的内容应该为"1g2f3e4dcba"。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <string.h>
void fun( char *a,char *b,char *c )
{
int i,j; char ch;
i = 0; j = strlen(b)-1;
/************found************/
while ( i > j )
{ ch = b[i]; b[i] = b[j]; b[j] = ch;
i++; j--;
}
while ( *a || *b ) {
/************found************/
If ( *a )
{ *c = *a; c++; a++; }
if ( *b )
{ *c = *b; c++; b++; }
}
*c = 0;
}
main()
{
char s1[100],s2[100],t[200];
printf("\nEnter s1 string,");scanf("%s",s1);
printf("\nEnter s2 string,");scanf("%s",s2);
fun( s1,s2,t );
printf("\nThe result is,%s\n",t );
}
13、给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为:7654321时,t中的数为:642。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
/************found************/
void fun (long s,long t)
{ long sl=10;
s /= 10;
*t = s % 10;
/************found************/
while ( s < 0)
{ s = s/100;
*t = s%10*sl + *t;
sl = sl * 10;
}
}
main()
{ long s,t;
printf("\nPlease enter s:"); scanf("%ld",&s);
fun(s,&t);
printf("The result is,%ld\n",t);
}
14、给定程序MODI1.C中函数fun的功能是:计算小于形参k的最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
int fun( int k )
{ int m=0,mc=0,j ;
while ((k >= 2) && (mc < 10))
{
/************found************/
if ((k%13 = 0) || (k%17 = 0))
{ m = m+ k; mc++; }
k--;
}
return m;
/************found************/
_____
main ( )
{
printf("%d\n",fun (500));
}
15、给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <stdlib.h>
typedef struct aa
{ int data;
struct aa *next;
} NODE;
fun ( NODE *h )
{ int max=-1;
NODE *p;
/***********found**********/
p=h ;
while(p)
{ if(p->data>max )
max=p->data;
/***********found**********/
p=h->next ;
}
return max;
}
outresult(int s,FILE *pf)
{ fprintf(pf,"\nThe max in link,%d\n",s);}
NODE *creatlink(int n,int m)
{ NODE *h,*p,*s,*q;
int i,x;
h=p=(NODE *)malloc(sizeof(NODE));h->data=9999;
for(i=1; i<=n; i++)
{ s=(NODE *)malloc(sizeof(NODE));
s->data=rand()%m; s->next=p->next;
p->next=s; p=p->next;
}
p->next=NULL;
return h;
}
outlink(NODE *h,FILE *pf)
{ NODE *p;
p=h->next;
fprintf(pf,"\nTHE LIST,\n\n HEAD ");
while(p)
{ fprintf(pf,"->%d ",p->data); p=p->next; }
fprintf(pf,"\n");
}
main()
{ NODE *head; int m;
head=creatlink(12,100);
outlink(head,stdout);
m=fun(head);
printf("\nTHE RESULT,\n"); outresult(m,stdout);
}
16、给定程序MODI1.C中函数fun的功能是:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h>
#include <string.h>
#define N 5
#define M 81
/**********found**********/
fun(char (*sq)[M])
{ int i; char *sp;
sp=sq[0];
for(i=0;i<N;i++)
if(strlen( sp)<strlen(sq[i]))
sp=sq[i] ;
/**********found**********/
return sq;
}
main()
{ char str[N][M],*longest; int i;
printf("Enter %d lines,\n",N);
for(i=0; i<N; i++) gets(str[i]);
printf("\nThe N string,\n",N);
for(i=0; i<N; i++) puts(str[i]);
longest=fun(str);
printf("\nThe longest string,\n"); puts(longest);
}
17、给定程序MODI1.C的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。
例如,若输入:I am a student to take the examination.,
则应输出:I Am A Student To Take The Examination.。
请改正程序中的错误,使程序能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include <ctype.h>
#include <ctype.h>
#include <string.h>
/************found************/
include <stdio.h>
/************found************/
upfst ( char p )
{ int k=0;
for ( ; *p; p++ )
if ( k )
{ if ( *p == ' ' ) k = 0; }
else if ( *p != ' ' )
{ k = 1; *p = toupper( *p ); }
}
main( )
{ char chrstr[81];
printf( "\nPlease enter an English text line," ); gets( chrstr );
printf( "\n\nBefore changing:\n %s",chrstr );
upfst( chrstr );
printf( "\nAfter changing:\n %s\n",chrstr );
}
18、给定程序MODI1.C中函数 fun 的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。
例如,若输入 8 名学生的成绩:80.5 60 72 90.5 98 51.5 88 64则低于平均分的学生人数为,4 (平均分为:75.5625 )。
请改正程序中的错误,使它能统计出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#define N 20
int fun ( float *s,int n,float *aver )
{ float ave,t = 0.0 ;
int count = 0,k,i ;
for ( k = 0 ; k < n ; k++ )
/**************found**************/
t = s[k] ;
ave = t / n ;
for ( i = 0 ; i < n ; i++ )
if ( s[ i ] < ave ) count++ ;
/**************found**************/
*aver = Ave ;
return count ;
}
main()
{ float s[30],aver ;
int m,i ;
printf ( "\nPlease enter m," ) ; scanf ("%d",&m ) ;
printf ( "\nPlease enter %d mark,\n ",m ) ;
for( i = 0 ; i < m ; i++ ) scanf ( "%f",s + i ) ;
printf( "\nThe number of students,%d \n",fun ( s,m,&aver ) );
printf( "Ave = %f\n",aver ) ;
}
19、给定程序MODI1.C中函数fun的功能是:从整数1到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定,函数中a1放个位数,a2放十位数。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h>
fun( int *b )
{ int k,a1,a2,i=0;
for(k=10; k<=55; k++) {
/************found************/
a2=k/1O;
a1=k-a2*10;
if((k%3==0 && a2==5)||(k%3==0 && a1==5))
{ b[i]=k; i++; }
}
/************found************/
return k;
}
main( )
{ int a[100],k,m;
m=fun( a );
printf("The result is,\n");
for(k=0; k<m; k++) printf("%4d",a[k]); printf("\n");
}
20、给定程序MODI1.C中函数fun的功能是,交换主函数中两个变量的值。例如,若变量a中的值原为8,b中的值为3。程序运行后a中的值为3,b中的值为8。
请改正程序中的错误,使它能计算出正确的结果。
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
/*********found**********/
int fun(int x,int y)
{
int t;
/*********found**********/
t=x;x=y;y=t;
}
main()
{
int a,b;
a=8;b=3;
fun(&a,&b);
printf("%d,%d\n",a,b);
}
21、给定程序MODI1.C中fun函数的功能是:求出以下分数序列的前n项之和。
2 3 5 8 13 21
┄┄,┄┄,┄┄,┄┄,┄┄,┄┄,……
1 2 3 5 8 13
和值通过函数值返回main函数。
例如,若 n = 5,则应输出,8.391667。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
/**************found**************/
fun (int n )
{ int a = 2,b = 1,c,k ;
double s=0.0 ;
for ( k = 1; k <= n; k++ )
{ s = s + 1.0 * a / b ;
/**************found**************/
c = a; a += b; b += c;
}
return(s) ;
}
main( )
{ int n = 5 ;
printf( "\nThe value of function is,%lf\n",fun ( n ) ) ;
}
22、给定程序MODI1.C中函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序。然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中,……。待排序的字符串已在主函数中赋予。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h>
#include <string.h>
#define N 80
void insert(char *aa)
{ int i,j,n; char ch;
/**********found**********/
n=strlen[ aa ];
for( i=1; i<n ;i++ ) {
/**********found**********/
c=aa[i];
j=i-1;
while ((j>=0) && ( ch<aa[j] ))
{ aa[j+1]=aa[j];
j--;
}
aa[j+1]=ch;
}
}
main( )
{ char a[N]="QWERTYUIOPASDFGHJKLMNBVCXZ";
int i ;
printf ("The original string,%s\n",a);
insert(a) ;
printf("The string after sorting,%s\n\n",a );
}
23、给定程序MODI1.C中函数fun的功能是:应用递归算法求形参a的平方根。求平方根的迭代公式如下:
1 a
x1 = ─ ( x0 + ─ )
2 x0
例如,a为2时,平方根值为:1.414214。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h>
#include <math.h>
/**********found**********/
double fun(double a,dounle x0)
{ double x1,y;
x1=(x0+ a/x0)/2.0;
/**********found**********/
if( fabs(x1-xo)>0.00001 )
y=fun(a,x1);
else y=x1;
return y;
}
main( )
{ double x;
printf("Enter x,"); scanf("%lf",&x);
printf("The square root of %lf is %lf\n",x,fun(x,1.0));
}
24、给定程序MODI1.C中函数 fun 的功能是:统计字符串中各元音字母(即:A、E、I、O、U)的个数。注意:字母不分大、小写。
例如:若输入:THIs is a boot,则输出应该是:1、0、2、2、0。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
fun ( char *s,int num[5] )
{ int k,i=5;
for ( k = 0; k<i; k++ )
/**********found**********/
num[i]=0;
for (; *s; s++)
{ i = -1;
/**********found**********/
switch ( s )
{ case 'a',case 'A',{i=0; break;}
case 'e',case 'E',{i=1; break;}
case 'i',case 'I',{i=2; break;}
case 'o',case 'O',{i=3; break;}
case 'u',case 'U',{i=4; break;}
}
if (i >= 0)
num[i]++;
}
}
main( )
{ char s1[81]; int num1[5],i;
printf( "\nPlease enter a string," ); gets( s1 );
fun ( s1,num1 );
for ( i=0; i < 5; i++ ) printf ("%d ",num1[i]); printf ("\n");
}
25、给定程序MODI1.C中函数 fun 的功能是:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。
例如,当s所指字符串为:"ABCD" 时,则t所指字符串中的内容应为:"ABCDDCBA"。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <string.h>
/************found************/
void fun (char s,char t)
{
int i,d;
d = strlen(s);
for (i = 0; i<d; i++) t[i] = s[i];
for (i = 0; i<d; i++) t[d+i] = s[d-1-i];
/************found************/
t[2*d-1] = '\0';
}
main()
{
char s[100],t[100];
printf("\nPlease enter string S:"); scanf("%s",s);
fun(s,t);
printf("\nThe result is,%s\n",t);
}
26、给定程序MODI1.C中函数 fun 的功能是,将十进制正整数m转换成k(2≤k≤9)进制数,并按高位到低位顺序输出。
例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。
请改正 fun 函数中的错误,使它能得出正确的结果。
注意:不要改动 main 函数。不得增行或删行,也不得更改程序的结构!
#include <conio.h>
#include <stdio.h>
void fun( int m,int k )
{
int aa[20],i;
for( i = 0; m; i++ )
{
/**********found**********/
aa[i] = m/k;
m /= k;
}
for( ; i; i-- )
/**********found**********/
printf( "%d",aa[ i ] );
}
main()
{
int b,n;
printf( "\nPlease enter a number and a base:\n" );
scanf( "%d %d",&n,&b );
fun( n,b );
printf("\n");
}
27、给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点 (不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <stdlib.h>
typedef struct aa
{ int data; struct aa *next; }NODE;
int fun(NODE *h)
{ int sum = 0 ;
NODE *p;
/***********found**********/
p=h;
while(p)
{ if(p->data%2==0)
sum +=p->data;
/***********found**********/
p=h->next;
}
return sum;
}
NODE *creatlink(int n)
{ NODE *h,*p,*s,*q;
int i,x;
h=p=(NODE *)malloc(sizeof(NODE));
for(i=1; i<=n; i++)
{ s=(NODE *)malloc(sizeof(NODE));
s->data=rand()%16;
s->next=p->next;
p->next=s;
p=p->next;
}
p->next=NULL;
return h;
}
outlink(NODE *h,FILE *pf)
{ NODE *p;
p = h->next;
fprintf(pf,"\n\nTHE LIST,\n\n HEAD " );
while(p)
{ fprintf(pf,"->%d ",p->data ); p=p->next; }
fprintf (pf,"\n");
}
outresult(int s,FILE *pf)
{ fprintf(pf,"\nThe sum of even numbers,%d\n",s);}
main()
{ NODE *head; int even;
head=creatlink(12);
head->data=9000;
outlink(head,stdout);
even=fun(head);
printf("\nThe result,\n"); outresult(even,stdout);
}
28、给定程序MODI1.C中函数fun的功能是,对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <alloc.h>
#include <string.h>
#define N 10
typedef struct ss
{ char num[10];
int s;
} STU;
STU *fun(STU a[],int m)
{ STU b[N],*t;
int i,j,k;
/**********found**********/
t=(STU *)calloc(sizeof(STU),m)
for(i=0; i<N; i++) b[i]=a[i];
for(k=0; k<m; k++)
{ for(i=j=0; i<N; i++)
if(b[i].s > b[j].s) j=i;
/**********found**********/
t(k)=b(j);
b[j].s=0;
}
return t;
}
outresult(STU a[],FILE *pf)
{ int i;
for(i=0; i<N; i++)
fprintf(pf,"No = %s Mark = %d\n",a[i].num,a[i].s);
fprintf(pf,"\n\n");
}
main()
{ STU a[N]={ {"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},
{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71} };
STU *pOrder;
int i,m;
printf("***** The Original data *****\n");
outresult(a,stdout);
printf("\nGive the number of the students who have better score,");
scanf("%d",&m);
while( m>10 )
{ printf("\nGive the number of the students who have better score,");
scanf("%d",&m);
}
pOrder=fun(a,m);
printf("***** THE RESULT *****\n");
printf("The top,\n");
for(i=0; i<m; i++)
printf(" %s %d\n",pOrder[i].num,pOrder[i].s);
free(pOrder);
}
29、给定程序MODI1.C中函数 fun 的功能是:判断一个整数是否是素数,若是返回1,否则返回0。
在main()函数中,若fun返回1输出YES,若fun返回0输出NO!。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数。不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
int fun ( int m )
{ int k = 2;
while ( k <= m && (m%k))
/************found************/
k++
/************found************/
if (m = k )
return 1;
else return 0;
}
main( )
{ int n;
printf( "\nPlease enter n," ); scanf( "%d",&n );
if ( fun ( n ) ) printf( "YES\n" );
else printf( "NO!\n" );
}
30、给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。
请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。
注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <stdlib.h>
typedef struct aa
{ int data;
struct aa *next;
} NODE;
NODE *Creatlink(int n,int m)
{ NODE *h=NULL,*p,*s;
int i;
/**********found***********/
p=(NODE )malloc(sizeof(NODE));
h=p;
p->next=NULL;
for(i=1; i<=n; i++)
{ s=(NODE *)malloc(sizeof(NODE));
s->data=rand()%m; s->next=p->next;
p->next=s; p=p->next;
}
/**********found***********/
return p;
}
outlink(NODE *h)
{ NODE *p;
p=h->next;
printf("\n\nTHE LIST,\n\n HEAD ");
while(p)
{ printf("->%d ",p->data);
p=p->next;
}
printf("\n");
}
main()
{ NODE *head;
head=Creatlink(8,22);
outlink(head);
}
31、给定程序MODI1.C中函数fun的功能是:根据整型形参n,计算如下公式的值。
例如,若 n=10,则应输出,0.617977。
请改正程序中的语法错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
/************found************/
int fun ( int n )
{ float A=1; int i;
/************found************/
for (i=2; i<n; i++)
A = 1.0/(1+A);
return A ;
}
main( )
{ int n ;
printf("\nPlease enter n,") ;
scanf("%d",&n ) ;
printf("A%d=%f\n",n,fun(n) ) ;
}
32、给定程序MODI1.C中函数fun的功能是,依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
void fun(char *s)
{ int i,j;
for(i=0,j=0; s[i]!='\0'; i++)
if(s[i]>='0' && s[i]<='9')
/**********found**********/
s[j]=s[i];
/**********found**********/
s[j]="\0";
}
main()
{ char item[80];
printf("\nEnter a string,");gets(item);
printf("\n\nThe string is,\"%s\"\n",item);
fun(item);
printf("\n\nThe string of changing is,\"%s\"\n",item );
}
33、假定整数数列中的数不重复,并存放在数组中。给定程序MODI1.C中函数fun的功能是:删除数列中值为x的元素。n中存放的是数列中元素的个数。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h>
#define N 20
fun(int *a,int n,int x)
{ int p=0,i;
a[n]=x;
while( x!=a[p] )
p=p+1;
/**********found**********/
if(P==n) return -1;
else
{ for(i=p;i<n;i++)
/**********found**********/
a[i+1]=a[i];
return n-1;
}
}
main()
{ int w[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i;
n=10;
printf("The original data,\n");
for(i=0;i<n;i++) printf("%5d",w[i]);
printf("\nInput x (to delete),"); scanf("%d",&x);
printf("Delete,%d\n",x);
n=fun(w,n,x);
if ( n==-1 ) printf("***Not be found!***\n\n");
else
{ printf("The data after deleted:\n");
for(i=0;i<n;i++) printf("%5d",w[i]);printf("\n\n");
}
}
34、已知一个数列从第0项开始的前三项分别为0,0,1,以后的各项都是其相邻的前三项之和。给定程序MODI1.C中函数fun的功能是:计算并输出该数列前n项的平方根之和。n的值通过形参传入。
例如,当n=10时,程序的输出结果应为:23.197745。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <math.h>
/************found************/
fun(int n)
{ double sum,s0,s1,s2,s; int k;
sum = 1.0;
if (n <= 2) sum = 0.0;
s0 = 0.0; s1 = 0.0; s2 = 1.0;
for (k = 4; k <= n; k++)
{ s = s0 + s1 + s2;
sum += sqrt(s);
s0 = s1; s1 = s2; s2 = s;
}
/************found************/
return sum
}
main ( )
{ int n;
printf("Input N=");
scanf("%d",&n);
printf("%f\n",fun(n) );
}
35、给定程序MODI1.C中函数 fun 的功能是:将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。
例如,当s所指字符串中的内容为:"abcdabfabc",t1所指子串中的内容为:"ab",t2所指子串中的内容为:"99"时,结果,在w所指的数组中的内容应为:"abcdabf99c"。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <string.h>
int fun (char *s,char *t1,char *t2,char *w)
{
int i; char *p,*r,*a;
strcpy( w,s );
/************found************/
while ( w )
{ p = w; r = t1;
while ( *r )
/************found************/
IF ( *r == *p )
{ r++; p++; }
else break;
if ( *r == '\0' ) a = w;
w++;
}
r = t2;
while ( *r ){ *a = *r; a++; r++; }
}
main()
{
char s[100],t1[100],t2[100],w[100];
printf("\nPlease enter string S:"); scanf("%s",s);
printf("\nPlease enter substring t1:"); scanf("%s",t1);
printf("\nPlease enter substring t2:"); scanf("%s",t2);
if ( strlen(t1)==strlen(t2) )
{ fun( s,t1,t2,w);
printf("\nThe result is,%s\n",w);
}
else printf("\nError,strlen(t1) != strlen(t2)\n");
}
36、给定程序MODI1.C中函数 fun 的功能是:求出以下分数序列的前n项之和。和值通过函数值返回到main函数。
2 3 5 8 13 21
┄┄,┄┄,┄┄,┄┄,┄┄,┄┄,……
1 2 3 5 8 13
例如,若n = 5,则应输出:8.391667。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
/************found************/
void fun ( int n )
{ int a,b,c,k; double s;
s = 0.0; a = 2; b = 1;
for ( k = 1; k <= n; k++ ) {
/************found************/
s = s + (Double)a / b;
c = a; a = a + b; b = c;
}
return s;
}
main( )
{ int n = 5;
printf( "\nThe value of function is,%lf\n",fun ( n ) );
}
37、给定程序MODI1.C中函数 fun 的功能是:计算n!。
例如,给n输入5,则输出120.000000。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
double fun ( int n )
{ double result = 1.0 ;
/************found************/
if n = = 0
return 1.0 ;
while( n >1 && n < 170 )
/************found************/
result *= n--
return result ;
}
main ( )
{ int n ;
printf("Input N:") ;
scanf("%d",&n) ;
printf("\n\n%d! =%lf\n\n",n,fun(n)) ;
}
38、给定程序MODI1.C中函数fun的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串的后面。
例如:当s所指的字符串为:"ABCDE"时,
则t所指的字符串应为:"EDCBAABCDE"。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <string.h>
void fun (char *s,char *t)
{
/************found************/
int i;
sl = strlen(s);
for (i=0; i<sl; i++)
/************found************/
t[i] = s[sl-i];
for (i=0; i<sl; i++)
t[sl+i] = s[i];
t[2*sl] = '\0';
}
main()
{ char s[100],t[100];
printf("\nPlease enter string s:"); scanf("%s",s);
fun(s,t);
printf("The result is,%s\n",t);
}
39、给定程序MODI1.C中fun函数的功能是,根据整型形参m,计算如下公式的值。
1 1 1
t = 1 - ----- - ----- - …… - -----
2 3 m
例如,若主函数中输入5,则应输出 -0.283333。
请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
double fun( int m )
{
double t = 1.0;
int i;
for( i = 2; i <= m; i++ )
/**********found**********/
t = 1.0-1 /i;
/**********found**********/
_______;
}
main()
{
int m ;
printf( "\nPlease enter 1 integer numbers:\n" );
scanf( "%d",&m);
printf( "\n\nThe result is %lf\n",fun( m ) );
}
40、给定程序MODI1.C中函数fun的功能是:根据形参m的值(2≤m≤9〕,在m行m列的二维数组中存放如下所示规律的数据,由main函数输出。
例如,若输入 2 | 若输入 4
则输出,| 则输出:
1 2 | 1 2 3 4
2 4 | 2 4 6 8
| 3 6 9 12
| 4 8 12 16
请改正程序函数中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <conio.h>
#define M 10
int a[M][M] = {0} ;
/**************found**************/
void fun(int **a,int m)
{ int j,k ;
for (j = 0 ; j < m ; j++ )
for (k = 0 ; k < m ; k++ )
/**************found**************/
a[j][k] = k * j ;
}
main ( )
{ int i,j,n ;
printf ( " Enter n," ) ; scanf ("%d",&n ) ;
fun ( a,n ) ;
for ( i = 0 ; i < n ; i++)
{ for (j = 0 ; j < n ; j++)
printf ( "%4d",a[i][j] ) ;
printf ( "\n" ) ;
}
}
41、给定程序MODI1.C中函数fun的功能是,先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之和。
请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
int fun()
{
int a[3][3],sum;
int i,j;
/*********found**********/
______;
for (i=0;i<3;i++)
{ for (j=0;j<3;j++)
/*********found**********/
scanf("%d",a[i][j]);
}
for (i=0;i<3;i++)
sum=sum+a[i][i];
printf("Sum=%d\n",sum);
}
main()
{
fun();
}
42、给定程序MODI1.C中函数fun的功能是,将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换为a),其它字符不变。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <ctype.h>
void fun (char *s)
{
/**********found***********/
while(*s!='@')
{ if(*s>='A' & *s<='Z' || *s>='a' && *s<='z')
{ if(*s=='Z') *s='A';
else if(*s=='z') *s='a';
else *s += 1;
}
/**********found***********/
(*s)++;
}
}
main()
{ char s[80];
printf("\n Enter a string with length < 80.,\n\n "); gets(s);
printf("\n The string,\n\n "); puts(s);
fun ( s );
printf ("\n\n The Cords,\n\n "); puts(s);
}
43、给定程序MODI1.C中函数fun的功能是,计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <string.h>
#define N 80
int fun(char *s,char *t)
{ int n;
char *p,*r;
n=0;
while ( *s )
{ p=s;
/*********found**********/
r=p;
while(*r)
if(*r==*p) { r++; p++; }
else break;
/*********found**********/
if(*r= 0)
n++;
s++;
}
return n;
}
main()
{ char a[N],b[N]; int m;
printf("\nPlease enter string a,"); gets(a);
printf("\nPlease enter substring b,"); gets( b );
m=fun(a,b);
printf("\nThe result is,m = %d\n",m);
}
44、给定程序MODI1.C中函数fun的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为:87653142时,t中的数为:7531。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
void fun (long s,long *t)
{ int d;
long sl=1;
/************found************/
t = 0;
while ( s > 0)
{ d = s%10;
/************found************/
if (d%2 == 0)
{ *t = d * sl + *t;
sl *= 10;
}
s /= 10;
}
}
main()
{ long s,t;
clrscr();
printf("\nPlease enter s:"); scanf("%ld",&s);
fun(s,&t);
printf("The result is,%ld\n",t);
}
45、给定程序MODI1.C中函数fun的功能是:求三个数的最小公倍数。
例如,给主函数中的变量x1、x2、x3分别输入15 11 2,
则输出结果应当是:330。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h>
/************found************/
fun(int x,y,z )
{ int j,t,n,m;
j = 1 ;
t=j%x;
m=j%y ;
n=j%z;
while(t!=0||m!=0||n!=0)
{ j = j+1;
t=j%x;
m=j%y;
n=j%z;
}
/************found************/
return i;
}
main( )
{ int x1,x2,x3,j ;
printf("Input x1 x2 x3,"); scanf("%d%d%d",&x1,&x2,&x3);
printf("x1=%d,x2=%d,x3=%d \n",x1,x2,x3);
j=fun(x1,x2,x3);
printf("The minimal common multiple is,%d\n",j);
}
46、给定程序MODI1.C中函数fun的功能是:输出M行M列整数方阵,然后求两条对角线上元素之和,返回此和数。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#define M 5
/************found************/
int fun(int n,int xx[][])
{ int i,j,sum=0;
printf( "\nThe %d x %d matrix:\n",M,M );
for( i = 0; i < M; i++ )
{ for( j = 0; j < M; j++ )
/************found************/
printf( "%f ",xx[i][j] );
printf("\n");
}
for( i = 0 ; i < n ; i++ )
sum += xx[i][i]+xx[i][ n-i-1 ];
return( sum );
}
main( )
{ int aa[M][M]={{1,2,3,4,5},{4,3,2,1,0},
{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};
printf ( "\nThe sum of all elements on 2 diagnals is %d.",fun( M,aa ));
}
47、给定程序MODI1.C中函数fun的功能是,在字符串的最前端加入n个*号,形成新串,并且覆盖原串。
注意,字符串的长度最长允许为79。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <string.h>
void fun ( char s[],int n )
{
char a[80],*p;
int i;
/**********found***********/
s=p;
for(i=0; i<n; i++) a[i]='*';
do
{ a[i]=*p;
i++;
}
/**********found***********/
while(*p++);
a[i]=0;
strcpy(s,a);
}
main()
{ int n; char s[80];
printf("\nEnter a string,"); gets(s);
printf("\nThe string \"%s\"\n",s);
printf("\nEnter n ( number of * ),"); scanf("%d",&n);
fun(s,n);
printf("\nThe string after insert,\"%s\" \n",s);
}
48、给定程序MODI1.C中函数 fun 的功能是:求S的值。
例如,当k为10时,函数值应为:1.533852。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <math.h>
/************found************/
void fun( int k )
{ int n; float s,w,p,q;
n = 1;
s = 1.0;
while ( n <= k )
{ w = 2.0 * n;
p = w - 1.0;
q = w + 1.0;
s = s * w *w/p/q;
n++;
}
/************found************/
return s
}
main ( )
{
printf("%f\n",fun (10));
}
49、给定程序MODI1.C中函数 fun 的功能是:由形参给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实数个数。
例如,n=8时,输入:193.199,195.673,195.757,196.051,
196.092,196.596,196.579,196.763
所得平均值为:195.838745,在平均值以上的实数个数应为:5
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
int fun(float x[],int n)
{
/************found************/
int j,c=0,double xa=0.0;
for (j=0; j<n; j++ )
xa += x[j]/n;
printf("ave =%f\n",xa);
for (j=0; j<n; j++ )
/************found************/
if (x[j] => xa)
c++;
return c;
}
main ( )
{ float x[100] = {193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763};
printf("%d\n",fun (x,8));
}
50、给定程序MODI1.C中函数fun的功能是,将s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指数组中(规定第一个字符放在第0位中)。
例如,字符串中的数据为,AABBCCDDEEFF,
则输出应当是:ABBCDDEFF。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <string.h>
#define N 80
void fun(char *s,char t[])
{ int i,j=0;
for(i=0; i<strlen(s); i++)
/***********found**********/
if(i%2 && s[i]%2==0)
t[j++]=s[i];
/***********found**********/
t[i]='\0';
}
main()
{ char s[N],t[N];
printf("\nPlease enter string s,"); gets(s);
fun(s,t);
printf("\nThe result is,%s\n",t);
}