1、三级信息管理技术机试-216 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:设 A,B,C 为三个不为零的正整数,计算并输出下列不定方程组解的个数 cnt 以及满足此条件的所有 A,B,C 之和 sum。不定方程组为:A+B+C=13A-C=5请编写函数 countValue()实现程序的要求,最后调用函数 writeDat()把结果 cnt 和 sum 输出到文件out.dat 中。试题源程序#includestdiohvoid WriteDat();int cnt,sum:void countvalue()void
2、main()cnt=sum=0:countvalue();printf(“cnt=%d/n“,cnt);printf(“sum=%d/n“,sum);WriteDat();void WriteDat()FILE*fp;fp=fopen(“outdat“,“w“);fprintf(fp,“%d/n%d/n“,cnt,sum);fclose(fp);(分数:100.00)_三级信息管理技术机试-216 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:设 A,B,C 为三个不为零的正整数,计算并输出下列不定方程组解的个数 cnt
3、以及满足此条件的所有 A,B,C 之和 sum。不定方程组为:A+B+C=13A-C=5请编写函数 countValue()实现程序的要求,最后调用函数 writeDat()把结果 cnt 和 sum 输出到文件out.dat 中。试题源程序#includestdiohvoid WriteDat();int cnt,sum:void countvalue()void main()cnt=sum=0:countvalue();printf(“cnt=%d/n“,cnt);printf(“sum=%d/n“,sum);WriteDat();void WriteDat()FILE*fp;fp=fop
4、en(“outdat“,“w“);fprintf(fp,“%d/n%d/n“,cnt,sum);fclose(fp);(分数:100.00)_正确答案:(void countvalue()int a:for(a=6;a13;a+)if(18-2*a0)cnt+:sum+=13:)解析:解析 本题主要考查的是解方程问题。本题的难点和解题的关键在于分析题目,对于给定的方程组变形得到 B=18-2*A,C=A-50,因此 A 从 6 开始可能满足方程,而由第一个方程知道 A 不可能大于13,因此我们可以用 for 循环内嵌 if 语句来解出方程,如果 B0,那么此时的 A 就满足该方程组,cnt增 1,并且由第一个方程知道有一组解 sum 的值增加 13。