11级C语言复习
- 格式:doc
- 大小:48.00 KB
- 文档页数:4
《C语言》课程综合复习资料一、单项选择1. 若有如下语句: int *p1,*p2; 则其中int所指的是(D )A. p1的类型B. *p1和*p2的类型C. p2的类型D. p1和p2所能指向变量的类型2. 下列程序段的输出结果是(C )x=9; while(x>7) {printf(“*”);x--;}A. ****B. ***C. **D. *3. 下列变量的定义及赋值正确的是(C)A. int i=0;j;B. char c=”A”;C. double x,y,z; x=y=z=100;D. float a=b=100;4. 设有语句:int x=10;x = x -= x - x;,则执行语句后,x的值为(B )A. 30B. 20C. 10D. 405. 设有语句:float x=1,y; y=x 3/2; 则y的值是(C )A. 1B. 2C. 2.0D. 2.56. 设有如下定义和执行语句,其输出结果为(A )int a=3,b=3; a = --b + 1; printf(“%d %d”,a,b);A. 3 2B. 4 2C. 2 2D. 2 37. 设有两字符串“Beijing”、“China”分别存放在字符数组str1[10],str2[10]中,下面语句中能把“China”连接到“Beijing”之后的为(C )A. strcpy(str1,str2);B. strcpy(str1, “China”);C. strcat(str1,“China”)D. strcat(“Beijing”,str2);8. 设有定义语句:char str[][20]={""Hello"",""Beijing""},*p=str; 则printf(""%d\n"",strlen(p+20)); 输出结果是(C )A. 0B. 5C. 7D. 209. 设有定义int a[ ]={1,5,7,9,11,13},*p=a 3;则*(p-2),*(a 4)的值是(A )C. 5 9D. 有错误10. 设有定义:int x=0,y=1,z=1;则运行表达式:x=y >z--后,x,y,z的值分别是(D )A. 1,1,1B. 1,2,0C. 0,1,1D. 0,2,011. 设有定义:int x=12,n=5; 则表达式x%=(n%2) 的值为(A )A. 0B. 1C. 2D. 312. 设有定义int a=3,b=4,c=5; ,则以下表达式中,值为0的表达式是(D )A. a&&bB. a<=bC. a||b c&&b-cD. !((a<b)&&!c||1)13. 设有定义int a[ ]={1,5,7,9,11,13}, *p=a 3; 则*(p-2) , *(a 4) 的值是(A )A. 5 11B. 1 9C. 5 9D. 有错误14. 设有定义char *p=“abcde\0fghjik\0”; 则printf(“%d\n”,strlen(p));输出结果是(D )A. 12B. 15C. 6D. 515. 设有int x=11;则表达式(x *1/3)的值是(A )A. 3B. 4C. 11D. 1216. 设a=3,b=4,c=-5,则逻辑表达式:a || b c && b==c 的值是(A )A. 1B. 0C. 非0D. 语法错17. 若有以下定义:int a[10],*p=a; 则*(p+3)表示的是(B )A. 元素a[3]的地址B. 元素a[3]的值C. 元素a[4]的地址D. 元素a[4]的值18. 若有以下定义:char s[20]= "programming",*ps=s;则不能代表字符g的表达式是(A )A. ps 3D. ps =3,*ps19. C语言中,函数返回值的类型是由(D )A. return语句中的表达式类型决定B. 调用函数的主调函数类型决定C. 调用函数时的临时类型决定D. 定义函数时所指定的函数类型决定20. C语言提供的合法关键字是(D )A. swicthB. chaC. CaseD. default二、读程序题1. "#include <stdio.h>void main(){ int a=4,x=3,y=2,z=1;printf(""%d\n"",(a<x ? a : z<y ? z : x)); }"2. "#include <stdio.h>void main(){ int x=12,y=0;if(x>=0){ if(x>0) y=10; }else y=-10;printf(“y=%d\n”,y);}"3. "#include <stdio.h>void main(){ int k=1;switch(k){ case 0: printf(""A""); break;case 1: printf(""B"");case 2: printf(""I"");case 3: printf(""G""); break;default: printf(""E"");}}"4. "#include <stdio.h>#define S(x) x*xvoid main(){int a,k=3,m=1;a=S(k+m);printf(""%d"",a);}"5. "#include <stdio.h>int fun(int a, int b){ if(a>b) return(a);else return(b);}void main(){ int x=3, y=8, z=6, r;r=fun(fun(x,y), 2*z);printf(""%d\n"", r);}"6.#include <stdio.h&>void main(){ int k=4,n=0;for(;n<k;){ n++;if(n%3!=0) continue;k- -;}printf(""%d,%d\n"",k,n);}三、编程题1. 写一个判断素数的函数。
【关键字】知识第一章C语言基础知识一、选择题1.C语言规定,必须用作为主函数名。
A)Function B)include C)main D)stdio2.一个C程序可以包含任意多个不同名的函数,但有且仅有一个,一个C程序总是从开始执行。
A)过程B) 主函数C)函数D)include 3.是C程序的基本构成单位。
A)函数B) 函数和过程C) 超文本过程D) 子程序4.下列说法正确的是。
A)一个函数的函数体必须要有变量定义和执行部分,二者缺一不可B)一个函数的函数体必须要有执行部分,可以没有变量定义C)一个函数的函数体可以没有变量定义和执行部分,函数可以是空函数D)以上都不对5.下列说法正确的是。
A)main函数必须放在C程序的开头B)main函数必须放在C程序的最后C)main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执行的D)main函数可以放在C程序的中间部分,但在执行C程序时是从main函数开始的6.下列说法正确的是。
A)在执行C程序时不是从mian函数开始的B)C程序书写格式严格限制,一行内必须写一个语句C)C程序书写格式自由,一个语句可以分写在多行上D)C程序书写格式严格限制,一行内必须写一个语句,并要有行号7.在C语言中,每个语句和数据定义是用结束。
A)句号B)逗号C)分号D)括号8.下列字符串是标识符的是。
A)_HJ B)9_student C)long D)LINE 19.以下说法正确的是。
A)C语言程序总是从第一个定义的函数开始执行B)在C语言程序中,要调用的函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分10.不是C语言提供的合法关键字。
A)switch B)print C)case D)default11.C语言提供的合法关键字是。
A)breack B)print C)funiton D)end12.C语言提供的合法关键字是。
一、选择题1、可以在C语言中使用的一组用户标识符是()。
A、3B sizeof DOB、ab34 c1_c2 _forC、_123 t2_a1_ printfD、void 6b hat2、以下均是字符常量或数值常量的选项是()。
A、0.0 0f 8.9e …&‟B、”A” 3.9e-2.5 1e1C、‟3‟011 0xff00 0aD、0xabcd 2e3 50.3、以下选项中正确的实型常量是()。
A、0B、0.618*10C、567D、3.14154、将汇编语言编写的程序翻译为目标程序的是()程序。
A、解释B、编译C、汇编D、目标5、不属于面向机器的语言是()。
A、符号语言B、机器语言C、汇编语言D、C语言6、程序段的基本结构中,不包含()。
A、函数结构B、循环结构C、顺序结构D、分支结构7、下列符号中,不属于转义字符的是()。
A、\\B、\0xaaC、\0D、\t8、正确的C语言标识符是()。
A、_sum_1B、1_sumC、?_sumD、sum?9、增1减1运算只能作用于()。
A、常量B、变量C、表达式D、函数10、设“int a=2,b=2;”,则++a+b的结果是(),a的结果是(),b的结果是()。
A、2B、3C、4D、511、下列运算符中优先级最高级的是()。
A、++B、%C、*D、=12、设“int a=2;”,则表达式“(a++*1/3)”的值是(),a的值是()。
A、0B、1C、2D、313、字符数据在内存中的存储代码采用的是()。
A、反码B、补码C、EBCDIC码D、ASC II码14、char a; int b; float c; double d;则表达式a*b+d-c值的类型为()。
A、intB、floatC、doubleD、char15、字符串”\”\123\n\321a”的长度是()。
A、1B、5C、9D、1316、下列常量中,不属于字符常量的是()。
A、‟\1x‟B、‟0‟C、‟\‟‟D、‟\n‟17、语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是A. a\bre\'hi\'y\\\bouB. a\bre\'hi\'y\bouC. re'hi'youD. abre'hi'y\bou18、设整型变量k的值为011,下列表达式中值不为1的是()。
姓名:__________________年级专业:__________________ 学号:__________________凡年级专业、姓名、学号错写、漏写或字迹不清者,成绩按零分记。
…………………………密………………………………封………………………………线…………………………《复习卷》试卷一、单选题(每题1分,共计30分) 1、下列选项中,不合法的变量是(D )。
A 、int x = 3; B 、char ch = 'c' C 、float f ; D 、case c;2、下列选项中,不合法的常量是(D )。
A 、2 B 、'\n' C 、'a' D 、'\483'3、关于#include<stdio.h>这句代码,下列描述中错误的是(C ) A 、"#"是预处理标志,用来对文本进行预处理操作 B 、include 是预处理指令 C 、一对尖括号可以去掉D 、stdio.h 是标准输入输出头文件4、假设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 的值为( C )。
A 、0 B 、1 C 、2 D 、35、C 语言程序的三种基本结构是( A )。
A 、顺序结构,选择结构,循环结构 B 、递归结构,循环结构,转移结构 C 、嵌套结构,递归结构,顺序结构 D 、循环结构,转移结构,顺序结构6、关于下面的for 循环语句 int i,k; for(i = 0,k = -1;k = 1;i++,k++) printf(“*****”); 下列选项中,描述正确的是(B )A 、判断循环结束的条件非法B 、是无限循环C 、只循环一次D 、一次也不循环7、以下定义语句中,错误的是( D )。
C语言复习题1.表达式 1 / 2 *3 *4 的值为( a ) (选一项)A. 0B. 1C. 2D. 62. C语言中,运算对象必须是整型的运算符是( d ) (选一项)A. +B. -C. *D. %3.以下程序运行结果是( a ) (选一项)int a =10 ;if(a == 10){ printf(“1”) ; }else{ printf(“2”); }A. 1B. 2C. 1 1D. 1 24.关于switch语句,以下说法正确的是( ) (选一项)A. 表达式可以是任何数据类型B. 表达式只能是整形或字符类型C. case后面的值可以重复D. case语句可以省略5.以下程序运行结果是( b ) (选一项)int a = 0 ;switch ( a){case 0 : printf(“%d ” , a );case 1 : printf(“%d ” , a ++);case 2 : printf(“%d ” , ++a );case 3 : printf(“%d ” , a ++);case 4 : printf(“%d ” , a );}A. 01234B. 00223C. 0D. 001336.以下程序运行结果是( c ) (选一项)int i= 10 ;while ( i <= 15 ){printf(“%d\n”,i );i++;}A. 10 11 12 13 14 15 16B. 11 12 13 14 15 16C. 10 11 12 13 14 15D. 程序错误,不会执行7.以下程序运行结果是( ) (选一项)int i = 1;while( i=2 ){printf(“%d\n”,i );i++;}printf(“hello”);A. helloB. 是死循环C. 1 2D. 程序报错8.以下程序运行结果是( ) (选一项)int n =4;while ( n--){printf(“%d”,--n);}A. 2 0B. 3 1C. 3 2 1D. 2 1 09.对于for 循环,请选择正确的执行顺序( ) (选一项)for( 1 ; 2 ; 3 ){4}A. 1-2-3-4-3-2-......B. 1-2-3-4-3-2-4......C. 1-2-4-3-2-4-......D. 1-2-4-3-2-1-4......10.以下程序运行后sum的值是( ) (选一项)int i, sum;for( i=1; i<6; i++)sum+=i;printf(“%d\n”,sum);A. 15B. 14C. 不确定D. 011.以下正确的C语言自定义标识符是( ) (选一项)A. _1aB. 2a_C. doD. a.1212.设int a, x=2; 执行语句a=x>0?3*x:x=10;后,变量x的值是( ) (选一项)A. 1B. 2C. 6D. 1013.设有以下程序段:int x=2,y=2,z=0,a;a=++x||++y&&z++;printf("%d,%d,%d\n",x,y,z);执行后输出的结果是( )。
一、判断题。
1、#include 、#define、scanf和printf都不是C语句。
(对)//#号开头的,是C语言的命令,最后不加分号“;”。
scanf和printf是输入和输出函数,不是C 语言的语句-----C语言里没有输入和输出语句,是由函数(如:这里的scanf 和printf函数)来实现输入和输出的。
2、一个include命令只可以指定一个被包含的文件。
(对)//include命令一次只可以指定一个包含的文件,要包含多个文件要用多个include命令3、参加位运算的数据必须是整型的数据。
(对)//如:不能使float类型的数据4、若有int i=9, j=3; 则执行完i*=j+10; 后i的值为20。
(错)//i*=j+10=>i=i*(j+10)=9*(3+10)=9*135、9&3+11的值是12。
(错)// 9&3+11=9&(3+11)=>1001&1110=1000=>86、关系运算符>=与==的优先级相同。
(错)//关系运算符的前4个(>、>=、<、<=)的优先级相同。
后两个(==、!=)的优先级相同,并且低于前4个的优先级。
7、若i=5,则printf(“%d”,-i++);输出的值为-6。
(错)//++在后面是先将-i打印,再将i加1。
如果是printf(“%d”,- ++i);则输出的值就为-6.8、语句printf(“%f%%”,10.0/3);输出为3.333333。
(错)//10.0/3确实是3.333333,但是这里还有%%,所以输出的结果应该是3.333333%9、若有int i=20, j=0;则执行完语句if(j=0)i++;else i--;i的值为21。
(错)//注意这里是j=0,一个等号是赋值,也就是j=0,这里是假,所以应该执行else i—部分,i的值为19.10、若有定义和语句:int a[3][3]={{3,5},{8,9},{12,35}}, i, sum=0;for(i=0;i<3;i++) sum+=a[i][2-i];则sum=21。
C语⾔最重要的知识点复习资料(11.a版本)—昆明理⼯⼤学1.逗号表达式的值是第⼀个表达式的值。
(x)2.Vasual c++6.0中可以使⽤“//”和“/* */”注释程序,注释部分不编译.(x)3.增1(或⾃增)、减1(或⾃减)运算符都是双⽬运算符。
(x)4.C语⾔中,当把⼀个实型数据赋给整型变量时系统将⾃动截掉⼩数部分.(x)5.C语⾔中,⽤char只能定义字符变量,不能定义字符串变量。
(对)6.⼆元运算符均可以和赋值运算符构成复合的赋值运算符。
(对)7. C程序中以冒号作为语句的结束符。
(X)8. C语⾔中,putchar函数的功能是把⼀字节代码输出到标准输出设备。
(对)9. C语⾔中,为了区别⼀般的变量,符号常量必须⽤⼤写字母表⽰。
(X)10. C语⾔中,字符数据⽤格式说明"%c"来输出,字符串数据⽤格式说明"%s"来输出。
(对)11.可以⽤swicth结构实现的程序都可以使⽤if语句来实现。
(对)12.逻辑运算符的运算优先级低于算术运算符的运算优先级。
(X)13.两个变量交换数据时常使⽤⼀个⼯作变量。
(对)14. switch…case结构中条件表达式和常量表达式值可以为float 类型。
(X)15. C语⾔规定,else总是与它上⾯、最近的、尚未配对的if配对。
(对)16.switch…case结构中case后的表达式必须为常量表达式。
(对)17. if(表达式)语句1 else 语句2 结构中,如表达式为a>10,则else的条件隐含为a<10。
(X)18. switch语句的结束发⽣在break;语句的执⾏或者switch语句的“}”。
(对)19. switch后⾯园括号内的表达式的值和case后⾯的常量表达式的值都必须是整型或字符型,不允许是浮点型。
(对)20.语句int a=2;if(a=3)b=1;执⾏后b的值是1。
(对)21.以下程序的输出是_______。
一、C语言概述练习题选择1.一个C程序的执行是从。
A) 本程序的main函数开始,到main函数结束B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C) 本程序文件的第一个函数开始,到本程序main函数结束D) 本程序的main函数开始,到本程序文件的最后一个函数结束2.以下叙述不正确的是。
A) 一个C源程序必须包含一个main函数 B)一个C源程序可由一个或多个函数组成C) C程序的基本组成单位是函数 D) 在C程序中,注释说明只能位于一条语句的后面3.以下叙述正确的是。
A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误B) 在C程序中,main函数必须位于程序的最前面C) C语言本身没有输入输出语句 D) C程序的每行中只能写一条语句4.一个C语言程序是由。
A)一个主程序和若干个子程序组成 B) 函数组成 C) 若干过程组成 D) 若干子程序组成5.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是。
A) C语言程序仅可以编译执行B) C语言程序仅可以解释执行C) C语言程序既可以编译执行又可以解释执行D) 以上说法都不对6.以下叙述中错误的是。
A) C语言的可执行程序是由一系列机器指令构成的B)用C语言编写的源程序不能直接在计算机上运行C)通过编译得到的二进制目标程序需要连接才可以运行D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe 文件7.以下叙述正确的是。
A) C语言程序是由过程和函数组成的B) C语言函数可以嵌套调用,例如:fun(fun(x))C) C语言函数不可以单独编译 D) C语言中除了main函数,其他函数不可作为单独文件形式存在二、数据类型、运算符与表达式选择.1.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为x=(i=4,j=16,k=32) A) 4 B) 16 C) 32D) 522.下列四组选项中,均不是C语言关键字的选项是。
基本知识要求一、语法基础1、记住C语言常量的定义方法(#define 名称值),理解符号常量与变量的区别;2、记住C语言标识符的要求(只能由数字、英文字母、下划线组成,第一个字符不能是数字);3、理解计算机存储整数的方法(什么是补码?怎样计算?程序实现补码提取的方法?);理解计算机存储字符的方式(ASCII码),区分数字字符与数字,掌握相互转换的方法。
同时理解大小写字符的转换方法及与自然数的映射方法;4、了解(unsigned)char、(unsigned)(short)int、(unsigned)long、float、double常量表达方法,掌握怎样求各类整数范围,以及在printf及scanf中对应的格式控制符;(注意char也可以当作整数使用,用的是什么?)5、理解转义字符的含义,掌握常见转义字符:\0、\n、\t、\\、\’、\”、\ddd、\xhh;6、记住常量字符串的表示方法(与常量字符表示区别?),理解字符串在C语言中的存储方式及特点,由此掌握字符串在C语言中的访问及遍历方式。
7、理解C语言中的不同类型数据在同一个表达式中的运算规则,能手动计算简单表达式;8、理解C语言的常用运算符,掌握++、--运算符的简单使用(前置与后置的区别),掌握/和%的使用规则,掌握指针[] 与*(指针) 的关系;9、理解强制类型转换的含义及使用场合;10、理解赋值规则(注意有符号数赋给无符号变量的使用);理解复合赋值;(注意赋值号左边必须是一个存储单元,实际上常常就是一个变量);11、了解逗号运算符和三元运算符。
二、控制结构1、记住C语言中的关系运算符与逻辑运算符(注意==与!=),掌握关系和逻辑表达式的运算规则和方式;理解C语言对逻辑值的判断方式(非零作为真);2、熟练掌握if语句的使用,注意{}的使用及if-else的配对;3、理解C语言中的常用的三种循环(while、do-while和for),特别注意for循环的表达方式及循环执行流程;4、掌握for循环的常见使用方法(与一维数组、二维数组和字符结合各自的使用方式,一些数组使用的技巧);5、理解break、continue的含义及使用方式及场合(break在循环和switch中)。
C语言复习题及参考答案一、单项选择1、以下叙述正确的是:__B__。
A)C语言的源程序不必通过编译就可以直接运行。
B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令。
C)C语言源程序经编译形成的二进制代码可以直接运行。
D)C语言中的函数不可以单独进行编译。
2、以下4个用户定义标识符中,全部合法的一组是__A__。
A)_main enclude sin B)if –max turbo C)txt REAL 3COM D)int k_2 _001 3、以下不能定义为用户标识符的是_D__。
A)scanf B)Void C)_3com D)int4、C语言中用于结构化程序设计的3种基本结构是__A__。
A)顺序结构、选择结构、循环结构B)if、switch、breakC)for、while、do-whileD)if、for、continue5、为解决某一特定问题而设计的指令序列称为__C__。
A)文档B)语言C)程序D)系统6、用高级程序设计语言编写的程序称为__C__。
A)目标程序B)可执行程序C)源程序D)伪代码7、能将高级语言编写的源程序转换成目标程序的是__B__。
A)编辑程序B)编译程序C)驱动程序D)链接程序8、下列叙述中,正确一条是__C__。
A)计算机语言中,只有机器语言属于低级语言。
B)高级语言源程序可以被计算机直接执行。
C)C语言属于高级语言。
D)机器语言是所用机器无关的。
9、以下符合C语言语法的实型常量是__C__。
A)1.2E0.5B)3.14159E C).5E-3D)E1510、下面叙述正确的是__A___。
A)C程序中注释部分可以出现在程序中任何合适的地方。
B)花括号“{”和“}”只能作为函数体的定界符。
C)构成C程序的基本单位是函数,所有函数名都可以由用户命名。
D)分号是C语句之间的分隔符,不是语句的一部分。
11、设有以下定义:int a=0; double b=1.25; char c=’A’;#define d 2则下面语句中,错误是__D__。
C语言复习题及答案一.单项选择题1.下列选项中,不是转义字符集中的符号是( C )。
A \\B \’C 074D \02. 下列给出的符号串中,不属于C语言保留字的是( B )。
A switchB cherC caseD else3. 下列给出的符号串中,不能作为C语言标识符的是( C )。
A a_2B _2aC a.3D a_34. 下列属于C语言字符常量的是( C )。
A ‘abc’B “\n”C ‘a’D ‘a\0’5. 字符串”ABC”再内存占用的字节数为( B )。
A 3B 4C 6D 86. 设有宏定义“#define R 2+3”,则R*R的宏替换结果正确的是( B )。
A (2+3)*(2+3)B 2+3*2+3C 5*5D 5.0*5.07. 设整形变量I的值为3,则表达式i---i的值为( A )。
A 0B 1C 2D 38. 表达式“10!=9”的值为( D )。
A trueB 非零值C 0D 19. 设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值为( D )。
A 3B 0C 9D -1210. 下列选项中,正确的赋值表达式为( C )。
A a=7+b+c=a+7B a=7+b++=a+7C a=(7+b,b++,a+7)D a=7+b,c=a+711. 若有以下定义语句:char a;float c; double d; 则表达式a*b+d-c值的类型为( D )。
A floatB intC charD double12. 用十进制数表示表达式“12||012”的运算结果是( A )。
A 1B 0C 14D 1213. 下列一组运算符中,优先级别最高的运算符是( C )。
A <=B =C %D &&14. 设定“ char a=3,b=6,c;”,计算表达式c=(a^b)<<2后c的二进制值是( D )。
A 00011100B 00000111C 00000001D 0001010015. 设x,y,z,t 均为int类型,则执行下列语句串后,变量t的值为(C )。
复习A:一、单项选择题1、如果要把常量327存入变量a中,a不能定义的类型是哪一个?()A)int B)char C)long D)float2、若x 为unsigned int 型变量,则执行下列语句后x值为()x = 65535;printf(“%d\n”,x);A)65535 B)1 C)无定值D)-13、有以下程序main(){int a=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf(″%d,%d\n″,k,m);}程序运行后的输出结果是()A)0,0 B) 0,1 C)1,0 D)1,14、在C语言中,如果下面的变量都是int类型,则输出的结果是()。
sum=pad=5; pAd=sum + + ,pAd + +, + + pAd;printf("%d\n",pad);A) 7 B) 6 C) 5 D) 45、以下程序的输出结果是()。
main(){ int a=4,b=5,c=0,d;d=!a&&!b||!c;printf("%d\n",d);}A)1 B)0 C)非0的数D)-16、当执行以下程序段时()。
x=-1;do{x=x*x;}while(!x);A)循环体将执行一次B)循环体将执行两次C)循环体将执行无限次D)系统将提示有语法错误7、全局变量的存储类型可以定义为()。
A)auto或static B)extern或registerC)auto或extern D)extern或static8、定义全局变量时,若变量的的存储类别缺省,则默认的存储类型是()。
A)auto B)registerC)extern D)static9、已知:int a, x; 则正确的赋值语句是()。
A)a=(a[1]+a{2})/2; B)a*=*a+1;C)a=(x=1, x++, x+2); D)a="good";10、已知:int a, *p=&a; 则下列函数调用中错误的是()。
一、单选题(请将正确答案写在答题纸,1~20题每题1分,21~35题每题2分,共50分)1. 下列关于C语言的说法不正确的是( D )。
A.C语言既具有高级语言的一切功能,也具有低级语言的一些功能B.注释可以出现在程序中任意合适的地方C.C语言中的每一条执行语句都必须用分号结束,分号是C语言的一部分D.定义函数的首行要加分号2. C语言程序的执行顺序是(B)。
A.从第一个函数开始执行B.从main函数开始执行C.从任意函数开始执行D.从第一条语句开始执行3. 以下关于注释的叙述,正确的是(D)。
A.注释参与编译,影响程序结果B.注释不参与编译,但影响程序结果C.注释参与编译,但不影响程序结果D.注释不参与编译,不影响程序结果4. 以下叙述正确的是(A)。
A.C语言程序可以在任意C编译器下编译B.C语言程序只能在TC环境下编译C.C语言程序只能在VC或TC环境下编译D.C语言程序只能在VC环境下编译5. C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符( B )。
A.必须为字母B.必须为下划线或字母C.必须为下划线D.可以是字母,数字和下划线中任一字符6. 下面四个数字常量选项中,书写均正确的是(D)。
A.016 0x8f 018 (零开头的是八进制,不能用8)B.0312 7ff -087(8进制没有符号)C.0xbc 0a7(8进制没有a)0xaD.070 0xf1 0x19(16进制以ox开头)7. 若有说明语句:char c=0x7f;则变量c(B)。
A.包含3个字符B.包含1个字符C.包含2个字符D.说明不合法,c的值不确定8. 设有int x=11;则表达式(++x*1/3)的值是( B )。
(11+1再除以3)A.3B.4C.11D.129. 阅读下面程序段,输出结果为( B )。
(z-a=25)#include "stdio.h"void main(){ char c;c=('z'-'a')/3+'A';putchar(c);}A.HB.JC.ID.K10. 若有定义和语句:int a=23,b=023; printf(“%x,%d \n”,a,b);输出结果是( D )。
1、C语言源程序文件经过C编译程序编译连接之后生成一个后缀为( c )的文件。
A.”.c”B.“.obj”C.“.exe”D.“.bas”2、以下叙述不正确的是( c )。
A. 一个C源程序可由一个或多个函数组成B. 一个C源程序必须包含一个main函数C. 在C程序中,一行只能写一个语句D. 在C程序中,注释说明对程序功能不产生影响3、一个C语言程序是由( b )。
A.一个主程序和若干子程序组成B. 函数组成C.若干过程组成D. 若干子程序组成4、用C语言编写的代码程序( B )。
A.可立即执行B. 是一个源程序C.经过编译即可执行D. 经过编译解释才能执行5、一个C语言源程序只有一个函数,那么这个函数的名称为( C )。
A.mathB.stdioC.mainD.abs6、以下不正确的C语言标识符是( a )。
A. voidB. a3_b3C. ablexeD. _x7、以下选项中属于C语言的数据类型是( C )。
A. 复数型B. 逻辑型C. 双精度型D. 集合型8、若有说明和语句:int a=5;a++;则此处表达式a++的值是( c )。
A.7B.6C.5D.49、在C语言中,以下叙述不正确的是( a )。
A. 在C程序中,无论是整数还是实数,都能被准确无误的表示B. 在C程序中,变量名代表存储器中的一个位置C. C语言中的变量名只能由字母,数字和下划线三种字符组成D. C语言中变量必须先定义后引用10、设以下变量均为int类型,则值不等于7的表达式是( c )。
A. (x=y=6,x+y,x+1)B. (x=y=6,x+y,y+1)C. (x=6,x+1,y=6,x+y)D. (y=6,y+1,x=y,x+1)11、与数学式321nxx 对应的C语言表达式是( c )。
A. 3*x^n/(2*x-1)B. 3*x**n/(2*x-1)C. 3*pow(x,n)*(1/(2*x-1))D. 3*pow(n,x)/(2*x-1)12、若x和y都是int型变量,x=100,y=200,程序片段:printf("%d",(x,y));的输出结果是( a )。
C语言程序设计复习题A一、选择题((1)--(20)每个选项1分,(21)--(30)每个选项2分,共40分)(1)下列不正确的转义字符是A)'、、' B)'、“ C)'074' D)'、0'"(2)若有以下定义:char a;int b;float c;double d;则表达式a*bd--c值的类型为A)float B)int C)char D)double(3)表示关系x《=y《=z的c语言表达式为A)(X《=Y)&&(Y《=Z) B)(X《=Y)AND(Y《=Z)C)(X《=Y《=Z) D)(X《=Y)&(Y《=Z)(4)设a=1,b=2,c=3,d=4,则表达式:a《b?a:c《d?a:d的结果为A)4 B)3 C)2 D)1(5)设x为int型变量,则执行以下语句后,x的值为x=10;x=x--=x--x;A)10 B)20 C)40 D)30(6)下列可作为C语言赋值语句的是A)x=3,y=5 B)a=b=6 C)i--; D)y=int(x);(7)设x,y,z,t均为int型变量,则执行以下语句后,t的值为x=y=z=1;t=x||y&&z;A)不定值 B)2 C)1 D)0(8)设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:scanf("i=%d,f=%f",&i,&f);为了把100和765.12分别赋给i和f,则正确的输入为A)100765.12 B)i=100,f=765.12C)100765.12 D)x=100y=765.12(9)设x和y均为int型变量,则执行下的循环后,y值为for(y=1,x=1;y《=50;y){if(x=10))break;if (x%2==1){x=5;continue;}x--=3;}A)2 B)4 C)6 D)8(10)给出以下定义:char x[]="abcdefg";char y[]={'a','b','c','d','e','f','g'};则正确的叙述为A)数组X和数组Y等价 B)数组x和数组Y的长度相同C)数组X的长度大于数组Y的长度 D)数组X的长度小于数组Y的长度(11)以下叙述中不正确的是A)在不同的函数中可以使用相同名字的变量B)函数中的形式参数是局部变量C)在一个函数内定义的变量只在本函数范围内有效D)在一个函数内的复合语句中定义的变量在本函数范围内有效(12)假定a和b为int型变量,则执行以下语句后b的值为a=1;b=10;do{b--=a;a;}while (b--《0);A)9 B)--2 C)--1 D)8(13)设j为int型变量,则下面for循环语句的执行结果是for(j=10;j3;j--){if(j%3)j--;--j;--j;printf("%d ",j);}A)6 3 B)7 4 C)6 2 D)7 3(14)设有以下宏定义:#define N 3#define Y(n)((N1)*n)则执行语句:z=2 *(NY(51));后,z的值为A)出错 B)42 C)48 D)54(15)设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是A)k=*P1*P2;B)p2=k;C)P1=P2;D)K=*P1 *(*P2);(16)设有如下定义:int arr[]={6,7,8,9,10};int *ptr;则下列程序段的输出结果为ptr=arr;*(ptr2)=2;printf ("%d,%d、n",*ptr,*(ptr2));A)8,10 B)6,8 C)7,9 D)6,10(17)以下程序的输出结果是main(){int i,k,a[10],p[3]:K=5;for (i=0;i《10;i)a[i]=i;for (i=0;i《3;i)p[i]=a[i*(i1)];for (i=0;i《3;i)k=p[i]*2;printf("%d、n",k);}A)20 B)21 C)22 D)23(18)执行以下程序段后,m的值为int a[2][3]={{1,2,3},{4,5,6}};int m,*p;p=&a[0][0];m=(*p)*(*(p2))*(*(p4));A)15 B)14 C)13 D)12(19)有以下程序段char arr[]="ABCDE";char *ptr;for(ptr=arr;ptr《arr5;ptr)printf("%s、n",ptr);输出结果是A)ABCD B)A C)E D)ABCDE(20)有以下程序main(){int x,i;or(i=1;i《=50;i){x=i;if(x%2==0)if(x%3==0)if(x%7==0)printf("%d,i);”}}输出结果是A)28 B)27 C)42 D)41(21)有下列程序#include《stdio.hmain(){union{int k;char i[2];}*s,a;s=&a;s--i[0]=0x39;s--i[1]=0x38;printf("%x、n",s--k);}输出结果是A)3839 B)3938 C)380039 D)390038(22)有以下程序#include 《stdio.hmain(){int a,b,c=246;a=c/100%9;b=(--1)&&(--1);printf("%d,%d、n",a,b);}输出结果是A)2,1 B)3,2 C)4,3 D)2,--1(23)设有如下定义:int (*ptr)*();则以下叙述中正确的是A)ptr是指向一维组数的指针变量B)ptr是指向int型数据的指针变量C)ptr是指向函数的指针,该函数返回一个int型数据D)ptr是一个函数名,该函数的返回值是指向int型数据的指针(24)有以下程序#include 《stdio.hstruct stu{int num;char name[10];int age;};void fun(struct stu *p){printf("%s、n",(*p)。
1.合法(正确)的用户标识符为。
2.C语言程序的基本组成单位。
3.C程序的入口和出口函数。
4.TURBO C中char、int、float、double类型的变量所占字节数为多少。
5.若有以下定义:
char a; int b;float c; double d;
则表达式a*b+d-c值的类型为。
6.设a原值为11,则表达式a+=a+a运算后a的值为。
7.判断char型变量ch是否为大写字母的正确表达式是。
8.若k为int型变量且赋值11,请写出运算k++后表达式的值和k值分别为。
9.若经x、i、j和k都是int型变量,则执行下面表达式后x的值为。
x=(i=4,j=16,k=30)
10.以下程序的输出结果是
main()
{int x=8,y=3;
printf(“%d\n”,x/y);
}
11.若从键盘输入数据123.19要给变量c,则正确的输入语句是
12.若变量以正确说明,要求用以下语句
scanf(“%f,%f”,&a,&b);
给a赋予2.31,给b赋予8.0,则正确的输入形式为(其中□代表空格)。
2.31,8.0 13.程序段float a=3.1415; printf(“|%6.2f|\n”,a);的输出结果为。
14.若所需变量已定义,要将a和b中的数进行交换的语句或语句组是。
15.C语言中while和do --while循环的主要区别是。
16.for(表达式1;;表达式3)的循环条件为什么。
17.若i为整型变量,则以下循环执行次数。
for(i=2;i= =0;) printf(“%d”,i--);
18.在C语言中,局部变量缺省的存储类型是。
19.有如下程序段:
int *p, a = 10, b = 1;
p = &a; a = *p + b;
执行该程序段后,a的值。
20.若w,x,y,z,m均为int型变量,则执行下面语句后的m值。
w=5;x=6;y=7;z=8;
m=(w<x)?w:x;
m=(m<y)?m:y;
m=(m<z)?m:z;
21.
C 语言中表示逻辑值“假”为。
22.
C 语言源程序的扩展名。
23.
在C 语言中单精度实型类型说明符,整型类型说明符。
24. 将数学表达式|a|>4改写成C 语言关系表达式或逻辑表达式。
25. 若执行以下程序时从键盘输入3和4,则输出结果是。
main()
{
int a,b,s;
scanf(“%d%d ”,&a,&b);
s=a;
if(a<b) s=b;
s*=s;
printf(“%d\n ”,s);
}
26. 有以下程序,执行后输出结果是。
main()
{ int i;
for(i=0;i<3;i++)
switch( i )
{ case 1: printf("%d",i);
case 2: printf("%d",i);
default: printf("%d",i);
} }
27. 下面函数findmax 是找数组中的最大值,请填完整。
int findmax(int a[],int n)
{
int i,k=0;
for(i=1;i<n;i++)
if(a[i]>a[k]) k=i;
return a[k];
}
1. C 语言中运算对象必需是整型的运算符是()。
A )+
B )/
C )%
D )*
2. 对于数学表达式b a 2(其中a 和b 均为实型),不正确的C 语言书写形式为()
A)a*2/b B)(a*2)/b C)2a/b D)2*a/b
3.以下选项中非法的表达式是
A) 0<=x<100 B) i=j==0 C)(char)(65+3) D) x+1=x+1
4.以下的if 语句无意义是()。
A)if (a>b&&a!=b) ;
B)if (a= =b) a+=b;
C)if (a!=b) printf(“%d”,a) else printf(“%d”,b);
D)if(a<b) {a++;b++;}
5.有定义语句:int a=1,b=2,c=3,x; 则以下选项中各程序段执行后,x的值不为3的是
A) if (a<3) x=3; B) if (a<b) x=b;
if (a<2) x=2; if (b<c) x=c;
if (a<1) x=1; if (c<a) x=a;
C) if (c<a) x=1; D) if (a<3) x=3;
else if (b<a) x=2; else if (a<2) x=2;
else x=3; else x=1;
6.若有说明:int a[8];则对a数组元素的正确引用是()。
A)a[8] B)a[3.5] C)a(5) D)a[8-8]
7.以下能正确定义一维数组的选项是
A) int arr []; B) Int arr [100];
C) int arr[0..100]; D) int arr[100];
8.若有定义:int a[8]; ,则以下表达式中不能代表数组元素a[2]的地址是()。
A)&a[0]+2 B) &a[2] C) a+2 D) *(a+2)
9.若有如下说明:
int a[10]={1,2,3,4,5,6,7,8,9,10}, *p = a;
则数值为9的表达式是()。
A)*p+=9 B)p+8 C)*p+9 D)*(p+8)
10.若有说明:
int i,j=2,*p=&i;
则能完成i=j赋值功能的语句是()。
A)i=*&p; B)i=&j; C)*p=*&j D)i=*p
1.编写程序,计算2到100之间的奇数和。
2.有函数min定义如下:
int min(int a,int b)
{
return (a<b)?a:b;
}
请指出下面函数调用表达式的返回值:min( min(x,y) , z) 。