当前位置:文档之家› C语言 期末考试试题(含答案)

C语言 期末考试试题(含答案)

西北农林科技大学信息工程学院西北农林科技大学本科课程考试试卷2015∼2016学年第1学期《C 语言程序设计》课程闭卷专业班级:命题教师:耿楠审题教师:学生姓名:学号:考试成绩:编程题一、..........................................................[15分]编写程序,提示用户输入一个整数n ,n 的取值范围为[1,10000],编程实现平方值小于等于n 的所有奇数的平方值之和。

例如,如果用户输入n 为100,那么小于100的所有奇数平方值为:1,9,25,49,81,它们的和为sum=165(1+9+25+49+81=165)。

如果输入的n 取值范围不在[1,10000],那么输出结果为“invalid number ”以提示用户输入了非法数据后退出程序。

输入样例:100输出样例:sum =165输入样例:10001输出样例:invalid number 评分标准:(1)(2分)输入的n 不在[1,10000]范围时,输出正确。

(2)(8分)for 循环正确。

(3)(3分)正确求和。

(4)(2分)输出语句正确。

测试用例:测试用例输出结果0invalid number 10001invalid number 10000sum =1666501sum =1-1invalid number2015-2016学年第1学期《C 语言程序设计》期末试题示例代码:1#include <stdio.h>2#include <stdlib.h>34int main ()5{6int i,n,sum =0;7scanf("%d",&n);89if (n >10000||n <=0)10{11printf("invalid number \n ");12return 1;13}1415for (i =1;i *i <=n;i ++)16{17if (i %2!=0)18{19sum =sum +i *i;20}21}2223printf("sum=%d \n ",sum);2425return 0;26}编程题二、..........................................................[15分]从键盘上输入10个整型数,利用函数查找并输出最大元素和最小元素,要求使用一维数组和一级指针编程实现。

提示:(1)在主函数main 中输入10个整型数,并声明两个整型变量分别用于存储数组的最大及最小元素值。

(2)编程过程中,请使用以下函数原型,务必要注意的是不得改变该函数原西北农林科技大学信息工程学院型的任何内容!void find_max_min (const int *pa,int n,int *plargest,int *psmallest);//----------------------------------------------------------------//功能:求取一维数组pa 中的最大元素及最小元素//参数:[int *pa]---一维数组a 的首地址(一级指针)//[int n]---数组元素个数//[int *plargest ]---指向最大元素的指针(一级指针)//[int *psmallest]---指向最小元素的指针(一级指针)//----------------------------------------------------------------(3)结果输出,请使用代码:printf("Largest:%d,Smallest:%d \n ",…);//请注意添加需要的代码输入:10个整数输出:最大元素以及最小元素输入样例:38438846595147649输出样例:Largest :84,Smallest :4评分标准:(1)(10分)正确使用和实现void find_max_min (const int *pa,int n,int *plargest,int *psmallest);函数。

(2)(5分)正确实现int main()函数并结果正确。

测试用例:测试用例输出结果38438846595147649Largest :84,Smallest :412345678910Largest :10,Smallest :11828907690232-1048523699Largest :1828,Smallest :-1045404547872112184784546Largest :787,Smallest :6785433-180773588812Largest :88,Smallest :-182015-2016学年第1学期《C 语言程序设计》期末试题示例代码:1#include <stdio.h>2#include <stdlib.h>34void find_max_min (const int *pa,int n,int *plargest,int *psmallest);56int main (void )7{8int a[10];9int largest =0,smallest =0,i;1011for (i =0;i <sizeof (a)/sizeof (a[0]);i ++)12scanf("%d",&a[i]);13find_max_min(a,sizeof (a)/sizeof (a[0]),&largest,&smallest);14printf("Largest:%d,Smallest:%d \n ",largest,smallest);15return 0;16}1718void find_max_min (const int *pa,int n,int *plargest,int *psmallest)19{20const int *p,*p_l,*p_sl;2122for (p =p_l =p_sl =pa;p <pa +n;p ++)23{24if (*p >*p_l)25{26p_l =p;27}28if (*p <*p_sl)29{30p_sl =p;31}32}3334*plargest =*p_l;35*psmallest =*p_sl;36}西北农林科技大学信息工程学院编程题三、..........................................................[15分]从键盘上输入两个向量,每个向量包含5个双精度浮点数(double),计算这两个向量的内积,并输出该计算结果,要求使用函数调用和数组编程实现。

提示:(1)向量内积计算公式为:若有向量a =(a 1,a 2,...,a n )和b =(b 1,b 2,...,b n ),则a 与b 的内积为a 1∗b 1+a 2∗b 2+...+a n ∗b n 。

(2)实现输入函数,该函数用于数组元素的输入,要求函数原型为:void input_vector (double a[],int n);(3)实现内积计算函数,要求函数原型为:double inner_product (double a[],double b[],int n);(4)main 函数的部分代码如下,请根据注释对省略号处的代码进行补充。

int main (void ){double a[N],b[N];printf("Enter vector a:");/*此处调用input_vector 函数实现向量a 的输入*/···printf("Enter vector b:");/*此处调用input_vector 函数实现向量b 的输入*/···/*此处调用inner_product 内积计算函数实现内积计算并输出*/printf("Inner product of a and b is:%1f.\n ",···);return 0;}输入:两个包含有5个元素的向量输出:向量的内积2015-2016学年第1学期《C 语言程序设计》期末试题输入样例:Enter vector a :2.304.503.2Enter vector b :02.803.60输出样例:Inner product of a and b is :0.000000.评分标准:(1)(5分)正确使用和实现void input_vector (double a[],int n);函数。

(2)(10分)正确使用和实现double inner_product (double a[],doubleb[],int n);函数。

测试用例:测试用例输出结果2.304.503.20.00000002.803.602.30.94.50.993.246.6430003.052.84.563.64.0722.310.94.550.9934.261937.16400039.052.00846.5613.644.071234535.00000054321示例代码:1#include <stdio.h>2#include <stdlib.h>3#define N 545void input_vector (double a[],int n);6double inner_product (double a[],double b[],int n);78int main (void )9{西北农林科技大学信息工程学院10double a[N],b[N];11printf("Enter vector a:");12input_vector(a,N);13printf("Enter vector b:");14input_vector(b,N);15printf("Inner product of a and b is:%1f.\n ",inner_product(a,b,N));1617return 0;18}1920void input_vector (double a[],int n)21{22int i;23for (i =0;i <n;i ++)24{25scanf("%lf",&a[i]);26}27}2829double inner_product (double a[],double b[],int n)30{31int i;32double s =0;33for (i =0;i <n;i ++)34{35s +=(a[i]*b[i]);36}37return s;38}编程题四、..........................................................[15分]从键盘上输入5条学生信息记录,利用函数指针实现这5个学生成绩的升序和降序排列,并输出排序后的结果,要求使用函数调用、函数指针以及结构体数组编程实现。

相关主题