2015年春季学期题号—亠二三四总分分数《C语言程序设计》试卷A一. 选择(每道小题2分,合计30分)1、 以下选项中合法的标识符是( )A) 1_1 B)l-1 C)_ll D)l_ _2、 若函数中有定义语句:int瓦,则( )A)系统将自动给k赋初值0 B)这时k中的值无定义C)系统将自动给k赋初值-1 D)这时k中无任何值3、 以下选项中,能用作数据常量的是( )A)oll5 B)0118 C) D)115L4、 设有定义:int x=2;,以下表达式中,值不为6的是( )A)x*二x+1 B)X++, 2*x C)x*二(1+x) D)2*x, x+=25、 程序段:int x=12; double y=; printf (〃%d%8. 6f〃,x, y);的输出结果是(A) B) 12 3. 141593 C) 12, D)6、 把2进制数转化为十进制数为( )A)1083 B)1084 C)1085 D)10867、 以下是if语句的基本形式:if (表达式)语句其中〃表达式〃( )A)必须是逻辑表达式 B)必须是关系表达式0必须是逻辑表达式或关系表达式 D)可以是任意合法的表达式8、 有以下程序#include <>main (){ int x:scanf(〃%d〃, &x);if(x<=3);elseif (x! = 10)程序运行时,输入的值在哪个范围才会有输出结果(A)不等于10的整数C)大于3或等于10的整数9、有以下程序#include <> main (){ intififB)大于3且不等于10的整数D)小于3的整数a=l, b=2, c=3, d=0;(a==l && b++==2)(b!=2||c—!=3)printf (〃%d\n〃,x) ;}printf (〃%d, %d, %d\n〃,a, b, c); else printf (〃%d, %d, %d\n〃, a, b, c);else printf (〃%d, %d, %d\n〃, a, b, c) ;}程序运行后输出结果是( )。
A) 1, 2, 3 B) 1, 3, 2C) 1, 3, 3 D)3, 2, 110、 以下程序段中的变量已正确定义 for(i=0:i<4;i++, i++)for (k=l;k<3;k++); printf(〃*〃);程序段的输出结果是( )D)*A)******** B)**** C)**11、 写出下面程序的输出结果()#include <> int main (void) {int i, j, x, y, m;int a[3] [3] = {{1,3, 12}, {14,9,1}, {9,0,4}}; m=a[0] [0];x=0; y=0;for (i=0;i<3:i++)for (j=0;j<3;j++) if (m int main(void) tint a[] = {l,4, 7, 10, 13};int y二 1, i,*p; p二&a[l]: for(i=0;i<3;i++) y+二*(p+i);printf (〃y二%d\n〃,y);return 0;}A) 22 B) 24 C)26 D)2813、 写出下面程序的运行结果() long fib (int n){if (n>2):retuirn (f ib (n-1) +f ib (n-2)); else return (2):}#include <> int main(void){printf (z/%ld\n/z, fib (3));:return 0;}A) 3 B)4 C)5 D)614、 写出下面程序的运行结果()#include <> int f(int a) {int b=0:static c=3;a=c++, b++;:retuirn a;} int main(void) {int a=2, i, k;for(i=0;i<2;i++) k=f (a++):printf (〃%d\n〃,k);return 0:}A) 2 B)3 C)4 D)515、 写出下面程序的输出结果() #include 〃“int main(void) {struet student { char name[10];float kl:float k2:}a[2] = {{/Zzhang/Z, 100, 70}, {〃wang〃,70, 80}}, *p二a;printf (〃\nname: %s total=%f/z, p->name, a[l]. kl+a[l]. k2)::retuirn 0:}A) name: wang total= B) name: wang total=C) name: zhang total= D) name: zhang total=二、填空(每题2分,共计20分)1、 将下列不同进制的数从大到小排列:(0) 、(208) 、(322)、2 10 8 (A8) 。
16 2、 把十进制数121转化为2进制数为 3、 定义int a二20;,写出执行下列语句后a的值:a/=a+a 4、 下面程序的输出结果为 include<>int main(void){int a=3, b=4, c=5, k;k=c>a>b && c||c/b;printf (〃%d\n〃, k); :retuirn 0:}5、 下面程序的输出结果为 include<>int main(void){int k=5, b=2:k*二b+++3;printf (〃%d\n〃, k);:retuirn 0:}6、 下面程序的输出结果为 include <>int main(void){int a, b, k;k= (a=2, b=5, a>b?a++:b++, a+b);printf (〃%d\n〃, k);:retuirn 0:}7、 下面程序的输出结果为 include<>int main(void){int a=2,b=3: f loat x=, y=, k;k= (float) (a+b) /2+ (int) x% (int) y: printf (〃%. 2f\n〃, k);:retuirn 0:}8、 下面程序的输出结果为 #include<>int main(void){int a, b, c, d, x;a=c=0: b=x=l: d=10:if(a) d二d-5;else if(!b)if(!c) x=5:else x=25:printf (〃d=%d, x=%d\n/z, d, x);:retuirn 0:}9、 下面程序的输出结果为 #include<>int main(void){int a=0:if (a=l) a+=10;printf (〃a=%d〃, a);:retuirn 0:}10、 下面程序的输出结果为 #include<>int main(void){int x=l, y=0, a=0, b=0;switch(x){ case 1:switch(y){ case 0: a++; break:case 1: b++; break:}case 2: a++;b++; break:case 3: a++;b++;} printf (〃\na=%d, b=%d〃, a, b);:retuirn 0:}三、简答(1、2题每题5分,3题10分,共计20分)1、简述程序设计的一般过程。
2、简述软件开发的生命周期3、通过你对本课程的学习,谈谈你对C语言的理解四、编程(1、2题每题7分,3、4题每题8分,共计30分)1、编程解决货物征税问题价格在1万元以上的征5%, 5000元以上1万元以下的 征3%, 1000元以上5000以下的征2%, 1000元以下的免税,读入货物价格,计算并 输出税金2、编程实现下面的功能:输出「500中能被7除余5、被5除余3、被3除余2的数(每 行输出5个数)3、编程实现下面的功能:把从键盘输入的字符串逆序存放并输出4、编写程序实现下面的功能:主函数接受键盘输入的年、月、日,通过子函数计 算该日是该年的第几日2015学年春季学期《C语言程序设计》试卷A答案一、选择(每题2分,共计30分)1—5 CBDDA 6—10 CDBCD 11—15 AABCD二、填空(每题2分,共计20分)1、 (0) 、 (322) 、 (208) 、 (A8) 2、 11110012 8 10 163、0 4、1 5、25 6、8 7、8、d二10, x=l 9、a=ll 10、a=2, b=l三、简答(1、2题每题5分,3题10分,共计20分)1、简述程序设计的一般过程。
1) 分析问题提出解决问题的可行方案2) 确定算法针对提出的可行方案确定解决问题、完成任务的每一个细节步骤3) 编程使用程序设计语言把上述算法严格地描述出来(即写成程序),输入 到计算机里并存盘4) 在计算机上运行并调试这个程序如果在运行过程中发现了错误,就仔细分 析出错的原因,然后更正错误再次运行该程序,直到程序准确无误并得到正确 的输出结果为止5) 总结写出书面报告2、 简述软件开发的生命周期一个软件的生存周期包括以下几个阶段:(1) 问题定义与需求分析2) 总体设计(或称概要设计)3) 详细设计4) 编写程序和单元测试5) 综合测试和确定运行6) 系统维护3、 通过你对本课程的学习,谈谈你对C语言的理解C语言是一种成功的系统描述语言,用C语言开发的UNIX操作系统就是一个成功的范例;同时C语言又是一种通用的程序设计语言,在国际上广泛流行世 界上很多著名的计算公司都成功的开发了不同版本的C语言,很多优秀的应用程 序也都是用C语言开发的,它是一种很有发展前途的高级程序设计语言1) c是中级语言它把高级语言的基本结构和语句与低级语言的实用性结合起 来C语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机 最基本的工作单元。
2) C是结构式语言结构式语言的显著特点是代码及数据的分隔化,即程序的 各个部分除了必要的信息交流外彼此独立这种结构化方式可使程序层次清晰, 便于使用、维护以及调试C语言是以函数形式提供给用户的,这些函数可方便 的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化3) C语言功能齐全具有各种各样的数据类型,并引入了指针概念,可使程序 效率更高另外C语言也具有强大的图形功能,支持多种显示器和驱动器而且 计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏4) C语言适用范围大适合于多种操作系统,如Windows. DOS、UNIX等等; 也适用于多种机型C语言对编写需要硬件进行操作的场合,明显优于其它解释型 高级语言,有一些大型应用软件也是用C语言编写的C语言具有绘图能力强,可 移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形 和动画它是数值计算的高级语言5) C语言文件由数据序列组成,可以构成二进制文件或文本文件四、编程(1、2题每题7分,3、4题每题8分,共计30分)1、编程解决货物征税问题价格在1万元以上的征5 %, 5000元以上1万元以下的 征3%, 1000元以上5000以下的征2%, 1000元以下的免税,读入货物价格,计算并 输出税金。
include 〃“int main (){ int m;f loat s, t;scanf (〃%d〃, &m);if (m <= 1000)t 二 0;else if (m >1000 && m <= 5000)t 二(m — 1000) * .02;else if (m > 5000 && m <= 10000)t = 80 + (m - 5000) * . 03 ;else if (m > 10000)t 二 80 + 150 + (m - 10000) * . 05;printf(〃t 二 %f\n〃,t);}2、 编程实现下面的功能:输出「500中能被7除余5、被5除余3、被3除余2的数(每 行输出5个数)include 〃“int main (){ int i 二 1;int j = 0;wh订e (i <= 500){ if(i % 7 = 5 && i % 5 = 3 && i % 3 ==2){ printf (〃%d “,i);j++;}if (j % 5 == 0 && j != 0){ printf (〃\n〃);j = 0; }i++;}:return 0:}3、 编程实现下面的功能:把从键盘输入的字符串逆序存放并输出。
include 〃“int main (){ int i, j:char ch:char* pResuIt 二 NULL;char* pTemp = NULL;char* per = NULL;pResuIt 二(char*)malloc(sizeof(char));pResult [0] = '\0';while ((ch = get char ()) != ' \n'){ pTemp = (char*)malloc(2 * sizeof(char)):pTemp[0] = ch:pTemp [1] =,\0,;pResuIt 二 strcat(pResuIt, pTemp);free (pTemp); }per = (char*)malloc((st:rlen(pResuIt) + 1) * sizeof (char)):for(i = strlen(pResuIt) - 1, j = 0; i >= 0; i—){ per[j] = pResuIt [i];j++; }per[j]二,\0,;printf (〃%s\n〃,per)::return 0:}4、编写程序实现下面的功能:主函数接受键盘输入的年、月、日,通过子函数计 算该日是该年的第几日。
include 〃“int counter (int year, int month, int date){ int i;int aYear[12] = {31, 2& 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}:int LeapYear[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}:int resuIt 二 0;if (((year % 100) != 0 && (year % 4) ==0) || (year % 400) == 0){ for(i = 0; i < (month - 1); i++){resuIt += LeapYear[i]: }resuIt += date;else{ for(i = 0; i < (month - 1); i++){resuIt += aYear[i]: }resuIt += date;}:return resuIt;}int main (){ int year, month, date;int resuIt;printf ("please insert the date(yyyy mm dd):〃);scanf (〃%d%d%d〃,&year, &month, &date):resuIt 二 counter (year, month, date);pri ntf(〃t his is the %d (th) day in t his year. \n/z, resu It); :return 0:。