改错题

2020-03-02 00:07:51 来源:范文大全收藏下载本文

改错题

1、下列给定程序中,函数fun()的功能是:从n个学生的成绩中统计出高于平均分的学生人数,人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如输入8名学生的成绩: 85 65.5 69 95.5 87 55 62.5 75 则高于平均分的学生人数为4(平均分为74.312500)。 请改正程序中的错误,使它能得到正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:

#include #include #define N 20 int fun(float *s, int n,float *aver) {

/**************found**********************/

int ave ,t=0;

int count=0,k,i;

for(k=0;k

t+=s[k];

ave=t/n;

for(i=0;i

/***************found***********************/

if(s[i]

count++;

/************found***********************/

aver=ave;

return count; } main() {

float s[30],aver;

int m,i;

clrscr();

printf(\"\\nPlease enter m: \");

scanf(\"%d\",&m);

printf(\"\\nPlease enter %d mark :\\n\",m);

for(i=0;i

scanf(\"%f\",s+i);

printf(\"\\nThe number of students :%d\\n\",fun(s,m,&aver));

printf(\"Ave=%f\\n\",aver); }

(1)错误:int ave ,t=0;

正确:float ave ,t=0.0; (2)错误:if(s[i]

正确:if(s[i]>ave) (3)错误:aver=ave;

正确:*aver=ave;

【解析】错误1:ave和t分别用来存放成绩的平均值和总分,应为实型数。

错误2:根据题意,找出高于平均分的数,所以此处的关系运算符应为\">\" 错误3:aver是指针,而ave是一个数,不能将一个数赋值给一个指针,而要用符号\'*\'。

2、下列给定的程序中,函数fun()的功能是:计算并输出k以内最大的6个能被7或11整除的自然数之和。K的值由主函数传入,若k的值为500,则函数的值为2925。

请改正程序中的错误,使它能得到正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include int fun(int k) { int m=0,mc=0, j; /**********************found***********************/ while(k>=2)&&(mc

(1)错误:while(k>=2)&&(mc=2)&&(mc

错误2:if语句的判断条件应用关系运算符,而不是赋值运算符。 错误3:根据题意,将满足条件的数求累加和。

3、下列给定程序中,函数fun()的作用是:将字符串tt中的小写字母都改为对应的大写字母,其他字符不变。例如,若输入\"edS,dAd\",则输出\"EDS,DAD\"。

请改正程序中的错误,使它能得到正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:

#include #include #include

/*************found***********************/ char fun(char tt[]) { int i; for(i=0;tt[i];i++)

{

/**********************found***********************/

if((tt[i]>=\'A\')&&(tt[i]

tt[i]-=32;

} return(tt); } main() { int i; char tt[81]; clrscr(); printf(\"\\nPlease enter a string: \"); gets(tt); printf(\"\\nThe result string is: \\n%s\",fun(tt)); }

(1)错误:char fun(char tt[])

正确:char *fun(char tt[])

(2)错误:if((tt[i]>=\'A\')&&(tt[i]

正确:if((tt[i]>=\'a\')&&(tt[i]

【解析】错误1:函数的返回值是字符串的首地址,是指针类型,所以在函数名前要加\'*\'号。

错误2:题目要求将小写字母改为大写字母,所以if语句的判断条件是小写字母。

4、下列给定程序中函数fun()的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。例如,当s中的数为4576235时,t中的数为4725。

请改正程序中的错误,使它能得到正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include /**********************found***********************/ int fun(long s,long *t) {

long s1=10;

*t=s%10;

while(s>0)

{

/**********************found***********************/

s=s%100;

*t=s%10*s1+*t;

s1=s1*10;

} } main() {

long s, t;

clrscr();

printf(\"\\nPlease enter s: \");

scanf(\"%ld\",&s);

fun(s,&t);

printf(\"The result is: %ld\\n \",t); }

答案及评析:

(1)错误:int fun(long s,long *t) 正确:void fun(long s,long *t) (2)错误:s=s%100; 正确:s=s/100; 【解析】错误1:函数由指针来完成参数的传递,所以没有返回值,应定义函数的类型为void。 错误2:此处要注意特殊运算符号\"%\"--取余和\"/\"--整除的区别。将一个数整除100则可得到由其百位数以上的数组成的新数字,将一个数整除100取余则可得到由十位数和个位数组成的新数。

改错题

改错题

改错题

改错题

改错题

改错题

改错题

改错题

改错题

改错题

《改错题.doc》
改错题
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文