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取余则可得到由十位数和个位数组成的新数。
人人范文网 m.inrrp.com.cn 手机版