C语言程序设计2013期末试题(含答案)
- 格式:doc
- 大小:131.00 KB
- 文档页数:11
C语言程序设计期末考试试题含答案第一部分:选择题(每题5分,共40分)1. 下列选项中,不是C语言基本数据类型的是:A. intB. floatC. doubleD. string答案:D2. 在C语言中,for循环和while循环的区别是:A. for循环适用于已知循环次数,while循环适用于未知循环次数B. for循环必须有循环条件,while循环可以没有循环条件C. for循环只能用于数字计算,while循环可以用于任意类型的循环D. for循环和while循环没有区别答案:A3. 下列哪个选项是合法的变量名:A. 123varB. _varD. %var答案:B4. 在C语言中,使用printf函数输出一个整数变量的值,应该使用下列哪个占位符:A. %fB. %cC. %dD. %s答案:C5. 下列代码中,输出的结果是什么:```cint a = 5;printf("%d\n", a++);printf("%d", a);```A. 6 5B. 6 6C. 5 6答案:A6. 下列哪个选项中的函数可以用来比较两个字符串是否相等:A. strcmpB. strcatC. strlenD. strcpy答案:A7. 当我们在编写C语言程序时,通常会将一些常用的函数或者代码片段写成一个个独立的文件,这些文件通常以什么扩展名来保存:A. .cB. .hC. .txtD. .exe答案:B8. 下列代码中,缺少的语句是什么:```cint a = 10;int b = 20;int c = a + b;```A. return c;B. printf("%d", c);C. break;D. continue答案:B第二部分:编程题(每题30分,共60分)题目1:编写一个C程序,实现求取一个整数数组中元素的平均值。
要求通过函数实现,函数原型为:float average(int arr[], int length),其中arr为整数数组的首地址,length为数组的长度。
四川大学期末考试试题(A卷)(2013——2014 学年第一学期)课程号:303066030课序号:课程名称:计算机基础及C程序设计语言任课教师:刘亚梅刘洋任瑞玲曾晓东余勤罗伟王茂宁王忠邓丽华成绩:适用专业年级:2012级学生人数:印题份数:学号:姓名:注:1试题字迹务必清晰,书写工整。
本题8 页,本页为第 1 页2 题间不留空,一般应题卷分开教务处试题编号:学号:姓名本题8 页,本页为第 2 页教务处试题编号:学号:姓名以下叙述中正确的是______。
A)在给s1和s2数组置初值时,系统会自动添加字符串结束符,故长度都为3B)由于s1数组中没有字符串结束符,长度不能确定;但s2数组中字符串长度为3C)由于s1和s2数组中都没有字符串结束符,故长度都不能确定D)以上说法都不对25.若有定义:int a=0, *p=&a;,则语句printf("%d\n",*p);的输出结果是______。
A)随机值B)0 C)a的地址D)p的地址26.下面程序段,输出*的个数是char *s="\tx++\016yz";for (;*s!='\0';s++) printf("*");A)4 B)9 C)7 D)1127.若有以下说明,且0≤i≤10,则对数组元素的错误引用是_______。
int a[ ]={1,2,3,4,5,6,7,8,9,10}, *p = a, i;A)p[i] B)a[p-a+i] C)p+i D)*(&a[i])本题8 页,本页为第 3 页教务处试题编号:学号:姓名void main(){int a[]={2,4,6,8,10}, y=0, x, *p;p=&a[1];for(x= 1; x<3; x++)y += p[x];printf("%d\n",y);}A)10 B)11 C)14 D)15 30.以下程序运行后的输出结果是______。
C语言考试期末考试复习题及答案一、选择题(1) 一个C语言程序总是从(C )开始执行A) 书写顺序的第一个函数B) 书写顺序的第一条执行语句C) 主函数main()D) 不确定(2) 设int x=3,y=4,z=5,则下列表达式中的值为0的是( D )A) ‘x’&&’y’B) x||y+z&&y-z C) x<=yD) !((x<y)&&!z||1)(3) 执行以下程序段后,i的值是 ( C )int i=10。
switch(i+1){ case 10: i++。
break。
case 11: ++i。
case 12: ++i。
break。
default : i=i+1。
}A) 11 B) 13 C) 12 D) 14(4) 语句while(!e)。
中的条件!e等价于 ( A )A) e==0 B)e!=1 C) e!=0D) 运行时出错(5) 用 int a[4]={1,2}。
对数组进行初始化后,数组元素a[3]的值是 ( B )A) 随机值B) 0 C) 1D) F(6) 在执行char str[10]=“china\0”; strlen(str)的结果是( A )A)5 B) 6 D) 7 D 9(7) 若有定义,char *p=”computer”。
则语句printf(“%c”,*(p+2))运行结果是 ( B )A) 随机值B) m C)o D) omputer(8) 在以下函数调用语句中fun1(x,10,(x,10),fun2(y,10,(y,10)))。
函数fun1参数的个数为 ( B )A) 8 B) 4C) 5 D) 编译出错(9) 在说明一个结构体变量时系统分配给它的存储空间是( D )A)该结构体中第一个成员变量所需存储空间 B) 该结构体中最后一个成员变量所需存储空间C)该结构体中占用最大存储空间的成员变量所需存储空间D) 该结构体中所有成员变量所需存储空间的总和1. 用C语言编写的代码程序( B )A)可立即执行 B)是一个源程序 C)经过编译即可执行 D)经过编译解释才能执行2. C语言中用于结构化程序设计的三种基本结构是( A )A)顺序结构、选择结构、循环结构 B)if、switch、break C)for、while、do-while D)if、for、continue3. 以下定义语句中正确的是( C )A)char a='A'b='B'。
C语言期末考试题(含答案)《C语言程序设计》期末试卷一、单项选择题(10x2’=20’)1、以下叙述正确的是()A)C语言的源程序不必通过编译就可以直接运行。
B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令。
C)C语言源程序经编译形成的二进制代码可以直接运行。
D)C 语言中的函数不可以单独进行编译。
2、一个C语言的源程序中()A)必须有一个主函数B)可能有多个主函数C)必须有除主函数外其它函数D)可以没有主函数3、以下不能定义为用户标识符的是()A)scanfB)VoidC)_3comD)int4、若以下选项中的变量已正确定义,则正确的赋值语句是()A)x1=26.8%3;B)1+2=x2;C)x3=0x12;D)x4=1+2=3;15、设有定义:floata=2,b=4,h=3;以下C语言表达式中与代数式(a b)*h的计2算结果不相符的是().C)for、while、do-whileD)if、for、continue7.在while(!x)语句中的!x与下面条件表达式等价的是()A) x!=0B) x==1C)x!=1D)x==08、有以下程序:#include <XXX>void main(){int i=1,j=1,k=2;if( (j++||k++)&&i++ )printf(“%d,%d,%d\n”,i,j,k);}执行后的输出结果是()A)1,1,2B)2,2,1C)2,2,2D)2,2,39、有以下程序:#include <XXX>void main(){int i,s=0;for(i=1;i<10;i+=2)s+=i+1;printf(“%d\n”,s);}程序执行后的输出结果是()A)自然数1~9的累加和B)自然数1~10的累加和C)自然数1~9中奇数之和D)自然数1~10中偶数之和10、有以下函数定义:void fun(int n,double x){……}若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是()A)fun(int y,double m);B)k=fun(10,12.5);C)fun(x,n);D)void fun(n,x);2、填空题(10x2’=20’)11、C言语描绘“x和y都大于或等于z”的表达式是:。
《C语言程序设计》2013至2014 学年度第 1 学期期末(A)卷(考生注意:考试时间为120分钟。
答案须写在答题纸上,并注明题号,考试结束后将试卷连同答题纸一齐交)一、单项选择题(每小题2分,共40分)1.在一个C语言程序中,有并且只能有一个( )函数。
A. main函数B.自定义函数C.外部函数D.内部函数2.一个C语言程序,总是从()函数开始执行。
A. main函数B.自定义函数C.外部函数D.内部函数3.下列标识符中,不能用作变量名的是( )。
A. _1234_B. _1_2C. int_2_D. 2_int_4.下列字符常量不合法的是( )。
A. ‘2’B. ‘\t’C. ‘ab’D. ‘ \n’5.执行以下语句后的输出结果为( )。
int x; float y; y=3.6; x=(int)y+10; printf(“x=%d,y=%f”,x,y);A. x=13.6,y=3.600000B. x=13,y=3.600000C. x=13,y=3D. x=13,y=3.66.以下哪种变量类型在C语言中不存在( )。
A. 整型变量B.实型变量C. 字符串变量D.字符变量7.设m=10,n=4,则赋值运算m%=n+1执行后m的值是( )。
A. 1B. 2C. 3D. 08.下面语句执行后输出结果为( )。
int x=10,y=3,z; printf(“%d\n”,z=(x%y,x/y));}A. 0B.1C. 3D. 49. 下面语句执行后输出结果为( )。
int x=10,y=10,z=10; printf(“%d,%d,%d ”,x++,--y,++z);}A. 10,10,10B. 10,9,11C. 9,10,11D. 11,10,910.以下选项中不是C语句的是( )。
A. {int i; i++; printf("%d\n", i); }B. ;C. a=5,c=10D. { ; }11.以下程序的输出结果是( )。
C语言程序设计期末考试试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 下列关于C语言函数的描述中,正确的是?A. 函数可以没有返回值B. 函数可以有多个返回值C. 函数可以没有参数D. 函数必须有参数答案:C3. 在C语言中,以下哪个运算符用于取地址?A. *B. &C. %D. #答案:B4. 下列关于数组的描述中,错误的是?A. 数组可以是多维的B. 数组的下标从0开始C. 数组的大小在编译时确定D. 数组可以动态分配答案:D5. C语言中,以下哪个关键字用于定义一个指针?A. intB. charC. *D. void答案:C6. 在C语言中,以下哪个关键字用于定义一个静态变量?A. staticB. externC. registerD. auto答案:A7. 下列关于C语言中文件操作的描述中,正确的是?A. 文件操作只能使用标准库函数B. 文件指针必须使用FILE类型C. 文件操作必须使用fclose函数关闭文件D. 文件操作不能使用缓冲区答案:B8. 在C语言中,以下哪个关键字用于定义一个宏?A. defineB. typedefC. enumD. struct答案:A9. 下列关于C语言中位运算的描述中,错误的是?A. & 表示按位与B. | 表示按位或C. ^ 表示按位异或D. ~ 表示按位取反答案:B10. 在C语言中,以下哪个关键字用于定义一个枚举类型?A. enumB. structC. unionD. typedef答案:A二、填空题(每题2分,共20分)1. 在C语言中,一个整型变量占用的内存空间通常是______个字节。
答案:42. C语言中,使用______关键字可以定义一个无限循环。
答案:while3. C语言中,数组的元素默认初始化为______。
C语言程序设计期末考试试题及其答案一、单项选择题(本大题共20题,每题2 分,共40分)1、以下不是C语言的特点的是( )A、C语言简洁、紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件进行操作D、C语言移植性好2、以下不正确的C语言标识符是( )A、ABCB、abcC、a_bcD、ab.c3、一个C语言程序是由( )A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( )A、有零个或多个输入B、有零个或多个输出C、有穷性D、可行性5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( )A、intB、floatC、doubleD、不确定6、在C语言中,char型数据在内存中的存储形式是( )A、补码B、反码C、源码D、ASCII码7、有如下程序,输入数据:12345M678<cR>后(<CR>表示回车),x的值是( ) 。
#include<stdio.h>main(){int x;float y;scanf("%3d%f",&x,&y);}A、12345B、123C、45D、3458、若有以下定义int a,b; float x,则正确的赋值语句是( )A、a=1,b=2B、b++;C、a=b=5D、b=int(x);9、以下程序的执行结果是( )#include<stdio.h>{int i=10,j=10;printf("%d,%d\n",++i,j--);}A、11,10B、9,10C、11,9D、10,910、巳知字母A的ASCII码是65,以下程序的执行结果是( )#include<stdio.h>main(){char c1='A',c2='Y';printf("%d,%d\n",c1,c2);A、A,YB、65,65C、65,90D、65,8911、下列运算符中优先级最高的是( )A、<B、十C、%D、!=12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。
理论考试(120分钟)一、单项选择题(在每小题的4个备选答案中,选出一个最佳答案,共15小题;每小题2分,共30分)1.一个C程序的执行是从( A)A.本程序的main函数开始,到main函数结束B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数结束D.本程序文件的第一个函数开始,到本程序main函数结束2.已知int x=10,y=20,z=30; 以下语句执行后x,y,z的值是( B) if (x>y) z=x; x=y;y=z;A. 10,20,30B. 20,30,30C. 20,30,10D. 20,30,20 3.int a=1,b=2,x=3; 表达式:x*=a+b计算后x的值为:( B )A. 5B. 9C. 3D. 64.下列选项,在C语言中能作为合法标识符的是( D)A. %xB. a+bC. 2_int_12_D. int_2_5.#include<stdio.h> (A)void main(){int sum,pad;sum=pad=5;pad=sum++;pad++;++pad;printf("%d %d\n",pad, sum);}A.7 6B. 6 5C. 7 5D. 6 6 6.若有说明:int a[10];则对a 数组元素的正确引用是( D )A. a[10]B. a[3, 5]C. a(5)D. a[10-10] 7.请读程序#include<stdio.h>#define MUL(x,y) (x)*yvoid main(){ int a=3, b=4, c;c=MUL(a++, b++);printf("%d\n", c);}上面程序的输出结果是(A)。
A. 12B. 15C. 20D. 168.若用数组名作为函数调用的实参,传递给形参的是数组的( A )A. 数组的首地址B. 数组第一个元素的值C. 数组中全部元素的值D. 数组元素的个数9.阅读以下程序void main(){ int a=5,b=0,c=1;if(a=b+c) printf(“***\n”);else printf(“$$$\n”);}以上程序( C)A. 语法有错不能通过编译B. 可以通过编译但不能通过连接C. 输出***D. 输出$$$10.下列关于函数定义正确的是( D )A. fun(int x,y){ int z;return z;}B. void fun(int x,int y){ return x+y;}C. fun(x,y){int x,y;double z;z=x+y;return z;}D. double fun(int x,int y) { double z;z=x+y;return z;}11.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(B )A. 地址传递B. 单向值传递C. 由实参传给形参,再由形参传回实参D. 传递方式由用户指定12.具有相同基类型的指针变量P和数组Y,下列写法中不合法的是( D ) A.P = Y B.*P = Y[i]C.P = &Y[i] D.P = &Y13.设x和y均为int型变量,则下列语句:x+=y; y=x-y; x- =y;的功能是(D ) A.把x和y按从大到小排列。
C语言考试期末考试复习题及答案一、选择题(1) 一个C语言程序总是从(C )开始执行A) 书写顺序的第一个函数B) 书写顺序的第一条执行语句C) 主函数main()D) 不确定(2) 设int x=3,y=4,z=5,则下列表达式中的值为0的是 ( D )A) ‘x’&&’y’B) x||y+z&&y-z C) x<=yD) !((x<y)&&!z||1)(3) 执行以下程序段后,i的值是 ( C )int i=10。
switch(i+1){ case 10: i++。
break。
case 11: ++i。
case 12: ++i。
break。
default : i=i+1。
}A) 11 B) 13 C) 12 D) 14(4) 语句while(!e)。
中的条件!e等价于 ( A )A) e==0 B)e!=1 C) e!=0D) 运行时出错(5) 用 int a[4]={1,2}。
对数组进行初始化后,数组元素a[3]的值是 ( B )A) 随机值B) 0 C) 1 D) F(6) 在执行char str[10]=“china\0”; strlen(str)的结果是 ( A )A)5 B) 6 D) 7 D 9(7) 若有定义,char *p=”computer”。
则语句printf(“%c”,*(p+2))运行结果是( B )A) 随机值B) m C)o D) omputer(8) 在以下函数调用语句中fun1(x,10,(x,10),fun2(y,10,(y,10)))。
函数fun1参数的个数为 ( B )A) 8 B) 4C) 5 D) 编译出错(9) 在说明一个结构体变量时系统分配给它的存储空间是( D )A)该结构体中第一个成员变量所需存储空间 B) 该结构体中最后一个成员变量所需存储空间C)该结构体中占用最大存储空间的成员变量所需存储空间D) 该结构体中所有成员变量所需存储空间的总和1. 用C语言编写的代码程序( B )A)可立即执行 B)是一个源程序 C)经过编译即可执行 D)经过编译解释才能执行2. C语言中用于结构化程序设计的三种基本结构是( A )A)顺序结构、选择结构、循环结构 B)if、switch、break C)for、while、do-while D)if、for、continue3. 以下定义语句中正确的是( C )A)char a='A'b='B'。
C语言程序设计期末考试试题含答案一、选择题(每题 3 分,共 30 分)1、以下选项中,不是 C 语言关键字的是()A intB floatC classD char答案:C解析:在 C 语言中,class 不是关键字,int、float 和 char 都是常见的数据类型关键字。
2、以下变量定义中,正确的是()A int a=b=5;B char a='A';C float a=55, b=66;D double a; b;答案:C解析:A 选项中不能在定义时连续赋值;B 选项应该是 char a ='A';注意单引号;D 选项应该是 double a, b; 中间用逗号分隔。
3、以下程序段的输出结果是()```cint a = 5, b = 4, c = 6;if (a > b && a > c)printf("a 最大\n");else if (b > a && b > c)printf("b 最大\n");elseprintf("c 最大\n");```A a 最大B b 最大C c 最大D 编译错误答案:C解析:因为 5 不大于 6,所以执行 else 部分,输出“c 最大”。
4、以下循环语句执行的次数是()```cfor (int i = 0; i < 5; i++){printf("%d ", i);}```A 4 次B 5 次C 6 次D 无限次答案:B解析:从 0 到 4 ,一共 5 次。
5、以下数组定义中,正确的是()A int a5 ={1, 2, 3, 4, 5, 6};B int a ={1, 2, 3};C int a5 ={1, 2};D int a3 =(1, 2, 3);答案:B解析:A 选项数组长度为 5,却初始化了 6 个元素;C 选项只初始化了前两个元素,后面三个元素默认为 0;D 选项初始化方式错误,应该用花括号。
C语言程序设计(期末考试)选择题,每空一分(共80题)1.C语言程序是由()构成的。
A)一些可执行语言B)main函数C)函数(正确答案)D)包含文件中的第一个函数2.()是构成C语言程序的基本单位。
A、函数(正确答案)B、过程C、子程序D、子例程3.C语言程序从()开始执行。
A)程序中第一条可执行语句B)程序中第一个函数C)程序中的main函数(正确答案)D)包含文件中的第一个函数4.C语言程序从main()函数开始执行,所以这个函数要写在()。
A)程序文件的开始B)程序文件的最后C)它所调用的函数的前面D)程序文件的任何位置(正确答案)5、以下说法中正确的是()。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main()函数中定义C、C语言程序总是从main()函数开始执行(正确答案)D、C语言程序中的main()函数必须放在程序的开始部分6.下列方法中错误的是()。
A.主函数可以分为两个部分:主函数说明部分和主函数体。
B.主函数可以调用任何非主函数的其它函数。
C.任何非主函数可以调用其它任何非主函数。
D.程序可以从任何非主函数开始执行。
(正确答案)7.下列说法错误的是()A.C程序运行步骤是编辑、编译、连接、执行。
B.C语言的变量名必须用小写,常量用大写。
(正确答案)C.C语言的三种基本结构是顺序、选择、循环。
D.C程序一定由函数构成的。
8.下列关于C语言的说法错误的是()。
A.C程序的工作过程是编辑、编译、连接、运行B.C语言不区分大小写。
(正确答案)C.C程序的三种基本结构是顺序、选择、循环D.C程序从main函数开始执行9.VC默认的C语言源程序扩展名为.CPP,需经过()之后,生成.exe文件,才能运行。A)编辑、编译B)编辑、连接C)编译、连接(正确答案)D)编辑、改错10.下列说法中正确的是()。
A.由于C源程序是高级语言程序,因此一定要在VC软件中输入。
C语言程序设计期末考试试题含答案一、选择题(每题 2 分,共 40 分)1、以下选项中,不是 C 语言关键字的是()A intB floatC charD string答案:D解释:string 不是 C 语言的关键字,C 语言中表示字符串通常使用字符数组。
2、以下能正确表示八进制整数的是()A 0o123B 0123C 0x123D 123答案:B解释:在 C 语言中,八进制整数以数字 0 开头,所以 0123 是八进制整数。
3、以下变量定义中,合法的是()A int a=b=1;B char a='\0';C float 2a;D double a&;答案:B解释:A 选项中不能连续赋值;C 选项变量名不能以数字开头;D 选项变量名不能包含特殊字符&。
4、若有定义:int a=5, b=2; 则表达式 a/b 的值是()A 25B 2C 20D 3答案:B解释:C 语言中,两个整数相除结果为整数,舍去小数部分。
5、若有定义:int a5 ={1, 2, 3, 4, 5};则 a2的值是()A 2B 3C 4D 5答案:B解释:数组下标从 0 开始,所以 a2对应的值是 3 。
6、以下关于函数的叙述中,正确的是()A 函数可以嵌套定义B 函数可以嵌套调用C 函数可以没有返回值D 以上都不对答案:C解释:函数不能嵌套定义,但可以嵌套调用。
函数可以没有返回值,此时函数类型为 void 。
7、若有以下函数定义:```cint fun(int a, int b){return a + b;}```则调用 fun(1, 2)的返回值是()A 1B 2C 3D 4答案:C解释:函数 fun 实现了两个整数的相加,所以 fun(1, 2)的返回值是3 。
8、以下关于指针的叙述中,错误的是()A 指针可以指向变量B 指针可以指向数组C 指针可以指向函数D 指针不可以进行加减运算答案:D解释:指针可以进行加减运算,但运算的结果要根据指针所指向的数据类型来确定。
c语言程序设计期末试题A(含答案)一、单项选择题(选择一个最佳答案,每题2分,共20分)1.一个C程序的执行是从()。
A)本程序的main函数开始,到main函数结束B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D) 本程序文件的第一个函数开始,到本程序main函数结束2.下列选项中,不能用作标识符的是( )。
A)_1234_ B)_1_2 C) int_2_ D) 2_int_3。
以下定义语句中正确的是( )。
A) char a='A’b='B’; B)float a=b=10.0;C) int a=10,*b=&a;D)float *a,b=&a;4.设有以下定义:#define d 2int a=0; double b=1.25; char c=’A’;则下面语句中错误的是()。
A) a++; B)b++ C)c++;D)d++;5。
以下4个选项中,不能作为一条C语句的是( ).A) {;}B) a=0,b=0,c=0; C)if(a〉0); D) if(b==0) m=1;n=2;6。
有以下定义语句 double a,b; int w; long c;若各变量已正确赋值,则下列选项中正确的表达式是( )。
A)a=a+b=b++ B) w%(int)a+b)C) (c+w)%(int)a D)w=a==b;7。
设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是( )。
A)p=1; B)*q=2;C) q=p;D)*p=5;8。
设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是()。
A) scanf(“%d",pa) ; B) scanf(“%d”,a);C) scanf(“%d",&pa);D) scanf(“%d”,*pa);9。
2013年c语言期末考试试题及答案在2013年的C语言期末考试中,试题涵盖了C语言的基础知识、数据类型、控制结构、函数、数组、指针、结构体、文件操作等多个方面。
以下是部分试题及其答案,供参考:1. 请写出C语言中的基本数据类型,并说明它们各自的特点。
C语言中的基本数据类型包括整型(int)、字符型(char)、浮点型(float和double)。
整型用于存储整数,字符型用于存储单个字符,浮点型用于存储小数。
它们的特点分别是:整型占用的存储空间较小,但只能表示整数;字符型占用的存储空间最小,但只能表示单个字符;浮点型可以表示小数,但占用的存储空间较大。
2. 请写出C语言中的控制结构,并说明它们的功能。
C语言中的控制结构包括顺序结构、选择结构和循环结构。
顺序结构是按照代码的顺序依次执行;选择结构是根据条件判断执行不同的代码块,如if语句和switch语句;循环结构是重复执行某段代码,直到满足特定条件,如for循环、while循环和do-while循环。
3. 请写出C语言中函数的定义格式,并说明函数的作用。
函数的定义格式为:返回值类型函数名(参数列表){函数体}。
函数的作用是将一段代码封装成一个独立的模块,可以重复调用,提高代码的复用性和可读性。
4. 请写出C语言中数组的定义格式,并说明数组的特点。
数组的定义格式为:数据类型数组名[数组大小]。
数组的特点是可以存储多个相同类型的数据,并且可以通过下标访问和修改数组中的元素。
5. 请写出C语言中指针的定义格式,并说明指针的作用。
指针的定义格式为:*指针名 = &变量名。
指针的作用是存储变量的内存地址,可以通过指针间接访问和修改变量的值。
6. 请写出C语言中结构体的定义格式,并说明结构体的作用。
结构体的定义格式为:struct 结构体名 {成员列表};结构体变量名 = {成员1, 成员2, ...}。
结构体的作用是将多个不同类型的数据组合成一个整体,方便管理和使用。
__ _ _ _ _ _ _ _ _ _ _ _ _ _号学_ _ _ _ _ _ _ _ _ _ _ _ _ _ _名姓班_ _ _ _ _ _ _ _ _ _ _级_ _ _ _ _ _ _ _ _ _院学_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _四川师范大学计算机科学学院2012~2013学年度第二学期期末考试⋯C语言程序设计试卷试卷A⋯⋯⋯答卷说明:⋯1、本试卷共6页,答题纸3页,4个大题,35个小题,满分100分,⋯⋯120分钟完卷。
⋯⋯2、闭卷考试,所有的答案都一定写在答题纸上,判卷以答题纸上答案⋯为准。
⋯效3、本试卷合用于2011级1、2、3班。
⋯)(无号一二三四分分人⋯⋯⋯⋯题分数⋯⋯⋯⋯答得分卷人⋯⋯⋯⋯)内一、(在每小的四个答案中,出一个正确答案,并将正确答案的封(序号填在干的括号内。
每小1分,共20分)⋯⋯1、在C言中,以下符中合法的是()⋯线A).-int B).in1_3C).A_B!DD).const⋯⋯⋯2、不属于C言基本数据型的是()⋯A).int B).union C).charD).unsigned⋯封⋯⋯3、下边是宏定的描绘。
不正确的选项是()⋯⋯密A).宏不存在型,宏名无型,它的参数也无型)密B).宏替不占用运转(C).宏替不过字符串的代替⋯D).宏替先型,型一致才能够替⋯⋯⋯4、C言中,″\\xfds″在内存中占用的字数是()⋯⋯A).3B).4C).5D).6⋯⋯⋯5、intx;行printf(″n%x″,~x^x);的果是()⋯A).ffffffff B).ff C).0D).1⋯⋯6、于while句,的法是()A).用条件控制循体的行次数B).循体起码要行一次计算机科学学院C语言程序设计试卷A第1页(共8页)C).循环体有可能一次也不履行D).循环体中能够包括若干条语句7、履行以下语句后输出的结果是()inta=8,b=7,c=6;if(a<b)if(b>c){a=c;c=b;}printf("%d,%d,%d\n",a,b,c);A).6,7,7B).6,7,8C).8,7,6D).8,7,88、设inta=9,b=20;则printf(″%d,%dn″,a,----b);的输出结果是()A).9,19B).9,20C).10,19D).10,209、设staticcharx[]=″12345″,y[]={′10′;},那′么2′(,′)3′,′4′,′5′,′A).x数组的长度等于y数组的长度B).x数组的长度大于y数组的长度C).x数组的长度少于y数组的长度D).x数组与y数组的储存地区同样10、设inti,x[3][3]={1,2,3,4,5,6,7,8,9};则下边语句的输出结果是()for(i=0;i<3;i++)printf(″%d″,x[i][2-i]);A).147B).159C).357D).36911、履行完以下语句后,n的值是()intn;for(n=0;n<100;n=2*n+1);A).125B).126C).127D).12812、有以下语句:inta=6;a+=a-=a*a;printf(“%d输”出,a);结果()A).–132B).–60C).-24D).013、为了连结两个字符串s1与s2,应该使用()A).strcat(s1,s2)B).strcpy(s1,s2)C).strlen(s1,s2)D).strcmp(s1,s2)14、设inta,*p;则语句p=&a;中的运算符“&”的含义是()A).位与运算B).逻辑与运算C).取指针内容D).取变量地点15、下边输出的结果为()inta=13,b=64;printf(“n%d”,!a||(b>>3));A).13B).64C).1D).016、以下定义正确的选项是()A).enumt={a,b}x;B).enumt{1,2}x;C).enum{′+-′,}x;′D).enumt{a,b}x;17、设有定义:structu{inta[4];floatb[3];charc[16];}aa;计算机科学学院C语言程序设计试卷A第2页(共8页)⋯⋯_⋯__⋯_⋯__⋯__⋯__⋯_⋯__⋯__⋯号⋯学)_(_⋯_⋯__⋯__⋯__⋯_⋯__⋯__⋯_⋯名⋯姓⋯⋯)班封_(__⋯__⋯_⋯__⋯__⋯_⋯级⋯__⋯__⋯__⋯__⋯_⋯_院)密学_(_⋯__⋯__⋯__⋯_⋯__⋯__⋯__⋯_⋯__⋯⋯⋯printf(″%dn″,sizeof(aa));的出是()A).32B).36C).12D).818、数据在文本文件中占用的字个数是()A).4B).5C).6D).819、在宏定#definep(r)3.14*r中,宏名是()A).p B).p(r)C). 3.14*r D).p(r)3.14*r20、要翻开一个已存在的用于改正的非空二制文件“”,正确句是()A).fp=fopen(","r")B).fp=fopen(","ab+")C).fp=fopen(","w")D).fp=fopen(","r+")效得分卷人无二、填空(仔每小的明和源代,并将正确答案写到答上的号。
厦门大学《C语言程序设计》课程试卷信息科学与技术学院系2013 年级专业主考教师:_______ 试卷类型:(A卷)已经反复修改调试过了,应该没问题了。
如果对答案有什么疑问可以直接私戳我 _______qq553915228 李添锐一、写出下列程序段的运行结果(1. ( 4 分)int i=1, j=2, k=4;prin tf("%f,", i-(float)(j/k));prin tf("%d, ", j<3<k);k+=(i+k)/10+0.5 ;prin tf("%d,",k);prin tf("%d", (j=1)?2:0);输出:1.000000,1,(此处有空格)2. (4 分)char a=0x12303F; prin tf("%d,",a); a二'a'-'B'+'E';prin tf("%c",--a);输出:63,c3. (4 分)int i = 3, j = 2;if (!i&&i--)i+=2;i++;prin tf("%d,", i);do{j+=i;i/=2;if(j>8) break;} while(i=3);prin tf("%d\n", j);输出:4,9(此处需要换行即\n)40分)4. ( 4 分)intp[7]={11,13,15,17,18,20,23},i=0,k=0;for (;p[i]%2;){switch(p[i]%5)4,2 {case 1: k+=p[i++]; break;case 3: k+=p[i];default: i++;}}prin tf("%d,%d",i,k);输出:4,245. ( 4 分)char s[]="1234", *p;for (p=s+3; p>s; p--){prin tf("%s,", p);}输出:4,34,234,6. ( 4 分)int f(){static int j=1; int k=1;return ((++j)+(++k));}int mai n()*(u.a+1)=3; u.a[2]=4; printf("%d,%d", u.s.a, u.s.b);return 0;}输出 0,3 9.( 4 分)int s[3][3]= {1,2,3,4,5,6,7,8,9}; int sum;sum = *(s[0]) + *(s[1]+1) + *(s[2]+2); printf("%d", sum); return 0; 输出:1510.(4 分)FILE *fp; int e; long len; char c;fp=fopen("pi.tmp","w"); fputs("3.1415926", fp);fclose(fp); fp=fopen("pi.tmp","r");fscanf(fp,"%d%c",&e,&c); len=ftell(fp); fseek(fp, -1L, SEEK_END); len = ftell(fp)-len;printf("%ld",len); 输出:6已知数据文件“ c:\data.dat ”以二进制方式存有 300个整数,函数 readDat( )把这 些数存入数组 a 中,函数 fun( )的功能是:依次从数组 a 中取出一个数,若该数 连续大于它之前的五个数且该数是偶数 (若之前不满五个数, 则不统计),统计满 足此条件的个数 cnt ,并把这些数按从大到小的顺序存入数组 b 中。
已经反复修改调试过了,应该没问题了。
如果对答案有什么疑问可以直接私戳我qq553915228 李添锐一、写出下列程序段的运行结果(40分)1.(4分)int i=1, j=2, k=4;printf("%f,", i-(float)(j/k));printf("%d, ", j<3<k);k+=(i+k)/10+0.5 ;printf("%d,",k);printf("%d", (j=1)?2:0);输出:1.000000,1,(此处有空格)4,22.(4分)char a=0x12303F;printf("%d,",a);a='a'-'B'+'E';printf("%c",--a);输出:63,c3.(4分)int i = 3, j = 2;if (!i&&i--)i+=2;i++;printf("%d,", i);do{j+=i;i/=2;if(j>8) break;} while(i=3);printf("%d\n", j);输出:4,9(此处需要换行即\n)4.(4分)intp[7]={11,13,15,17,18,20,23},i=0,k=0;for (;p[i]%2;){switch(p[i]%5){case 1: k+=p[i++]; break;case 3: k+=p[i];default: i++;}}printf("%d,%d",i,k);输出:4,245.(4分)char s[]="1234", *p;for (p=s+3; p>s; p--){printf("%s,", p);}输出:4,34,234,6.(4分)int f(){static int j=1; int k=1;return ((++j)+(++k));}int main(){int i;for (i=0; i<3; i++)printf("%d,", f());return 0;}输出:4,5,6,7.(4分)void fun(int i){if (i){fun(i-3);printf("%d,",i);}}int main(){fun(9);return 0;}输出:3,6,9,8.(4分)union{struct { int a,b,c; } s;int a[3];}u;int main(){u.s.a=0; u.s.b=1; u.s.c=2;*(u.a+1)=3; u.a[2]=4;printf("%d,%d", u.s.a, u.s.b);return 0;}输出0,39.(4分)int s[3][3]= {1,2,3,4,5,6,7,8,9}; int sum;sum = *(s[0]) + *(s[1]+1) + *(s[2]+2);printf("%d", sum);return 0;输出:1510.(4分)FILE *fp; int e; long len; char c; fp=fopen("pi.tmp","w");fputs("3.1415926", fp);fclose(fp);fp=fopen("pi.tmp","r");fscanf(fp,"%d%c",&e,&c);len=ftell(fp);fseek(fp, -1L, SEEK_END);len = ftell(fp)-len;printf("%ld",len);输出:6二、改错题(20分)已知数据文件“c:\data.dat”以二进制方式存有300个整数,函数readDat( )把这些数存入数组a中,函数fun( )的功能是:依次从数组a中取出一个数,若该数连续大于它之前的五个数且该数是偶数(若之前不满五个数,则不统计),统计满足此条件的个数cnt,并把这些数按从大到小的顺序存入数组b中。
程序中包含若干个错误,请指出程序中的错误并更正。
提示:程序30行之前存在8个错误。
#include <stdio.h> /*第1行*/#define MAX 300; /*第2行*/ 去掉分号;int a[MAX], b[MAX], cnt ; /*第3行*/void fun( ) /*第4行*/{ /*第5行*/int I, j, flag; /*第6行*/for(I=5;I<MAX;I++) /*第7行*/本行之前加上cnt=0{ /*第8行*/for(j=I-5;j<I;j++) /*第9行*/if(a[I]>a[j]& a[I]%2==0) flag=1; /*第10行*/ &应该双写else /*第11行*/{ /*第12行*/flag=0; /*第13行*/continue; /*第14行*/} /*第15行*/if(flag==1) b[cnt++]=a[I]; /*第16行*/} /*第17行*/for(I=0;I<cnt-1;i++) /*第18行*/i改为Ifor(j=I+1;j<cnt;j++) /*第19行*/if(b[I]>b[j]) /*第20行*/>改成<{ /*第21行*/b[I]=b[j]; /*第22行*/将22行与23行对调flag=b[I]; /*第23行*/b[j]=flag; /*第24行*/} /*第25行*/} /*第26行*/int main() /*第27行*/{ /*第28行*/int i ; /*第29行*/加一个函数声明void readDat(); readDat( ); /*第30行*/fun( ); /*第31行*/printf("cnt=%d\n", cnt); /*第32行*/for(i = 1 ; i < cnt ; i++) /*第33行*/ i=0printf("%d\n", b[i]); /*第34行*/printf("\n"); /*第35行*/return 0; /*第36行*/} /*第37行*/void readDat() /*第38行*/{ /*第39行*/int i ; /*第40行*/FILE *fp ; /*第41行*/if ((fp=fopen(“c:\data.dat”, “rb”))==NULL) /*第42行*/ c:\\data.dat 注意双写\{ /*第43行*/printf("can't open file!\n"); /*第44行*/exit(0); /*第45行*/} /*第46行*/for(i = 0 ; i < MAX ; i++) /*第47行*/fscanf(fp, "%d", &a[i]); /*第48行*/加上fclose(fp);} /*第49行*/本题20分应该是有10处错三、编程题(40分)注意:程序中请添加必要的注释1、某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
例如:输入2468,输出3197(12分)解:本题较简单,按照题目所述编写代码即可#include<stdio.h>int main(){char a[4]; //因为是直接输入2468输出3197 所以我们要用字符串int i;scanf("%s",a);for(i=0;i<4;i++){a[i]-=48; //将字符转成相应的数字a[i]+=5;a[i]%=10;}i=a[0];a[0]=a[3];a[3]=i;i=a[1];a[1]=a[2];a[2]=i;for(i=0;i<4;i++){printf("%d",a[i]);}return 0;}2、输入一个字符串,内有数字和非数字字符。
请编写一个函数找出其中连续最长的数字串,返回找到的连续最长数字串及其长度。
若连续最长数字串有多个,则返回最后一个串。
例如,输入“abcd12845ed12 5ss123?456789”,返回“456789”及6;又如,输入“abcd12345 ss54321”返回“54321”和5。
要求:所编写的函数中应采用指针法来引用输入字符串中的元素。
(14分)解:本题难度适中,需要用到字符串转成数字等知识,最后那个要求用指针简直就是坑爹#include<stdio.h>#include<string.h>int main(){char a[1000],b[10][100]={'\0'},*p,*q;int i,j,k=0,l=0,m,n,maxl=0,maxnum=0;gets(a);n=strlen(a);p=a; //以下的所有*(p+x)指的都是a[x] (坑爹的指针= =) for(i=0;i<n;i++){if(*(p+i)>=48&&*(p+i)<=57){j=i;while(*(p+j)>=48&&*(p+j)<=57){b[k][l]=*(p+j);j++;l++;}if(--l>=maxl){maxl=l;maxnum=k;}k++;i=i+l;l=0;}}m=strlen(b[maxnum]);printf("%s ",b[maxnum]); printf("%d",m); return 0; }3、用链表存储一个八进制数(类型为unsigned long ),(520)8可存储为如下链表(^表示链表尾):函数Add(A,B)的参数A 和B 分别指向两条链表(表示两个八进制数),函数返回链表C ,表示A 加上B 后所得的八进制数。
例如,再有B 如下:则执行C=Add(A,B)后,由于 (520)8 + (1314)8 = (2034)8,最后结果如下:要求:(1)给出链表结点定义(2分);(2)编写Add函数,实现题目要求的功能(12分)。