南昌航空大学C语言期末考试试卷
大学C语言期末考试试题(含答案)
第一章C语言概述1.1 选择题*1.1一个C程序的执行是从 A 。
A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束参考答案:A参考分析:C语言总是从main函数开始,main函数结束。
但是C 语言中存在一个exit(0)函数,它可以使得程序在任何时候、任何位置结束程序的运行。
如果不考虑exit(0)等函数的特殊作用,C则总是在main函数结束。
*1.2以下叙述正确的是 C 。
A)在C程序中,main函数必须位于程序的最前面B)在C程序的每一行只能写一条语句C)C语言本身没有输入输出语句D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误参考答案:C参考分析:C程序对main函数的位置没有任何要求;其书写格式自由,一行可以写多条语句,一条语句(多关键字语句)可以写在多行;C语言忽略注释,把注释看作是一个空格,不会对注释中的内容进行语法检查。
因此,如果注释中存在错误,系统是不可能发现的。
另外,C语言的I/O操作均通过函数实现,系统本身未提供相应的语句。
1.3以下叙述不正确的是 D 。
A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数C)C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面参考答案:D参考分析:C语言中,注释语句的位置是任意的,当然,它不能破坏标识符的完整性。
C语言只是将一个注释看作是一个空格,因此对注释内的任何错误都不作检查。
1.4 C语言规定:在一个源程序中,main函数的位置 C 。
A)必须在最开始B)必须在系统调用的库函数的后面C)可以任意D)必须在最后参考答案:C*1.5一个C语言程序是由 B 。
A)一个主程序和若干个子程序组成B)若干函数组成C)若干过程组成D)若干子程序组成参考答案:B参考分析:通常许多语言程序由主程序和子程序构成,但是C语言是函数式语言,整个程序由众多函数组成。
C语言期末考试试题___南昌航空大学
C)scanf("%lf",p+6);
D)scanf("%lf",p[6]);
(15)有以下程序段
#include <stdio.h>
void main()
{…
while( getchar()!='\n');
…
}
以下叙述中正确的是
A)此 while 语句将无限循环
B)getchar()不可以出现在 while 语句的条件表达式中
}
程序运行后的输出结果是
A)0 B)3 C)7 D)8
(13)有以下程序
#include <stdio.h>
void main()
{ char b,c; int i;
b='a'; c='A';
for(i=0;i<6;i++)
{ if(i%2) putchar(i+b);
else putchar(i+c);
下面关于语句执行情况的叙述中正确的是
A)循环体执行两次
B)循环体执行一次
C)循环体一次也不执行
D)构成无限循环
(6)有以下程序
#include <stdio.h>
void main()
{ int x=1,y=0;
if(!x) y++;
else if(x==0)
if (x) y+=2;
else y+=3;
B)11 C)10
D)9
(12)有以下程序
#include <stdio.h>
void main()
(完整版)C语言期末考试题(含答案)
(完整版)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;5、设有定义:float a=2,b=4,h=3;以下C 语⾔表达式中与代数式h b a *)(21 的计算结果不.相符的是() A )(a+b)*h/2 B )(1/2)*(a+b)*h C )(a+b)*h*1/2 D )h/2*(a+b)6、C 语⾔中⽤于结构化程序设计的3种基本结构是()A )顺序结构、选择结构、循环结构B )if 、switch 、breakC )for 、while 、do-whileD )if 、for 、continue7.在while (!x )语句中的!x 与下⾯条件表达式等价的是()A) x!=0 B) x==1 C) x!=1 D) x==08、有以下程序:#includevoid 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、有以下程序:#includevoid 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);⼆、填空题(10x2’=20’)11、C语⾔描述“x和y都⼤于或等于z”的表达式是:。
期末c语言考试题库及答案
期末c语言考试题库及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 下列哪个选项是合法的C语言变量名?A. 2nd_variableB. _variableC. variable-nameD. variable$name答案:C3. 在C语言中,以下哪个函数用于将字符串转换为浮点数?A. atoiB. atofC. itoaD. sprintf答案:B4. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. ==D. =答案:A5. C语言中,以下哪个关键字用于定义一个函数?A. classB. functionC. intD. void答案:C6. 在C语言中,以下哪个选项表示“不等于”?A. ==B. !=C. =D. <=答案:B7. 下列哪个选项是C语言中的循环结构?A. ifB. forC. switchD. case答案:B8. 在C语言中,以下哪个函数用于计算字符串的长度?A. strlenB. strcpyC. strcatD. strcmp答案:A9. C语言中,以下哪个关键字用于定义一个指针?A. *B. &C. %D. #答案:A10. 下列哪个选项是C语言中的数组?A. int a[10];B. int *a;C. int a=10;D. int a;答案:A二、填空题(每题2分,共10分)1. 在C语言中,用于定义一个字符常量的数据类型是______。
答案:char2. 在C语言中,用于定义一个整型变量的数据类型是______。
答案:int3. 在C语言中,用于定义一个浮点型变量的数据类型是______。
答案:float4. 在C语言中,用于定义一个双精度浮点型变量的数据类型是______。
答案:double5. 在C语言中,用于定义一个布尔型变量的数据类型是______。
c语言期末考试题库大题及详解答案
c语言期末考试题库大题及详解答案C语言期末考试题库大题及详解答案一、简答题1. 请简述C语言的基本数据类型及其特点。
答案:C语言的基本数据类型包括整型(int)、浮点型(float和double)、字符型(char)和枚举型(enum)。
整型用于存储整数,浮点型用于存储小数,字符型用于存储单个字符,枚举型用于定义一组命名的常量。
每种数据类型都有其特定的取值范围和占用内存大小。
2. 请解释C语言中的数组和指针的区别。
答案:数组是一种数据结构,用于存储固定数量的相同类型元素,可以通过下标访问元素。
指针是一个变量,它存储另一个变量的内存地址。
数组名可以作为指向数组第一个元素的指针使用,但数组本身是一个固定大小的内存块,而指针可以被赋值为不同的地址,具有动态性。
二、编程题1. 编写一个C语言程序,实现输入三个整数,找出其中的最大值并输出。
答案:```c#include <stdio.h>int main() {int num1, num2, num3, max;printf("请输入三个整数:");scanf("%d %d %d", &num1, &num2, &num3);max = (num1 > num2) ? ((num1 > num3) ? num1 : num3) : ((num2 > num3) ? num2 : num3);printf("最大值是:%d\n", max);return 0;}```2. 编写一个C语言程序,实现字符串的反转。
答案:```c#include <stdio.h>#include <string.h>int main() {char str[100];printf("请输入一个字符串:");fgets(str, sizeof(str), stdin); // 使用fgets以包含空格int len = strlen(str) - 1; // 减去换行符长度for (int i = len; i >= 0; --i) {printf("%c", str[i]);}printf("\n");return 0;}```三、综合题1. 请编写一个C语言程序,实现一个简单的计算器,能够进行加、减、乘、除四种基本运算。
(完整版)大学C语言期末考试练习题(带详解答案)
一、单项选择题1.(A)是构成C语言程序的基本单位。
A、函数B、过程C、子程序D、子例程2.C语言程序从C开始执行。
A) 程序中第一条可执行语句B) 程序中第一个函数C) 程序中的main函数D) 包含文件中的第一个函数3、以下说法中正确的是(C)。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main( )函数中定义C、C语言程序总是从main( )函数开始执行D、C语言程序中的main( )函数必须放在程序的开始部分4.下列关于C语言的说法错误的是(B)。
A) C程序的工作过程是编辑、编译、连接、运行B) C语言不区分大小写。
C) C程序的三种基本结构是顺序、选择、循环D) C程序从main函数开始执行5.下列正确的标识符是(C)。
A.-a1B.a[i]C.a2_iD.int t5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B)。
A)3ax B)x C)case D)-e2 E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);7.下列四组选项中,正确的C语言标识符是(C)。
A)%x B)a+b C)a123 D)123选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。
A、print _3d db8 aBcB、I\am one_half start$it 3paiC、str_1 Cpp pow whileD、Pxq My->book line# His.age选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D)。
c语言程序设计期末考试试卷
c语言程序设计期末考试试卷C语言程序设计期末考试试卷一、选择题(每题2分,共20分)1. 在C语言中,以下哪个选项表示一个字符常量?- A. 'A'- B. "A"- C. \A- D. A2. 以下哪个是C语言中的合法标识符?- A. 2variable- B. variable2- C. variable!3. C语言中,以下哪个语句用于定义一个整型数组?- A. int array[10] = {0};- B. int [10] array = {0};- C. int array = [10] = {0};- D. int array[10];4. 以下哪个是C语言中定义函数的关键字?- A. function- B. method- C. def- D. int5. C语言中,以下哪个是正确的函数声明?- A. int add(int a, int b)- B. int add(int a, int b) {}- C. int add(int, int);- D. void add(int a, int b);6. 在C语言中,以下哪个语句用于实现循环?- A. do-while- B. for- C. switch-case- D. if-else7. 在C语言中,以下哪个语句用于实现条件判断? - A. if-else- B. switch-case- C. while- D. for8. 在C语言中,以下哪个语句用于实现跳转?- A. return- B. break- C. continue- D. goto9. 在C语言中,以下哪个是正确的字符串字面量? - A. "Hello World"- B. 'Hello World'- C. "hello world"- D. {"Hello World"}10. 在C语言中,以下哪个是正确的结构体定义?- A. struct person { int age; char name[20]; };- B. struct { int age; char name[20]; } person;- C. struct person { int age; char name; };- D. struct person int age; char name[20];二、填空题(每空1分,共10分)1. 在C语言中,一个整型变量的默认值是______。
大学C语言期末考试练习题(带详解答案)
一、单项选择题1.(A)是构成C语言程序的基本单位。
A、函数B、过程C、子程序D、子例程2.C语言程序从C开始执行。
A) 程序中第一条可执行语句B) 程序中第一个函数C) 程序中的main函数D) 包含文件中的第一个函数3、以下说法中正确的是(C)。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main( )函数中定义C、C语言程序总是从main( )函数开始执行D、C语言程序中的main( )函数必须放在程序的开始部分4.下列关于C语言的说法错误的是(B)。
A) C程序的工作过程是编辑、编译、连接、运行B) C语言不区分大小写。
C) C程序的三种基本结构是顺序、选择、循环D) C程序从main函数开始执行5.下列正确的标识符是(C)。
A.-a1B.a[i]C.a2_iD.int t5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B)。
A)3ax B)x C)case D)-e2 E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);7.下列四组选项中,正确的C语言标识符是(C)。
A)%x B)a+b C)a123 D)123选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。
A、print _3d db8 aBcB、I\am one_half start$it 3paiC、str_1 Cpp pow whileD、Pxq My->book line# His.age选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D)。
大学《C语言程序设计》期末考试试卷及参考答案
大学《C语言程序设计》期末考试试卷及参考答案《C语言程序设计》期末考试试卷参考答案一、判断题(10分)1、对2、对3、错4、错5、对6、错7、错8、错9、错10、错二、填空题(30分,,1到10题1分1空,10到18题2分1空)1.2.5 2. a!=0&&b!=0 3. m=1b 4. windows 95 5. x[i]>='A'&&x[i]<='Z' 6.234567 7.文件的首纪录前8、struct tree *Ltree,*Rtree 9. i<=10010. char a[10]="continue"; 11. p*pow(1+r,5) 12. 'D' 13. 10、514.#define utol(ch) ch=ch>='A'&& ch<='Z' ? ch+'a'-'A':ch15.首行第i+1个元素的地址,第i+1行的首地址,a[0][0]的值16.p=(int*)mallo(n);17. (-b+sqrt(b*b-4*a*c))/2/a 18. float(*fg)(float **,int,int);三、单项选择题(在每小题的四个备选答案中选出一个正确的,10分))1、A2、B3、C4、B5、D6、A7、A8、B9、C 10、A四、程序阅读题(20分,每题4分)1、 A C E G2、 x=3 y=23、the two string are same:fthe two string are same:r4、 K=85、1《C语言程序设计》期末考试试卷及参考答案一、判断题(10分)1、C语言是一种结构化程序设计语言。
()2、在标准C中,整型变量与字符变量是可以通用的。
()3、在标准C中,“=”是判断两个数是否相等。
2022年南昌航空大学公共课《C语言》科目期末试卷A(有答案)
2022年南昌航空大学公共课《C语言》科目期末试卷A(有答案)一、填空题1、请读程序段:int a=-1;a=a|0377;printf("%d,%o\n",a,a);以上程序段的输出结果是_______。
2、C语言源程序文件的后缀是;经过编译后,生成文件的后缀是;经过连接后,生成文件的后缀是3、C语言的源程序必须通过【】和【】后,才能被计算机执行。
4、在C语言中,用“\”开头的字符序列称为转义字符。
转义字符“\n”的功能是_______;转义字符“\r”的功能是_______。
5、把以下多项式写成只含7次乘法运算,其余皆为加、减运算的C语言表达式为_______。
5x7+3x6-4x5+2x1+x3-6x2+x+106、若有定义:int a[]={2,4,6,8,10,12,14,16,18,20,22,24},*q[3],k;则下面程序段的输出是_______。
for(k=0;k<3;k++)q[k]=8.a[k*4];printf("%d\n",q[2][3]);7、下面程序段中循环体的执行次数是_______。
a=10;b=0;do{b+=2;a-=2+b;}while(a>=0);8、已有定义int a;float b,x;char cl,c2;为使a=3、b=6.5、x=12.6、cl='a'、c2='A',正确的scanf函数调用语句是_______,数据输入的形式应为_______。
9、若有以下定义和语句,为使变量c1得到字符’A',变量c2得到字符’B’,正确的输入形式是_______。
char cl,c2;scanf("%4c%4c",&cl,8&c2);10、下面程序段将输出computer。
请填空。
char c[]="It is a computer";for(i=0;_______;i++){_______;printf("%c",c[j]);}二、选择题11、对应以下各代数式中,若变量a和x均为double类型,则不正确的C语言表达式是( )12、设以下变量均为int类型,则值不等于7的表达式是( )。
C语言程序设计期末考试试题含答案
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语言期末考试练习题带详解答案
一、单项选择题1.(A)是构成C语言程序的基本单位。
A、函数B、过程C、子程序D、子例程2.C语言程序从C开始执行。
A)程序中第一条可执行语句???B)程序中第一个函数???C)程序中的main函数?????????D)包含文件中的第一个函数3、以下说法中正确的是(C)。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main()函数中定义C、C语言程序总是从main()函数开始执行D、C语言程序中的main()函数必须放在程序的开始部分4.下列关于C语言的说法错误的是(B)。
A)C程序的工作过程是编辑、编译、连接、运行B)C语言不区分大小写。
C)C程序的三种基本结构是顺序、选择、循环D)C程序从main函数开始执行5.下列正确的标识符是(C)。
A.-a1B.a[i]C.a2_iD.intt5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的“-”,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B)。
A)3axB)xC)caseD)-e2E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);7.下列四组选项中,正确的C语言标识符是(C)。
A)%xB)a+bC)a123D)123选项A中的“%”,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。
A、print_3ddb8aBcB、I\amone_halfstart$it3paiC、str_1CpppowwhileD、PxqMy->bookline#His.age选项B中的“\”,”$”,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D)。
南昌航空大学c期末考试
南昌航空大学2005-2006学年第一学期期末考试B卷评分标准题号一二三合计满分30 54 16 100实得分一、单选题(以下10个选择题中只有一个答案是完全正确的)(10X3=30)多选、错选不给分1、执行以下语句后{int a=3,b=4,c=0;a=b=(c==1);},a与b 的值分别为(A)A)0,0 B) 4,0 C) 3,4 D)不确定2、for( T1 ; T2 ; T3;)可以省略的是(D)A)T1 B)T2 C)T3 D)A,B,C3、语句:func(); 不可能是(D )A)函数原型B)函数声明C)函数调用D)函数定义4、以下对递归的评价正确的是(C)A)效率高,可读性好B)效率高,可读性差C)效率底,可读性好D)效率低,可读性差5、对于语句:int a[10];与表达式a[2]=0不等价的是(A)A)*a+2=0 B) (a+1)[1]=0 C) *(a+2)=0 D) (a+2)[0]=06、以下程序中有语法错误的是(D)A) int *p;p++;B) int (*p)[10];p++C) int p;p++D) void I,*p;p++;7、以下哪个”hello”不是字符串常量(A)A) char buffer[]=”hello”B) char *P=”hello”C) if(”hello”==”hello”) …D) char *p[10]={ ”hello”,”aa”,…}8、对于struct STR{ int i;};STR a,b;STR *p=&a;以下语句不合法的是( A)A) STR.i=0; B) a.i=0; C) a=b; D)p->i=0;9.在C++中,数据封装要解决的问题是( D )。
A.数据规范化排列B.数据高速转换C.避免数据丢失D.保证数据完整性10、造函数与析构函数带参数情况是(C)A)都可以带B)都不可以带C)只有构造函数可以带D)只有析构函数可以带二、阅读以下程序并选择输出结果正确的一组(共54分)多选、错选不给分1、(8分)void swap1(int,int);void swap2(int *,int *);void main(){int x=4,y=5;swap1(x,y);cout<<”after swapping1”<<endl;cout<<"x:"<<x<<" y:"<<y<<endl;swap2(&x,&y);cout<<”after swapping2<<endl;cout<<"x:"<<x<<" y:"<<y<<endl;}void swap1(int x,int y){int temp=x;x=y;y=temp;}void swap2(int *x,int *y){int temp=*x;*x=*y;*y=temp;}运行以上程序,输出结果为以下内容(abcd)中若干项的组合:a、after swapping1...b、x:4 y:5c、after swapping2...d、x:5 y:4其中组合正确的是:(A )A) abcd B) adcb C)acbd D)cdab2(10)#include "iostream.h"#include "string.h"class A{public:A(int id=0){value=id;cout<<"Assigning A id "<<value<<endl;}~A(){cout<<"Destructing id "<<value<<endl;}protected:int value;};class B{public:B(char *s="NoName",int ssid=0){cout<<"Constructing B "<<s<<endl;strcpy(name,s);A id(ssid);}protected:char name[20];A id;};void main(){B s("Randy",2005);}运行以上程序,输出结果为以下内容(abcde)中若干项的组合:a、Constructing B Randyb、Assigning A id 0c、Assigning A id 2005d、Destructing id 0e、Destructing id 2005其中组合正确的是:(C)A)abcde B)cbade C)baced D)edcba3、(10)#include "iostream.h"#include "string.h"class B{public:B(char *s="NoName"){cout<<"Constructing new B "<<s<<endl;strcpy(name,s);}B(B & b){cout<<"Constructing copy of "<<<<endl;strcpy(name,"copy of ");strcat(name,);}{cout<<"Destructing "<<name<<endl;}protected:char name[20];};class C{public:C(B &b):b(){ cout<<"Constructing C\n"; }protected:B b;};void fn( C c){cout<<"In function fn()\n";}void main(){B b("Tom");C c(b);cout<<"Calling fn\n";fn(c);cout<<"Retrurned from fn\n";}运行以上程序,输出结果为以下内容(abcdefghij)中若干项的组合:a、Constructing new B Tomb、Constructing new B NoNamec、Constructing Cd、Calling fne、Constructing copy of NoNamef、In function fn()g、Destructing copy of NoNameh、Retrurned from fni、Destructing NoNamej、Destructing Tom其中组合正确的是:(A)A)abcdefghij B)acdbefghij C)abcdefgji D)bcdfeghij 4、(10分)#include "iostream.h"#include "string.h"class M{public:M(char *s);~M();static M *pFirst;M * pNext;char name[40];};M* M::pFirst=0;M::M(char *s){strcpy(name,s);pNext=pFirst;pFirst=this;}M::~M(){cout<<name<<endl;if(pFirst==this){pFirst=pNext;return;}for(M*t=pFirst;t;t=t->pNext)if(t->pNext==this){t->pNext=pNext;return;}}M *fn(){M* pm=new M("TOM");M fm("JIKE");return pm;}void main(){M m("JONE");M *pm=fn();M n("ROSE");delete pm;}运行以上程序,输出结果为以下内容(abcd)中若干项的组合:a、TOMb、JIKEc、ROSE其中组合正确的是:(B)A) badc B)bacd C) abcd D)cadb5、(8分)#include "iostream.h"class Shape{protected:double x,y;public:void setda(double I,double j){x=I;y=j;}virtual void disparea(){cout<<"No area display"<<endl;}};class Triangle:public Shape{public:void disparea(){cout<<"Triangle area "<<x*y*0.5<<endl;}};void main(){Shape *p,s;Triangle t;p=&t;p->setda(2.0,5.0);p->disparea();p=&s;p->setda(2.0,4.0);p->disparea();}运行以上程序,输出结果为以下内容(abc)中若干项的组合:运行以上程序,输出结果为以下内容的组合,a、Triangle area 5b、No area displayc、Triangle area 4其中组合正确的是:(A)A) ab B) bc C) ac D) ba6、(8分)#include "iostream.h"class OBJ{ public:OBJ(){cout<<"OBJ\n";}};class VISUAL_BASE{ public:VISUAL_BASE(){cout<<"VISUAL_BASE\n";}~VISUAL_BASE(){cout<<"DEL VISUAL_BASE\n";}};class BASE{ public:BASE(){cout<<"BASE\n";}~BASE(){cout<<"Del BASE\n";}};class Child:virtual public VISUAL_BASE,public BASE{ public:Child(){}protected:OBJ obj;};void main(){ Child c; }运行以上程序,输出结果为以下内容(abcde)中若干项的组合:a、BASEb、Del BASEc、OBJd、DEL VISUAL_BASEe、VISUAL_BASE其中组合正确的是:(B)A) abcde B) eacbd C) eacdb D) aecbd三、程序设计(16分)编写一个类(stack),实现简单的栈(提示:用链表结构实现)。
C语言程序设计期末考试试题及参考答案
一、单项选择题(每题1分,共20分)(1)()是构成C语言程序的基本单位。
A)子例程B)过程C)子程序D)函数(2)下面标识符中正确的是()。
A) d&ef B) 6a C) z4x5c D) a3/b4(3)C语言规定,函数返回值的类型是由()。
A) return语句中的表达式类型所决定B)调用该函数时的主调函数类型所决定C)调用该函数时系统临时决定D)在定义该函数时所指定的函数类型所决定(4)以下选项中非法的表达式是()。
A) 0<=x<100 B) x+l=x+l C) (char)(65+3) D) i=j=0(5)表达式3.6-5/2+1.2+5%2 的值是()。
A) 3.8 B) 4.8 C) 3.3 D) 4.3(6)设int a=12,则执行完语句a+=a-=a*a后,a的值是()。
A) 552 B) -264 C) 144 D) 264(7)对if语句中表达式的类型,下面正确的描述是()。
A)必须是关系表达式B)必须是关系表达式或逻辑表达式C)必须是关系表达式或算术表达式D)可以是任意表达式⑻设有定义:intnl=0,n2,*p=&n2,*q=&nl;,以下赋值语句中与n2=nl;语句等价的是.A) *p=*q; B) p=q; C) *p=&nl; D) p=*q;(9)有以下程序#include <stdio.h>void main()( char cl,c2;cl='A'+'8'*4';c2='A'+'8'-'5‘;printf("%c,%d\n”,cl,c2); }已知字母A的ASCII码为65,程序运行后的输出结果是()。
A) E,D B) D,69 C) E,68 D)输出无定值(10)下列叙述中正确的是()。
A) break语句只能用于switch语句B)在switch语句中必须使用defaultC) break语句必须与switch语句中的case配对使用D)在switch语句中,不一定使用break语句(11)设a、b和c是int型变量,且a=2,b=4,c=6,则下面表达式中值为0的是()。
c语言期末考试试题及答案
c语言期末考试试题及答案一、选择题1. C语言中,用于表示整数常量的数据类型是()。
A. floatB. doubleC. intD. char答案:C2. 若有定义:int a = 5; float b =3.14; 则下列表达式中错误的是()。
A. a + bB. a * bC. a / bD. b % a答案:D3. C语言中,用于输入的函数是()。
A. printf()B. scanf()C. puts()D. gets()答案:B4. 下列关于数组的说法,正确的是()。
A. 数组大小是动态的,可以在运行时改变B. 数组一旦定义,其大小不可改变C. 数组可以存储不同类型的数据D. 数组的索引必须从0开始答案:B5. 在C语言中,一个合法的指针变量是()。
A. int *pB. *int pC. float *pD. p int答案:A二、填空题1. 在C语言中,使用关键字________定义一个全局变量。
答案:extern2. 若有定义:int x = 10; 则表达式 `x + (x++) * 2` 的值是________。
答案:303. 在C语言中,使用________可以将字符串常量输出到控制台。
答案:printf4. 一个整型变量可以存储的最大值(假设为int max)与最小值(假设为int min)的范围是________ < int max < int min。
答案:-32768, 32767(假设是16位整型)5. 函数________用于计算一个字符串的长度。
答案:strlen三、判断题1. C语言中的注释可以使用“//”或“/* */”两种形式。
()答案:正确2. 在C语言中,所有的函数都有返回值。
()答案:错误3. 指针变量的地址可以通过使用&运算符获得。
()答案:正确4. 在C语言中,long int和int类型的大小是相同的。
()答案:错误5. 使用switch语句时,case标签后的值必须是整型或字符型。
C语言期末测验试题南昌航空大学
C语言期末测验试题南昌航空大学1 / 10————————————————————————————————作者:————————————————————————————————日期:2 / 10C语言期末考试试题南昌航空大学一、单选题(1)若要定义一个具有5个元素的整型数组,以下错误的定义语句是A)int a[5]=﹛0﹜;B)int b[]={0,0,0,0,0};C)int c[2+3];D)int i=5,d[i];(2)以下选项中可用作C程序合法实数的是A).1e0 B)3.0e0.2 C)E9 D)9.12E(3)有以下程序段char name[20];int num;scanf("name=%s num=%d",name,&num);当执行上述程序段,并从键盘输入:name=Lili num=1001<回车>后,name的值为A)Lili B)name=Lili C)Lili num= D)name=Lili num=1001(4)if语句的基本形式是:if(表达式) 语句,以下关于“表达式”值的叙述中正确的是A)必须是逻辑值 B)必须是整数值C)必须是正数 D)可以是任意合法的数值(5)若i和k都是int类型变量,有以下for语句for(i=0,k=-1;k=1;k++) printf("*****\n");下面关于语句执行情况的叙述中正确的是A)循环体执行两次B)循环体执行一次C)循环体一次也不执行D)构成无限循环(6)有以下程序#include <stdio.h>void main(){ int x=1,y=0;if(!x) y++;else if(x==0)if (x) y+=2;else y+=3;printf("%d\n",y);}程序运行后的输出结果是A)3 B)2 C)1 D) 0(7)设有如下函数定义int fun(int k){ if (k<1) return 0;else if(k==1) return 1;else return fun(k-1)+1;}若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是A)2 B)3 C)4 D)5(8)设有定义:struct {char mark[12];int num1;double num2;} t1,t2;,若变量均已正确赋初值,则以下语句中错误的是A)t1=t2; B)t2.num1=t1.num1;C)t2.mark=t1.mark; D)t2.num2=t1.num2;(9)设fp已定义,执行语句fp=fopen("file","w");后,以下针对文本文件file操作叙述的选项中正确的是A)写操作结束后可以从头开始读 B)只能写不能读C)可以在原有内容后追加写 D)可以随意读和写(10)以下叙述中错误的是A)C语言的可执行程序是由一系列机器指令构成的B)用C语言编写的源程序不能直接在计算机上运行C)通过编译得到的二进制目标程序需要连接才可以运行D)在没有安装C语言IDE的PC中不能运行C源程序生成的.exe文件(11)有以下程序#include <stdio.h>void main(){ int x=011;printf("%d\n",++x);}程序运行后的输出结果是A)12 B)11 C)10 D)9(12)有以下程序#include <stdio.h>void main(){ char s[]="012xy\08s34f4w2";int i,n=0;for(i=0;s[i]!=0;i++)if(s[i]>='0'&&s[i]<='9') n++;printf("%d\n",n);}程序运行后的输出结果是A)0 B)3 C)7 D)8(13)有以下程序#include <stdio.h>void main(){ char b,c; int i;b='a'; c='A';for(i=0;i<6;i++){ if(i%2) putchar(i+b);else putchar(i+c);} printf("\n");}程序运行后的输出结果是A)ABCDEF B)AbCdEf C)aBcDeF D)abcdef(14)设有定义:double x[10],*p=x;,以下能给数组x下标为6的元素读入数据的正确语句是A)scanf("%f",&x[6]); B)scanf("%lf",*(x+6));C)scanf("%lf",p+6); D)scanf("%lf",p[6]);(15)有以下程序段#include <stdio.h>void main(){ …while( getchar()!='\n');…}以下叙述中正确的是A)此while语句将无限循环B)getchar()不可以出现在while语句的条件表达式中C)当执行此while语句时,只有按回车键程序才能继续执行D)当执行此while语句时,按任意键程序就能继续执行(16)若有定义语句:char s[3][10],(*k)[3],*p;,则以下赋值语句正确的是A)p=s; B)p=k; C)p=s[0]; D)k=s;(17)有以下程序#include <stdio.h>void fun(char *c){ while(*c){ if(*c>='a'&&*c<='z') *c=*c-('a'-'A');c++;}}void main(){ char s[81];gets(s); fun(s); puts(s):}当执行程序时从键盘上输入Hello Beijing<回车>,则程序的输出结果是A)hello beijing B)Hello BeijingC)HELLO BEIJING D)hELLO Beijing(18)有以下程序#include <stdio.h>void main(){ char a[30],b[30];scanf("%s",a);gets(b);printf("%s\n %s\n",a,b);}程序运行时若输入:how are you? I am fine<回车>则输出结果是A)how are you? B)how are you? C)how are you? I am fineD)howare you? I am fine(19)有以下程序#include <stdio.h>int fun (int x,int y){ if (x!=y) return ((x+y)/2);else return (x);}void main(){ int a=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}程序运行后的输出结果是A)3 B)6 C)8 D)12(20)有以下程序#include <stdio.h>struct S{ int a,b;}data[2]={10,100,20,200};void main(){ struct S p=data[1];printf("%d\n",++(p.a));}程序运行后的输出结果是A)10 B)11 C)20 D)21二、读程序写结果(1)阅读下列程序:#include <stdio.h>void main(){int a;a=(int)((double)(3/2)+0.5+(int)1.99*2);printf("%d\n",a);}上述程序的输出结果是(2)阅读下列程序:#include <stdio.h>int main(){ int i; int branch;double bonus,bon1,bon2,bon4,bon6,bon10;bon1=100000*0.1; bon2=bon1+100000*0.075; bon4=bon2+200000*0.05; bon6=bon4+200000*0.03; bon10=bon6+400000*0.015;scanf("%d",&i);branch=i/100000;if (branch>10) branch=10;switch(branch){ case 0:bonus=i*0.1;break;case 1:bonus=bon1+(i-100000)*0.075;break;case 2:case 3: bonus=bon2+(i-200000)*0.05;break;case 4:case 5: bonus=bon4+(i-400000)*0.03;break;case 6: case 7: case 8:case 9: bonus=bon6+(i-600000)*0.015;break;case 10: bonus=bon10+(i-1000000)*0.01;}printf("奖金是%10.2f\n",bonus);return 0;}输入“234000”,上述程序的输出结果是(3)阅读下列程序:#include <stdio.h>#include <math.h>int main(){double x1,x0,f,f1;x1=1.5;do{x0=x1;f=((2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x1=x0-f/f1;}while(fabs(x1-x0)>=1e-5);printf("The root of equation is %5.2f\n",x1); return 0;}上述程序的输出结果是(4)阅读下列程序:#include <stdio.h>int main(){ int a[11]={1,4,6,9,13,16,19,28,40,100};int temp1,temp2,number,end,i,j;scanf("%d",&number);end=a[9];if (number>end)a[10]=number;else{for (i=0;i<10;i++){if (a[i]>number){temp1=a[i];a[i]=number;for (j=i+1;j<11;j++){temp2=a[j]; a[j]=temp1; temp1=temp2; }break;}}}for (i=0;i<11;i++)printf("%5d",a[i]);printf("\n");return 0;}输入“50”,上述程序的输出结果是(5)阅读下列程序:#include <stdio.h>struct student{int num; char name[20]; float score; };int main(){struct student stu[3]={{10101,"Zhang",78},{10103,"Wang",98.5},{10106,"Li",86}};struct student temp;const int n=3;int i,j,k;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(stu[j].score>stu[k].score)k=j;temp=stu[k];stu[k]=stu[i];stu[i]=temp;}for(i=0;i<n;i++)printf("%6d %8s %6.2f\n",stu[i].num,stu[i].name,stu[i].score);printf("\n");return 0;}上述程序的输出结果是(6)阅读下列程序:#include <stdio.h>int main(){void copy_string(char *from, char *to);char *a="a teacher.";char b[]="a student.";char *p=b;printf("string a=%s\nstring b=%s\n",a,b);printf("\ncopy string a to string b:\n");copy_string(a,b);printf("string a=%s\nstring b=%s\n",a,b);return 0;}void copy_string(char *from, char *to){ for(;*from!='\0';from++,to++){*to=*from;}*to='\0';}上述程序的输出结果是三、改写程序1.输出结果如图A所示,修改程序,要求(1)不输出第一行的空行;(2)“3……”这行输出空行,如图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;5、设有定义:float a=2,b=4,h=3;以下C 语言表达式中与代数式h b a *)(21 的计算结果不.相符的是( ) A )(a+b)*h/2 B )(1/2)*(a+b)*h C )(a+b)*h*1/2 D )h/2*(a+b)6、C 语言中用于结构化程序设计的3种基本结构是( )A )顺序结构、选择结构、循环结构B )if 、switch 、breakC )for 、while 、do-whileD )if 、for 、continue7.在while (!x )语句中的!x 与下面条件表达式等价的是( )A) x!=0 B) x==1 C) x!=1 D) x==08、有以下程序:#include <stdio.h>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 <stdio.h>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);二、填空题(10x2’=20’)11、C语言描述“x和y都大于或等于z”的表达式是:。
南昌航空大学C语言期末考试试卷
一、单项选择题(每题3分,共30分,注意:答案写在后面的答题卡内,否则0分)1、若有定义:int a=8, b=5, c;执行语句c = a/b+0.4 ;后,c的值为()。
A) 1.4 B) 1 C) 2.0 D) 22 、以下程序中,while 循环的次数是()。
#include <stdio.h>void main(void){ int i = 0;while (i<10) {if (i<1) continue;if (i= =5) break; i++; } }A) 1 B) 死循环,不能确定次数C) 6 D) 103、以下程序的输出结果是()。
#include <stdio.h>void main(void){ int a = 0, i;for (i=1; i<5; i++){ switch (i) { case 0:case 3: a += 2;case 1:case 2: a += 3;default: a += 5; }}printf(“%d\n”, a);}A) 31 B) 13 C) 10 D) 204、以下程序的输出结果是()。
#include <stdio.h>void main(void){ int a = 5, b = 4, c = 6, d;printf(“%d\n”, d=a>b?(a>c?a: c): b);}A) 5 B) 4 C) 6 D) 不确定5、执行以下程序后的输出结果是()#include <stdio.h>void main(void){char a[]=”abc\0abc”;printf(“%s”, a);}A) abc\0abc B) abc\ C) abc\0 D) abc6、当调用函数时,实参是一个数组名,则向函数传送的是()。
A) 数组的长度B) 数组的首地址C) 数组每一个元素的地址D) 数组每个元素中的值7、执行以下程序后,a的值为()。
2022年南昌航空大学公共课《C语言》科目期末试卷B(有答案)
2022年南昌航空大学公共课《C语言》科目期末试卷B(有答案)一、填空题1、设有一输入函数scanf("%d”,k);它不能使float类型变量k得到正确数值的原因是_______未指明变量k的地址和_______格式控制符与变量类型不匹配。
2、C语言源程序文件的后缀是;经过编译后,生成文件的后缀是;经过连接后,生成文件的后缀是3、在C语言源程序中,一个变量代表【】。
4、若a、b和c均是int型变量,则执行表达式a=(b=4)+(c=2)后a的值为_______,b的值为_______,c的值为_______。
5、假设m是一个3位数,从左到右依次用a、b、c表示各位的数字,则从左到右各位数字是b、a、c的3位数的表达式是_______。
6、在C语言中,&运算符作为单目运算符时表示的是_______运算;作为双目运算符时表示的是_______运算。
7、下面程序段是找出整数的所有因子。
请填空。
scanf("%d",&x);i=1;for(;_______;){if(x%i==0)printf("%3d",i);i++;}8、下面程序段的运行结果是_______。
int i=5;char c[6]="abcd";do{c[i]=c[i-1];}while(--i>0);puts(c);9、假设M为已经声明的符号常量,则定义一个具有M×M个元素的双精度型数组a,且所有元素初值为0的形式是_______。
10、以下程序段通过移动指针变量m,给如图9-7所示连续动态存储单元赋值。
请填空。
(假设程序段中的所有变量均已正确说明。
)for(k=0;k<10;k++,m++)scanf("%d",_______);二、选择题11、在C语言中,要求运算数必须是整型的运算符是( )。
(A) / B.++ C.!= D.%12、已知各变量的类型说明如下:int k,a,b;unsigned long w=5;double x=1.42;则以下不正确的表达式是( )。
大学C语言期末考试练习题(带详解答案)
一、单项选择题之迟辟智美创作1.(A)是构成C语言法式的基本单元.A、函数B、过程C、子法式D、子例程2.C语言法式从 C开始执行.A) 法式中第一条可执行语句 B) 法式中第一个函数C) 法式中的main函数 D) 包括文件中的第一个函数3、以下说法中正确的是(C).A、C语言法式总是从第一个界说的函数开始执行B、在C语言法式中,要调用的函数必需在main( )函数中界说C、C语言法式总是从main( )函数开始执行D、C语言法式中的main( )函数必需放在法式的开始部份4.下列关于C语言的说法毛病的是(B) .A) C法式的工作过程是编纂、编译、连接、运行B) C语言不区分年夜小写.C) C法式的三种基本结构是顺序、选择、循环D) C法式从main函数开始执行5.下列正确的标识符是(C).A.-a1B.a[i]C.a2_iD.int t5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是( B).A)3ax B)x C)case D)-e2 E)union选项A中的标识符以数字开头不满足(2);选项C,E 均为为关键字,不满足(3);选项D中的“-”不满足(1);7.下列四组选项中,正确的C语言标识符是(C).A) %x B) a+b C) a123 D) 123选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言法式中的标识符的是(A).A、print _3d db8 aBcB、I\am one_half start$it 3paiC、str_1 Cpp pow whileD、Pxq My->book line# His.age选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简双数据类型包括(D).A、整型、实型、逻辑型B、整型、实型、逻辑型、字符型C、整型、字符型、逻辑型D、整型、实型、字符型10.在C语言法式中,表达式5%2的结果是C .A)2.5 B)2 C)1 D)3详见教材P52~53.%为求余运算符,该运算符只能对整型数据进行运算.且符号与被模数相同.5%2=1;5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1;/为求商运算符,该运算符能够对整型、字符、浮点等类型的数据进行运算,5/2=211.如果int a=3,b=4;则条件表达式"a<b? a:b"的值是__A__.A) 3 B) 4 C) 0 D) 1详见教材P97.表达式1?表达式2:表达式3先计算表达式1,若表达式1成立,则选择计算表达式2,并表达式2的值作为整个年夜表达式的值;若表达式1不成立,则选择计算表达式3,并将表达式3的值作为整个年夜表达式的值此题中的a<b相当于表达式1,a相当于表达式2,b相当于表达式3.a为3,b为4.a<b表达式1成立,因此计算表达式2,并将表达式2的值即a中的值,并作为整个表达式的值,因此整个表达式的值为312.若int x=2,y=3,z=4 则表达式x<z?y:z的结果是( B ).A)4 B)3 C)2 D)0 E)113.C语言中,关系表达式和逻辑表达式的值是(B) .A) 0 B) 0或1 C) 1 D) ‘T’或’F’14. 下面( D )表达式的值为4.C) (float)11/3 D) (int)(11.0/3+0.5)14~16题为同一类型详见教材P54~56.(1)相同数据类型的元素进行数学运算(+、-、*、/)获得结果还坚持原数据类型.(2)分歧数据类型的元素进行数学运算,先要统一数据类型,统一的标准是低精度类型转换为高精度的数据类型.选项A,11与3为两个整数,11/3结果的数据类型也应为整数,因此将的小数部份全部舍失落,仅保管整数,因此11/3=3.选项B,为实数,3为整数,因此首先要统一数据类型,将整型数据3转换为,转换后数据类型统一为实型数据,选项B酿成11.0/3.0,结果的数据类型也应为实型数据,因此选项选项C,先将整数11强制类型转换,转换为实型,因此选项C酿成,其后计算过程、结果与选项B同选项D,首先计算,其计算过程、结果与选项B同,获得;再计算,最后将强制类型转换为整型,即将其小数部份全部舍失落,结果为415.设整型变量a=2,则执行下列语句后,浮点型变量b的值不为的是(B)A.b=1.0/aB.b=(float)(1/a)C.b=1/(float)aD.b=1/(a*1.0)16. 若“int n; float f=13.8;”,则执行“n=(int)f%3”后,n的值是(A)A.1B.4 C“(int)f“暗示将f中的值强制类型转换为整型,即将的小数部份舍失落,转换为13;然后计算13%3,结果为1,再将结果赋给变量n,因此n的值为117. 以下对一维数组a的正确说明是:DA)char a(10);B) int a[];C)int k=5,a[k]; D)char a[3]={‘a’,’b’,’c’};详见教材P143~144,一维数组的界说、初始化类型符数组名 [常量表达式]类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;常量表达式是指数组的长度(数组中包括元素的个数),其值只能是整数,不成以是变量,而且从1开始计数.选项A,常量表达式只能放在中括号 [ ]中选项B,只有在对数组初始化(即赋值)的时候才可以省略数组的长度,B中并未对a进行初始化.选项C,常量表达式不能为变量.18.以下能对一维数组a进行初始化的语句是: ( C )A. int a[5]=(0,1,2,3,4,)B. int a(5)={}C. int a[3]={0,1,2}D. int a{5}={10*1}详见教材P145,一维数组的界说、初始化选项B,D,常量表达式只能放在中括号 [ ]中选项A,数组可以看做是若干个相同数据类型元素的有序集合,因此以集合的形式对其初始化,使用{ }对其初始化,选项A用了().19.在C语言中对一维整型数组的正确界说为D .A)int a(10); B)int n=10,a[n];C)int n;a[n]; D)#define N 10int a[N];20、已知:int a[10]; 则对a数组元素的正确引用是( D ).A、a[10]B、a[3.5]C、a(5)D、a[0]详见教材P144,数组元素的引用数组名[下标]引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数int a[10]暗示界说了一个包括10个整型数据的数组a,数组元素的逻辑地址下标范围为0~9,即a[0] 暗示组中第1个元素; a[1] 暗示组中第2个元素; a[2] 暗示组中第3个元素; ......;a[9] 暗示组中第10个元素.选项A,超越了数组a的逻辑地址下标范围;选项B,逻辑地址下标只能为整数选项C,逻辑地址下标只能放在[ ]中21.若有以下数组说明,则i=10;a[a[i]]元素数值是(C).int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};A.10B.9 C先算a[a[i]]内层的a[i],由于i=10,因此a[i]即a[10].a[10]对应下面数组中的元素为9. 因此a[a[i]]即为a[9]a[9]对应下面数组中的元素为6. 因此a[9]即为622.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的年夜小为: ( B )A. 2B. 3C. 4D.无确定值5 7 D) 36 9二维数组的一维年夜小,即指二维数组的行数,在本题中,按行对二维数组赋值,因此内层有几个年夜括号,数组就有几行23.对二维数组的正确界说是(C)详见教材P149~152,二维数组的界说、初始化类型符数组名 [常量表达式][常量表达式]二维数组可以看做是矩阵类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;第一个常量表达式是指数组的行数;第二个常量表达式是指数组的列数;常量表达式的值只能是整数,不成以是变量,而且从1开始计数.一维数组初始化时可以省略数组长度二维数组初始化时可以省略行数,但不能省略列数选项A,B,都省略了列数选项D,不符合二维数组界说的一般形式,行、列常量表达式应该放在分歧的[]中A.int a[ ] [ ]={1,2,3,4,5,6};B.int a[2] [ ]={1,2,3,4,5,6};C.int a[ ] [3]={1,2,3,4,5,6};D.inta[2,3]={1,2,3,4,5,6};24.已知int a[3][4];则对数组元素引用正确的是__C___A)a[2][4] B)a[1,3] C)a[2][0] D)a(2)(1)详见教材P150,数组元素的引用数组名[下标] [下标]引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数第一个[下标]暗示行逻辑地址下标,第二个[下标]暗示列逻辑地址下标.本题图示详见P149图因此a的行逻辑地址范围0~2;a的列逻辑地址范围0~3;选项A,列逻辑地址下标超越范围选项B,D,的引用形式不正确.25.C语言中函数返回值的类型是由A决定的.A)函数界说时指定的类型 B) return语句中的表达式类型C) 调用该函数时的实参的数据类型 D) 形参的数据类型26. 在C语言中,函数的数据类型是指( A )A 函数返回值的数据类型 B. 函数形参的数据类型C 调用该函数时的实参的数据类型 D.任意指定的数据类型27. 在函数调用时,以下说法正确的是(B)A.函数调用后必需带回返回值B.实际参数和形式参数可以同名C.函数间的数据传递不成以使用全局变量D.主调函数和被调函数总是在同一个文件里28. 在C语言中,暗示静态存储类另外关键字是: ( C)A) auto B) register C) static D) extern29.未指定存储类另外变量,其隐含的存储类别为(A).A)auto B)static C)extern D)register30. 若有以下说明语句:struct student{ int num;char name[ ];float score;}stu;则下面的叙述不正确的是: ( D )A. struct是结构体类型的关键字B. struct student 是用户界说的结构体类型C. num, score都是结构体成员名D. stu是用户界说的结构体类型名31.若有以下说明语句:struct date{ int year;int month;int day;}brithday;则下面的叙述不正确的是__C___.A) struct是声明结构体类型时用的关键字B) struct date 是用户界说的结构体类型名C) brithday是用户界说的结构体类型名D) year,day 都是结构体成员名32. 以下对结构变量stul中成员age的非法引用是Bstruct student{ int age;int num;}stu1,*p;p=&stu1;A) stu1.age B) student.age C) p->age D) (*p).age33.设有如下界说:struck sk{ int a;float b;}data;int *p;若要使P指向data中的a域,正确的赋值语句是CA) p=&a; B) p=data.a; C) p=&data.a;D)*p=data.a;34.设有以下说明语句:typedef struct stu{ int a;float b;} stutype;则下面叙述中毛病的是(D).A、struct是结构类型的关键字B、struct stu是用户界说的结构类型C、a和b都是结构成员名D、stutype是用户界说的结构体变量名35.语句int *p;说明了 C .A)p是指向一维数组的指针B)p是指向函数的指针,该函数返回一int型数据C)p是指向int型数据的指针// 指针的界说教材P223D)p是函数名,该函数返回一指向int型数据的指针36.下列不正确的界说是(A).A.int *p=&i,i;B.int *p,i;C.int i,*p=&i; D.int i,*p;选项A先界说一个整型指针变量p,然后将变量i的地址赋给p.然而此时还未界说变量i因此编译器无法获得变量i的地址.(A与C比较,选项C先界说变量i,则在内存中为i分配空间,因此i在内存空间的地址就可以确定了;然后再界说p,此时可以为p赋i的地址,C正确)37. 若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是: (D)A)p=q B)*p=*q C)n=*q D)p=np,q同为整型指针变量,二者里面仅能寄存整型变量的地址.选项A,q中为地址,因此可将此地址赋给p选项B,*p暗示p所指向对象n的内容,即一个整数;*q 暗示q所指向对象的内容,由于在界说q时为其初始化,将p中n的地址给q,因此p中寄存n的地址,*q暗示q所指向对象n的内容.因此*p=*q 相当于 n=n;选项C,n=*q 等价于n=n;选项D,p中只能寄存地址,不能将n中的整数值赋给p 38.有语句:int a[10],;则B是对指针变量p的正确界说和初始化.A)int p=*a; B)int *p=a; C)int p=&a; D)int *p=&a;选项A,a是数组名,不是指针变量名,因此不成用*标注数组名a选项C,a是数组名,数组名就是地址,无需再用地址符号.而且在界说指针变量p时,应在变量名前加*,标明p是指针变量选项D,a是数组名,数组名就是地址,无需再用地址符号.39.若有说明语句“int a[5],*p=a;”,则对数组元素的正确引用是( C ).A.a[p]B.p[a]C.*(p+2)D.p+2首先界说一个整型数组a,a的长度为5,然后界说一个指针变量p,并同时对p进行初始化,将数组a的地址赋给p.因此此时p中寄存的数组a的首地址,即数组中第一个元素a[0]的地址.对数组元素下标的引用(详见p144), 一般形式数组名[下标] 其中下标为逻辑地址下标,从0开始计数,方括号中的下标可以是变量,可以是表达式,但结果一定要是整数.选项A,p中寄存的是地址,不是整数,不能做数组元素的下标选项B,a是数组名,数组名就是地址,不是整数,不能做数组元素的下标选项C,(重点!!!详见p231~234) p+2暗示指向同一数组中的下两个元素的地址,以后p指向a[0],则p+2暗示a[2]的地址,因此*(p+2)暗示a[2]的内容40. 有如下法式int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;则数值为9的表达式是BA) *P+9 B) *(P+8) C) *P+=9 D) P+8(重点!!!详见p231~234)首先界说一个整型数组a,a的长度为5,然后界说一个指针变量P,并同时对P进行初始化,将数组a的地址赋给P.因此此时P中寄存的数组a的首地址,即数组中第一个元素a[0]的地址.数组中9对应的是a[8], 选项B,P+8暗示数组中后8个元素的地址,即a[8]的地址.*(P+8)则暗示该地址内所寄存的内容,即a[8]的值.选项A,*P暗示P所指向对象的内容,此时P指向a[0], *P即a[0]的值1. *P+9=1+9=10选项C,*P暗示P所指向对象的内容,此时P指向a[0], *P即a[0]的值.因此*P+=9 即*P =*P+9, 等价于a[0]=a[0]+9.选项D,P+8暗示数组中后8个元素的地址,即a[8]的地址,而非a[8]中的值.41. 在C语言中,以D作为字符串结束标识表记标帜A)’\n’ B)’ ’ C) ’0’ D)’\0’42.下列数据中属于“字符串常量”的是(A).A.“a”B.{ABC}C.‘abc\0’D.‘a’若干个字符构成字符串在C语言中,用单引号标识字符;用双引号标识字符串选项B,C,分别用{}和’’标识字符串选项D,标识字符.43.已知char x[]="hello", y[]={'h','e','a','b','e'};, 则关于两个数组长度的正确描述是B .A)相同 B)x年夜于y C)x小于y D)以上谜底都分歧毛病C语言中,字符串后面需要一个结束标识表记标帜位'\0',通常系统会自动添加.对一维数组初始化时可采纳字符串的形式(例如本题数组x),也可采纳字符集合的形式(例如本题数组y).在以字符串形式初始化时,数组x不尽要存储字符串中的字符,还要存储字符串后的结束标识表记标帜位,因此数组x的长度为6;在以字符集合形式初始化时,数组y,仅存储集合中的元素,因此数组y长度为5二、读法式基本输入输出及流程控制1.#include <stdio.h>main(){ int a=1,b=3,c=5;if (c==a+b)printf("yes\n");elseprintf("no\n");}运行结果为:no详见教材p89 选择结构详见教材p91关系符号详见附录D p378符号的优先级==暗示判断符号两边的值是否相等;=暗示将符号右边的值赋给左边的变量本题考点是选择结构3种基本形式的第二种选择结构三种一般形式中的“语句”皆为复合语句,复合语句要用{ }括起来,只有当复合语句中只包括一条语句时可以省略{ },此题即如此,因此两个printf把持没有加{ }若c==a+b成立,则执行printf("yes\n");否则(即c==a+b不成立),执行printf("no\n");+的优先级高于==,因此先算a+b,值为4,表达式5==4不成立,因此执行printf("no\n");即输出字符串no2.#include <stdio.h>main(){ int a=12, b= -34, c=56, min=0;min=a;if(min>b)min=b;if(min>c)min=c;printf("min=%d", min);}运行结果为:min=-34详见教材p89 选择结构本题考点是选择结构3种基本形式的第一种一共包括了两个选择结构(两个if语句)界说变量,并赋值此时a=12, b= -34, c=56, min=0将a中值拷贝,赋给min,覆盖了min中的0,此时min中的值被更新为12.若min>b成立,则执行min=b;若min>c成立,则执行min=c;输出min中的值12年夜于-34,第一个if语句的表达式成立,因此执行min=b; 执行后min中的值被更新为-34.-34小于56,第二个if语句的表达式不成立,因此不执行min=c;最后输出min中的值,为-34.3.#include <stdio.h>main(){ int x=2,y= -1,z=5;if(x<y)if(y<0)z=0;elsez=z+1;printf(“%d\n”,z);}运行结果为:5遇到选择结构,首先要明确条件表达式成立时执行哪些把持.本题中,第一个if语句,其后的复合语句没有年夜括号{ },说明复合语句中只包括一条语句,进而省略了{ }.内层的if...else...是选择结构的第二种基本形式,在结构上视为一条语句.因此内层的if...else...作为第一个if语句的复合语句.若表达式x<y成立,则继续判断若y<0,则执行z=0;否则(即y>=0),执行z=z+1;输出z2>-1,表达式x<y不成立,因此不执行内层的if…else….进而z中的值没有被改变.输出z中的值为54.#include <stdio.h>main(){ float a,b,c,t;a=3;b=7;c=1;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf("%,%,%",a,b,c);}运行结果为:详见教材p72数据的输出形式本题包括了3个if语句,每个if语句后的{ }都不成省略,因为每个{ }中都包括了多条语句若表达式a>b成立,则执行{t=a;a=b;b=t;}若表达式a>c成立,则执行{t=a;a=c;c=t;}若表达式b>c成立,则执行{t=b;b=c;c=t;}输出a,b,c中的值,要求输出的每个数据宽度为5个空格,小数部份保管2位,数据右对齐3小于7,因此表达式a>b不成立,因此不执行{t=a;a=b;b=t;} 3年夜于1,因此表达式a>c成立,则执行{t=a;a=b;b=t;}.第一句,将a中的3拷贝,粘贴到t中;第二句,将c中的1拷贝,粘贴到a中,覆盖失落先前的3;第三句.将t中的3拷贝到c中,覆盖失落c中先前的1. 执行完复合语句后实现了a,c元素的值的互换,a为1,c为3,t为3,.7年夜于c中的3,因此b>c成立,执行则执行{t=b;b=c;c=t;},过程同上,执行后b为3,c为7,t为7此时输出a,b,c中的值为5.#include < stdio .h >main ( ){ float c=3.0 , d=4.0;if ( c>d ) c=5.0;elseif ( c==d ) c=6.0;else c=7.0;printf ( “%.1f\n”,c ) ;}运行结果为:此题为if...else...语句的嵌套,第二if...else...作为第一个if...else...语句else部份的复合语句.若表达式c>d成立,则执行c=5.0;否则(表达式c>d不成立)若表达式c==d成立,则执行c=6.0;否则,执行c=7.0;输出c中的值小于,因此表达式c>d不成立,执行第二个if…else….不即是,因此表达式c==d不成立,执行,将赋给c, 覆盖失落c中的,此时c中的值为输出此时的c中的值6.#include <stdio.h>main(){ int m;scanf("%d", &m);if (m >= 0){ if (m%2 == 0) printf("%d is a positive even\n", m);else printf("%d is a positive odd\n", m); }else{ if (m % 2 == 0) printf("%d is a negative even\n", m);else printf("%d is a negative odd\n", m); } }若键入-9,则运行结果为: -9 is a negative odd7.#include <stdio.h>main(){ int num=0;while(num<=2){ num++;printf("%d\n",num);}}运行结果为:123详见教材p115循环结构当循环条件num<=2成立的时候,执行循环体{ num++;printf("%d\n",num);}中的语句.循环初值num为0;循环条件num<=2成立第1次循环:执行num++;即将num中的值加1,执行后num为1;执行printf("%d\n",num);在屏幕上输出num 中的值,即输出1,之后换行此时num中的值为1,循环条件num<=2成立第2此循环:执行num++;即将num中的值加1,执行后num为2;执行printf("%d\n",num);在屏幕上输出num 中的值,即输出2,之后换行此时num中的值为2,循环条件num<=2成立第3此循环:执行num++;即将num中的值加1,执行后num为3;执行printf("%d\n",num);在屏幕上输出num 中的值,即输出3,之后换行此时num中的值为3,循环条件num<=2不成立,结束循环. 8.#include <stdio.h>main( ){ int sum=10,n=1;while(n<3) {sum=sum-n; n++; }printf(“%d,%d”,n,sum);}运行结果为:3,7当循环条件n<3成立的时候,执行循环体{sum=sum-n; n++; }中的语句.循环初值sum为10,n为1;循环条件n<3成立第1次循环:执行sum=sum-n=10-1=9;执行n++,即将n中的值加1,执行后n为2;此时n中的值为2,sum中的值为9,循环条件n<3成立,继续执行循环第2次循环:执行sum=sum-n=9-2=7;执行n++,即将n中的值加1,执行后n为3;输出此时n,sum中的值,即为3,7.需要注意,在printf(“%d,%d”,n,sum); 中要求输出的数据彼其间用逗号间隔,因此结果的两个数据间一定要有逗号9.#include <stdio.h>main(){ int num,c;scanf("%d",&num);do {c=num%10; printf("%d",c); }while((num/=10)>0); printf("\n");}从键盘输入23,则运行结果为:32详见教材p117循环结构;p60复合的赋值运算符do{ }while(表达式);先无条件执行循环体,再判断循环条件.注意while(表达式)后有分号界说整型变量num,c;为num赋一个整型值;执行{c=num%10; printf("%d",c); }直到循环条件(num/=10)>0不成立;输出换行已知为num赋值23第1次执行循环体执行c=num%10=23%10=3;执行printf("%d",c);输出3判断循环条件num/=10等价于num=num/10; 因此num=23/10=2, 2年夜于0,因此循环条件(num/=10)>0成立,继续执行循环体.执行完第1次循环时,num为2,c为3第2次执行循环体执行c=2%10=2;执行printf("%d",c);再输出2判断循环条件num=2/10=0,0即是0,因此循环条件(num/=10)>0不成立.结束循环10#include <stdio.h>main(){ int s=0,a=5,n;scanf("%d",&n);do { s+=1; a=a-2; }while(a!=n);printf("%d,%d\n",s,a);}若输入的值1,运行结果为: 2,1详见教材p117循环结构;p60复合的赋值运算符执行{ s+=1; a=a-2; }直到循环条件a!=n不成立;已知为n赋值1,s为0,a为5第1次执行循环体执行s+=1;等价于s=s+1=0+1执行a=a-2; a=5-2=3判断循环条件,3不即是1,因此循环条件a!=n成立,继续执行循环体.执行完第1次循环时,s为1,a为3第2次执行循环体执行s+=1;等价于s=s+1=1+1=2执行a=a-2; a=3-2=1判断循环条件,1即是1,因此循环条件a!=n不成立,结束循环.执行完第2次循环时,s为2,a为1输出此时s,a中的值,结果为2,111.#include "stdio.h"main(){char c;c=getchar();while(c!='?') {putchar(c); c=getchar(); } }如果从键盘输入abcde?fgh(回车)运行结果为:abcde12.#include <stdio.h>main(){ char c;while((c=getchar())!=’$’){ if(‘A’<=c&&c<=‘Z’) putchar(c);e lse if(‘a’<=c&&c<=‘z’) putchar(c-32); }}当输入为ab*AB%cd#CD$时,运行结果为:ABABCDCD 13.#include <stdio.h>main(){ int x, y =0;for(x=1;x<=10;x++){ if(y>=10)break;y=y+x;}printf(“%d %d”,y,x);}运行结果为:10 5详见教材p120 for语句详见教材p126~128 break,continue语句for( 表达式1;表达式2;表达式3){}(1) 先求解表达式1(2) 求解表达式2,若其值为真,执行循环体,然后执行 (3). 若为假,则结束循环,转到(5)(3) 求解表达式3(4) 转回上面 (2)继续执行(5) 循环结束,执行for语句下面的一个语句break ,跳出循环体;continue,结束本次循环(第i次循环),继续执行下一次循环(第i+1次循环)此题表达式1为x=1,表达式2(循环条件)为x<=10,表达式3为x++初值x为1,y为0,循环条件(即表达式2)x<=10成立,进入循环体第1次循环执行if语句.0小于10,if语句的条件表达式不成立,不执行break;执行y=y+x; y=0+1=1转向表达式3,执行x++, x=x+1=1+1=2.循环条件x<=10成立,进入第2次循环第2次循环执行if语句.1小于10,if语句的条件表达式不成立,不执行break;执行y=y+x; y=1+2=3转向表达式3,执行x++, x=x+1=2+1=3.循环条件x<=10成立,进入第3次循环第3次循环执行if语句.3小于10,if语句的条件表达式不成立,不执行break;执行y=y+x; y=3+3=6转向表达式3,执行x++, x=x+1=3+1=4.循环条件x<=10成立,进入第4次循环第4次循环执行if语句.6小于10,if语句的条件表达式不成立,不执行break;执行y=y+x; y=6+4=10转向表达式3,执行x++, x=x+1=4+1=5.循环条件x<=10成立,进入第5次循环第5次循环执行if语句.10即是10,if语句的条件表达式成立,执行break,跳出循环.从break跳出至for语句的下一条语句.执行printf(“%d %d”,y,x);输出以后的y与x.结果为10 514.#include<stdio.h>main( ){ char ch;ch=getchar( );switch(ch){ case ‘A’ : printf(“%c”,’A’);case ‘B’ : printf(“%c”,’B’); break;default: printf(“%s\n”,”other”);} }当从键盘输入字母A时,运行结果为:AB详见教材p103,switch语句switch(表达式){ case 常量1 :语句1case 常量2 :语句2┇┇┇case 常量n :语句ndefault : 语句n+1}其中表达式,常量1,…,常量n都为整型或字符型case相当于给出执行法式的入口和起始位置,若找到匹配的常量,则从此处开始往下执行法式,不再匹配常量,直至遇到break或switch结束本题过程:首先从键盘接收一个字符’A’并将其放在变量ch中.执行switch语句.Switch后面的条件表达式为ch,因此表达式的值即为字符’A’. 用字符’A’依次与下面的case中的常量匹配.与第1个case后的常量匹配,则从其后的语句开始往下执行法式(在执行过程中不再进行匹配.)因此先执行printf(“%c”,’A’),屏幕上输出A;再往下继续执行printf(“%c”,’B’),屏幕上输出B;再继续执行break,此时跳出switch语句.15.#include <stdio.h>main( ){ int a=1,b=0;scanf(“%d”,&a);switch(a){ case 1: b=1;break;case 2: b=2;break;default : b=10;}printf("%d ", b);}若键盘输入5,运行结果为:10本题过程:首先用scanf函数为变量a赋值为5.执行switch语句.switch后面的条件表达式为a,因此表达式的值即为5. 用5依次与下面case中的常量匹配.没有找到匹配的常量,因此两个case后的语句都不执行.执行default 后面的语句b=10;将10赋给变量b.输出变量b,结果为1016.#include <stdio.h>main()_{ char grade=’C’;switch(grade){case ‘A’: printf(“90-100\n”);case ‘B’: printf(“80-90\n”);case ‘C’: printf(“70-80\n”);case ‘D’: printf(“60-70\n”); break;case ‘E’: printf(“<60\n”);default : printf(“error!\n”);}}运行结果为:70-8060-70本题过程:首先从键盘接收一个字符’C’并将其放在变量grade中.执行switch语句.switch后面的条件表达式为grade,因此表达式的值即为字符’C’. 用字符’C’依次与下面的case中的常量匹配.与第3个case后的常量匹配,则从其后的语句开始往下执行法式(在执行过程中不再进行匹配.)因此先执行printf(“70-80\n”);,屏幕上输出70-80,并换行;再往下继续执行printf(“60-70\n”),屏幕上输出60-70,并换行;再继续执行break,此时跳出switch语句.17.#include <stdio.h>main(){ int y=9;for(;y>0;y- -)if(y%3==0){ printf(%d”,- -y);}}运行结果为:852详见教材p53,自增自减符号此题表达式1被省略,表达式2(循环条件)为y>0,表达式3为y--初值y为9,循环条件(即表达式2)y>0成立,进入循环体第1次循环执行if语句.9%3==0,if语句的条件表达式成立,执行printf(%d”,- -y),即y先自减1酿成8,然后在输出,因此屏幕上输出8转向表达式3,执行y--, y=y-1=8-1=7.循环条件y>0成立,进入第2次循环第2次循环执行if语句.7%3不为0,if语句的条件表达式不成立,不执行printf(%d”,- -y)转向表达式3,执行y--, y=y-1=7-1=6.循环条件y>0成立,进入第3次循环第3次循环执行if语句.6%3==0,if语句的条件表达式成立,执行printf(%d”,- -y),即y先自减1酿成5,然后在输出,因此屏幕上输出5转向表达式3,执行y--, y=y-1=5-1=4.循环条件y>0成立,进入第4次循环第4次循环执行if语句.4%3不为0,if语句的条件表达式不成立,不执行printf(%d”,- -y)转向表达式3,执行y--, y=4-1=3.循环条件y>0成立,进入第5次循环第5次循环执行if语句.3%3==0,if语句的条件表达式成立,执行p rintf(%d”,- -y),即y先自减1酿成2,然后在输出,因此屏幕上输出2转向表达式3,执行y--, y=y-1=2-1=1.循环条件y>0成立,进入第5次循环第6次循环执行if语句.1%3不为0,if语句的条件表达式不成立,不执行printf(%d”,- -y)转向表达式3,执行y--, y=1-1=0.循环条件y>0不成立,循环结束.18.#include <stdio.h>main(){ int i,sum=0; i=1;do{ sum=sum+i; i++; }while(i<=10); printf(“%d”,sum);}运行结果为:5519.#include <stdio.h>#define N 4main(){ int i;int x1=1,x2=2;printf("\n");for(i=1;i<=N;i++){ printf("%4d%4d",x1,x2);if(i%2==0)printf("\n");x1=x1+x2;x2=x2+x1;}}运行结果为:1 2 3 58 13 21 34此题首先为整型变量赋初值x1=1,x2=2表达式1为i=1,表达式2(循环条件)为i<=N即i<=4,表达式3为i++循环变量初值i为1,循环条件(即表达式2)i<=4成立,进入第1次循环第1次循环执行printf("%4d%4d",x1,x2);因此屏幕上输出1 2执行if语句.1%2不为0,if语句的条件表达式不成立,不执行printf("\n");执行x1=x1+x2=1+2=3;此时x1中的值已酿成3执行x2=x2+x1=2+3=5.转向表达式3,执行i++, i为2.循环条件i<=4成立,进入第2次循环第2次循环执行printf("%4d%4d",x1,x2);因此屏幕上输出3 5执行if语句.2%2==0,if语句的条件表达式成立,执行printf("\n");换行执行x1=x1+x2=3+5=8;此时x1中的值已酿成8执行x2=x2+x1=5+8=13.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、单项选择题(每题3分,共30分,注意:答案写在后面的答题卡内,否则0分)1、若有定义:int a=8, b=5, c;执行语句c = a/b+0.4 ;后,c的值为()。
A) 1.4 B) 1 C) 2.0 D) 22 、以下程序中,while 循环的次数是()。
#include <stdio.h>void main(void){ int i = 0;while (i<10) {if (i<1) continue;if (i= =5) break; i++; } }A) 1 B) 死循环,不能确定次数C) 6 D) 103、以下程序的输出结果是()。
#include <stdio.h>void main(void){ int a = 0, i;for (i=1; i<5; i++){ switch (i) { case 0:case 3: a += 2;case 1:case 2: a += 3;default: a += 5; }}printf(“%d\n”, a);}A) 31 B) 13 C) 10 D) 204、以下程序的输出结果是()。
#include <stdio.h>void main(void){ int a = 5, b = 4, c = 6, d;printf(“%d\n”, d=a>b?(a>c?a: c): b);}A) 5 B) 4 C) 6 D) 不确定5、执行以下程序后的输出结果是()#include <stdio.h>void main(void){char a[]=”abc\0abc”;printf(“%s”, a);}A) abc\0abc B) abc\ C) abc\0 D) abc6、当调用函数时,实参是一个数组名,则向函数传送的是()。
A) 数组的长度B) 数组的首地址C) 数组每一个元素的地址D) 数组每个元素中的值7、执行以下程序后,a的值为()。
int *p, a = 10, b=1; p = &a; a = *p + b;A) 12 B) 编译出错 C) 10 D) 11 8、以下正确的叙述是( )。
A) 在C 语言中,main 函数必须位于文件的开头 B) C 语言每行中只能写一条语句 C) C 语言本身没有输入、输出语句D) 对一个C 语言进行编译预处理时,可检查宏定义的语法错误 9、以下程序的输出结果是( )。
void main(void){ int a = 4, b = 5, c = 0, d; d = !a && !b || !c; printf(“%d\n ”, d); }A) 1 B) 0 C) 非0的数 D) –1 10、执行以下程序段后,变量y 的值是( )。
int x, y; x = 1;y = (++x*5);A) 5 B) 10 C) 15 D) 20评分标准:每题选对满分,选错0分。
二、分析结果题(20分) 1、(9分)#include <stdio.h> void f(int c) { int a=0;static int b=0; a++; b++;printf("%d: a=%d, b=%d\n", c, a, b); }void main(void) { int i;for (i=1; i<=3; i++) f( i ); }运行结果为: 1: a=1,b=12: a=1,b=2 3: a=1,b=3 2、(11分)#include <stdio.h> void main(void) {int num,c; num=2004; do {c=num%10; printf("%d",c);} while((num/=10)>0); printf("\n"); }运行结果为:4002三、程序填空题(每空4分,共20分)1、求1!+2!+3!+。
+10! #include <stdio.h> void main(void) {float s = 0, t = 1; int n;for (n=1; n<=10 ; n++) {t=t*n ; s =s+t ; }printf(“1!+2!+3!+。
+10!=%f ”, s);}2、以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。
void exchange(int *x, int *y) { int t; t=*y;*y = * x ; *x = t ;}四、程序设计题(30分)(1) sum=2+5+8+11+14----,输入正整数n ,求sum 的前n 项和。
(10分)void main(){int n,i,t,sum=0; //1 分scanf("%d",&n); //1分t=2; //1分for(i=1;i<=n;i++) //2分{sum=sum+t; //2分t=t+3; //2分}printf("sum=%d",sum); //1 分}(2)今有100块砖,需100人来搬,男搬4,女搬3,两个小孩搬一砖。
问男、女、小孩各几何?(8分)# include "stdio.h"void main( ){ int man,woman,child; //1分for(man=0;man<=100;man++) //1分for(woman=0;woman<=100;woman++) //1分for(child=0;child<=100;child++) //1分{if (8*man+6*woman+child==200 && man+woman+child==100) //2分printf("%d %d %d\n",man,woman,child); //2分}}(3)求一个矩阵外围元素之和。
(12分)#include <stdio.h>#define N 4#define M 5double matrix_sum(double matrix[][M]){ double sum=0;int k;for (k=0;k<N;k++){sum=sum+matrix[k][0];sum=sum+matrix[k][M-1]; //3分}for (k=1;k<M-1;k++){sum=sum+matrix[0][k];sum=sum+matrix[N-1][k]; //3 分}return sum; //1 分}void main(){int i,j;double matrix_source[N][M];double t;double result;for (i=0;i<N;i++)for (j=0;j<M;j++){scanf("%lf",&t); // 1 分matrix_source[i][j]=t; // 2分}result=matrix_sum(matrix_source); //2 分printf("%lf\n",result);}二、单项选择题(每题2分,共30分,注意:答案写在后面的答题卡内,否则0分)1、下面哪一个是正确的标识符()A qbc?B bc$C _bcD 2bc2、设有int a[6]={1,2,3,4,5,6},*p=a;则*(p+3)与(*a+3)的值为()A 1,3B 3,3C 4,4D 4,63、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为()A 0B 1C 2D 34、t为int类型,进入下面的循环之前,t的值为0while( t=l ){ ……}则以下叙述中正确的是( )A 循环控制表达式的值为0B 循环控制表达式的值为1C 循环控制表达式不合法D 以上说法都不对5、设int i=4,j=8,k;则表达式k=(i++,++i,j++)的值为()A 4B 8C 9D 106、有宏定义 #define MULT1(a,b) a*b#define MULT2(a,b) (a)*(b)宏引用 Y=MULT1(3+2,5+8);Z=MULT2(3+2,5+8)后,则Y和Z的值是()。
A Y=65,Z=65B Y=21,Z=65C Y=65,Z=21D Y=21,Z=217、若定义a为int型变量,则对指针变量p的正确初始化是()。
A int *p=a;B int *p=*a;C int p=&a;D int *p=&a;8、以下程序的输出结果是()main(){ int a=3;printf("%d\n",(a+a-=a*a) );}A -6B 12C 0D -129、在一个源文件中定义的全局变量的作用域为()。
A 本文件的全部范围B 本程序的全部范围C 本函数的全部范围D 从定义该变量的位置开始至本文件结束10、设有int I; I=7/2;printf(“%d”, I);则执行结果为()A 3.5B 3.50C 3D 3.011、在C语言中,合法的长整型常数是()A 0LB 4962710C 324562&D 216D12、以下选项中合法的字符常量是()A "B"B '\010'C 68D D13、假定x和y为double型,则表达式x=2,y=x+3/2的值是()A 3.500000B 3C 2.000000D 3.00000014、设x、y均为整型变量,且x=10, y=3,则以下语句的输出结果是()printf("%d,%d\n",x--,--y);A 10,3B 9,3C 9,2D 10,215、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是()A INPUT x、y、z;B scanf("%d%d%d",&x,&y,&z);C scanf("%d%d%d",x,y,z);D read("%d%d%d",&x,&y,&z);二、分析结果题(23分)1、(6分)#include “stdio.h”void main(){ int I=6,x,y;x=I++;y=++I;printf(“%d,%d”,x,y);}运行结果为: 6 , 8评分标准:写对一个数字得3分,全写对得6分。