求C语言改错题

题目要求简单点,对象是C语言入门者
别忘了把答案也发下(我也是入门的- -)

题量多多益善,满意的我加分~

1,给定程序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 fun (int m)*/
{ double y = 0, d ;
int i ;
/************found************/
for( i = 100, i <= m, i += 100 )/*改为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 ) ) ;
}
2,给定程序MODI1.C中 fun 函数的功能是:分别统计字符串中大写字母和小写字母的个数。
例如, 给字符串 s 输入:AAaaBBb123CCccccd,则应输出结果:upper = 6, lower = 8。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
/**********found**********/
void fun ( char *s, int a, int b )/*改为void fun ( char *s, int *a, int *b */)

{
while ( *s )
{ if ( *s >= 'A' && *s <= 'Z' )
/**********found**********/
*a=a+1 ;/*改为*a=*a+1 ;*/
if ( *s >= 'a' && *s <= 'z' )
/**********found**********/
*b=b+1;/*改为 *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 );
}
3,给定程序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++)/*for(i = 2 ; i <= m ; i++)
*/
/**************found**************/
y -= 1 /(i * i) ;/* y -= 1.0 /(i * i) ;
*/
return( y ) ;
}
main( )
{ int n = 5 ;
printf( "\nThe result is %lf\n", fun ( n ) ) ;
}
4,给定程序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];/* s[j++]=s[i];*/
/************found************/
s[i]='\0';/* s[j]='\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");
}
可以了吧
温馨提示:答案为网友推荐,仅供参考
第2个回答  2007-10-01
这里每天都有很多人来找错,你可以拿来自己改改看,还可以帮助别人。

诸如这样的题目,
C语言改错
C语言错哪了
C语言有什么问题
……
第3个回答  2007-10-01
自己写一个,然后自己找错误
相似回答