1、二级 C 语言-330 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充 main()函数,该函数的功能是:计算两个自然数 num1 和 num2(num210000)之间所有数的和(num1 和 num2 从键盘输入)。 例如,当 num1=1,num2=100 时,sum=5050;当 num1=50,num2=500 时,sum=124025。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在 main()函数的横线上填入所编写的若干表达式或语句。 试题程序: #includestdli
2、b.h #includestdio.h #includeconio.h void main() int num1, num2; long sum; 1; system(“CLS“); printf(“/nInput num1, num2/n“); scanf(“%d, %d“, while(num1=num2) 2; num1+; printf(“sum=% 3/n“, sum); (分数:30.00)二、程序改错题(总题数:1,分数:40.00)2.下列给定程序中,函数 proc()的功能是:计算 S=f(-n)+f(-n+1)+f(0)+f(1)+f(2)+f(n)的值。 例如,当 n 为
3、 10 时,函数值应为 22.550361。f(x)函数定义如下: (分数:40.00)_三、程序设计题(总题数:1,分数:30.00)3.请编一个函数 void proc(int ttMN,int ppN),tt 指向一个 M 行 N 列的二维数组,求出二维数组每行中最大元素,并依次放入 pp 所指的一维数组中。二维数组中的数已在主函数中给出。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所编写的若干语句。 试题程序: #includestdio.h #includeconio.h #includestdlib.h #de
4、fine M 3 #define N 4 void proc(int ttMN, int ppN) void main() int strMN=34, 56, 84, 78, 23, 84, 93, 12, 28, 38, 39, 93; int pN, i, j, k; system(“CLS“); printf(“The riginal data is: /n“); for(i=0; iM; i+) for(j=0; jN; j+) printf(“%6d“, strij); printf(“/n“); proc(str, p); printf(“/nThe result is: /n“)
5、; for(k=0; kM; k+) printf(“%4d“, pk); printf(“/n“); (分数:30.00)_二级 C 语言-330 (1)答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充 main()函数,该函数的功能是:计算两个自然数 num1 和 num2(num210000)之间所有数的和(num1 和 num2 从键盘输入)。 例如,当 num1=1,num2=100 时,sum=5050;当 num1=50,num2=500 时,sum=124025。 注意:部分源程序给出如下。 请勿改动 main()函数
6、和其他函数中的任何内容,仅在 main()函数的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includestdio.h #includeconio.h void main() int num1, num2; long sum; 1; system(“CLS“); printf(“/nInput num1, num2/n“); scanf(“%d, %d“, while(num1=num2) 2; num1+; printf(“sum=% 3/n“, sum); (分数:30.00)解析:sum=0 sum+=num1 1d解析 由函数 proc()可
7、知,变量 sum 中存放两个自然数之间所有数的和,其初始值为 0,因此,第一处填“sum=0”;变量 num1 表示两个自然数之间所有实数的和,因此,第二处填“sum+=num1”;printf 为格式化输出,变量 sum 定义为长整型,因此,第三处填“1d”。二、程序改错题(总题数:1,分数:40.00)2.下列给定程序中,函数 proc()的功能是:计算 S=f(-n)+f(-n+1)+f(0)+f(1)+f(2)+f(n)的值。 例如,当 n 为 10 时,函数值应为 22.550361。f(x)函数定义如下: (分数:40.00)_正确答案:()解析:(1)错误:f(double x)
8、 正确:double f(double x) (2)错误:return s 正确:return s; 解析 由函数 proc()中的函数调用以及函数 f 中的 return 语句,可知函数 f 的返回值类型为 double,因此,“f(double x)”应改为“double f(double x)”;根据 C 语言语法规则,每一条语句都必须以分号结束,因此,应在语句“return s”后加上分号。三、程序设计题(总题数:1,分数:30.00)3.请编一个函数 void proc(int ttMN,int ppN),tt 指向一个 M 行 N 列的二维数组,求出二维数组每行中最大元素,并依次放
9、入 pp 所指的一维数组中。二维数组中的数已在主函数中给出。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所编写的若干语句。 试题程序: #includestdio.h #includeconio.h #includestdlib.h #define M 3 #define N 4 void proc(int ttMN, int ppN) void main() int strMN=34, 56, 84, 78, 23, 84, 93, 12, 28, 38, 39, 93; int pN, i, j, k; system(
10、“CLS“); printf(“The riginal data is: /n“); for(i=0; iM; i+) for(j=0; jN; j+) printf(“%6d“, strij); printf(“/n“); proc(str, p); printf(“/nThe result is: /n“); for(k=0; kM; k+) printf(“%4d“, pk); printf(“/n“); (分数:30.00)_正确答案:()解析:void proc(int ttMN, int ppN) int i, j, max; for(i=0; iM; i+) /i 控制行的下标 max=tti0; /max 存放每行中最大的数 for(j=0; jN; j+) if(ttijmax) max=ttij; ppi=max; /把大的数放到 pp 数组中,通过 i 来控制 pp 数组的下标 解析 按照题目中要求,求出二维数组每行中最大元素,并依次放入 pp 所指的一维数组中。首先比较二维数组中每一行的元素,然后找出每一行中的最大元素,放入一维数组 pp 中,最后返回到主函数当中。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1