C试题库
- 格式:docx
- 大小:59.06 KB
- 文档页数:30
c语言期末考试题库及详解答案C语言期末考试题库及详解答案一、选择题1. 下列哪个选项是C语言中正确的整型常量?A. 0.1234B. 0x12ABC. 0b1010D. 1e10答案:B2. C语言中,以下哪个关键字用于定义变量的存储类别?A. staticB. constC. typedefD. volatile答案:A3. 在C语言中,以下哪个运算符用于求两个数的余数?A. /B. %C.D. ++答案:B4. 下列哪个选项是C语言中正确的字符常量?A. 'A'B. "A"C. AD. 65答案:A5. 在C语言中,以下哪个函数用于计算两个数的最大值?A. max()B. min()C. pow()D. sqrt()答案:A二、填空题6. C语言中,用于定义数组的关键字是______。
答案:int7. C语言中,用于输入输出的库函数分别是______和______。
答案:scanf(); printf()8. C语言中,若要定义一个指针变量,需要使用关键字______。
答案:int*9. C语言中,用于定义函数的关键字是______。
答案:void 或其他数据类型10. C语言中,若要实现字符串的复制,可以使用库函数______。
答案:strcpy()三、简答题11. 简述C语言中结构体的定义方式。
答案:在C语言中,结构体是一种用户自定义的数据类型,它允许将多个不同类型的数据项组合成一个单一的类型。
结构体的定义方式如下:struct 结构体名 {数据类型成员名1;数据类型成员名2;...};12. 解释C语言中的递归函数。
答案:递归函数是一种函数自己调用自己的特殊函数。
递归函数通常用于解决可以被分解为相似子问题的问题。
递归函数需要有一个明确的终止条件,以防止无限递归。
四、编程题13. 编写一个C语言程序,实现求一个整数的阶乘。
答案:```c#include <stdio.h>long factorial(int n) {if (n <= 1) return 1;else return n * factorial(n - 1);}int main() {int num;printf("Enter a number: ");scanf("%d", &num);printf("Factorial of %d = %ld", num, factorial(num)); return 0;}```14. 编写一个C语言程序,实现字符串的反转。
c语言考试及答案————————————————————————————————作者:————————————————————————————————日期:浙江理工大学C程序设计试题(一)试题二、语言基础题(本题共30分)(一)判断题(本题共10分,每小题1分)说明:在以下提供的若干陈述中,逐一判断其正确与否,选A表示正确,选B表示错误。
(16) C语言程序的三种基本结构是顺序、选择和嵌套。
(17) 在C语言程序中,在函数内部定义的变量称为全局变量。
(18) 运算符“=”和“&=”的优先级相同。
(19) ‘%f’是不正确的字符常量。
(20) 运算符“+”不能作为单目运算符。
(21) 如果运算符“*”和“/”都是右结合的,则表达式10*6/5的值是10。
(22) s(s-a)(s-b)(s-c)是合法的C语言表达式。
(23) 表达式!!6的值是6。
(24) 表达式~(~2<<1)的值是5。
(25) 对于变量定:int a[10],*p=a+8;数组a的最后一个元素是p[1]。
(二)单选题(本题共20分,每小题2分)(26) 执行语句printf("(26) ","A");将得到出错信息。
A、%uB、%sC、%eD、%d(27) 设c是一个字符变量,求解表达(27) 后,c的值不是1就是0。
A、c=getchar()!=’\n’B、(c=getchar()!)=’\n’C、c=’1’D、c=EOF(28) 下列定义中,(28) 定义的变量可以存放-123.4。
A、long a;B、unsigned b;C、int d;D、float c;(29) 对于变量定义;char *pp[100],pp是一个(29) 。
A、函数B、数组元素C、指针变量D、数组(30) 下列程序段的输出结果是(30) 。
char *st[ ]={ "SUM","MOON","STAR","X"};printf("(%s,%c) ",*(st+1)+1,*(*(st+2)+2)+2)A、(MOON,M)B、(OON,C)C、(OON,Q)D、(OON,A)(31) 对于以下的变量定义,表达式(31) 是不正确的。
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语言试题库一、单项选择第一章C语言概述(1)一个C程序的执行是从A、本程序的MAIN函数开始,到MAIN 函数结束。
B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。
C、本程序的MAIN函数开始,到本程序的最后一个函数结束。
D、本程序文件的第一个函数开始,到本程序的MAIN函数结束。
(2)以下叙述正确的是A、在C程序中,MAIN函数必须位于程序的最前面。
B、C程序的每行中只能写一条语句。
C、C语言本身没有输入输出语句。
D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。
(3)C语言规定,在一个源程序中,MAIN主函数的位置是在:A、必须在最前面。
B、必须在系统调用的库函数的后面C、可以在任意位置。
D、必须在最后面(4)一个C程序是由:A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成(5)以下叙述不正确的是:A、一个C源程序可由一个或多个函数组成B、一个C源程序必须包含一个MAIN函数C、C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面第二章数据类型、运算符与表达式(1)若x, i, j, k都是int型变量,则计算下面表达式后,x的值为x=(i=4, j=16, k=32)A、4B、16C、32D、52(2)下列四组选项中,均不是C语言键字的选项是A、define , IF, typeB、getc, char, printfC、include, scanf, caseE、i f, struct, type(3)下面四个选项中,均是不合法的用户标识符的选项是A、A,P_0,doB、float,1a0, _AC、b-a, goto, intD、_123, temp, INT(4)若有代数式3ae/bc,则正确的C语言表达式是A、a/b/c*e*3B、3*a*e/bcC、3*a*e/b*cD、a*e/c/b*3(5)已知各变量的类型说明如下:int k, a, b;unsinged long w=5;double x=1.42;则以下不符合C语言语法的表达式是A、x%(-3)B、w+=-2;C、k=(a=2,b=3,a+b)D、a+=a-=(b=4)*(a=3)第三章简单C程序设计(1)putchar函数可以向终端输出一个A、整型变量表达式值B、实型变量值C、字符串D、字符或字符型变量值(2)若x,y均定义为int型,z定义为double 型,以下合法的scanf函数调用语句是A、scanf(“%d%lx,%le”,&x,&y,&z);B、scanf(“%2d*%d%lf”,&x,&y,&z);C、scanf(“%x%*d%o”,&x,&y,&z);D、scanf(“%x%o%6.2f”,&x,&y,&z);(3)当输入数据的形式为:25,13,10<回车>时,以下程序的输出结果为main(){int x,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%d\n”,x+y+z);}A、x+y+z=48B、x+y+z=35C、x+z=35D、不确定值(4)以下能正确的定义整型变量a,b和c,并对它们赋初值为5的语句是A、int a=b=c=5;B、int a, b, c=5;C、a=5, b=5, c=5;D、a=b=c=5;(5)若有以下定义,则正确的赋值语句是int a,b; float x;A、a=1, b=2;B、b++;C、a=b=5;D、b=int(x);第四章选择结构程序设计(1)能正确表示“当x的值在[1,10]和[200,210]的范围为真,否则为假”的表达式是A、(x>=1)&&(x<=10)&&(x.>=200)&&(x<=210)B、(x>=1)││(x<=10) ││(x.>=200) ││(x<=210)C、(x>=1) &&(x<=10) ││(x.>=200) &&(x<=210)D、(x>=1)││(x<=10)&& (x.>=200) ││(x<=210)(2)以下程序的运行结果是#incl ude “stdio.h”main(){int a,b,d=241;a=d/100%9;b=(-1)&&(-1);printf(“%d,%d”,a,b);}A、6,1B、2,1C、6,0D、2,0(3)请阅读以下程序:main(){int a=5 , b=0 , c=0;if (a+b+c) printf(“* * *\n”);else printf(“$ $ $\n”);}以上程序。
(完整版)C语言考试试题基础版一、选择题1. 在每个C 程序中都必须包含有这样一个函数,该函数的函数名为。
A. mainB. MAINC. nameD. function2. 在以下关于C 语言的注释的叙述中,不正确的是。
A .注释可用"/*"、"*/"形式表示,也可用"//"形式表示B .编译器在编译一个程序时,将跳过注释,不对其进行处理C .编译器在编译一个程序时,可发现注释中的单词拼写错误D .程序中注释的多少不会影响所生成的可执行文件的长度3. 以下叙述不正确的是。
A .在C 程序中,严格区分大小写字母B .一个C 源程序有且仅有一个main 函数C .在C 程序中,注释只能位于一条语句的后面D .一个C 程序总是从main 函数开始执行4. 下列合法的标识符为A. abde+B. #KDJFC. 67KDJD. DK3_5. 关于字符串和字符的关系正确的是A. “A ”与’A ’是相同的B. 字符串是常量,字符是变量C. “A ”与’A ’是不同的D. “A ”与“A ”是相同的6. 下面关于语句的说法正确的是A. 下面这两段程序的执行效果是一致的B. 空语句是只有一个分号的语句,它其实什么也不干C. 语句的构成不一定需要分号D. 语句的书写对程序的运行不起作用,因此可以随便写都可以7. 以下各标识符中,合法的用户标识符组为。
A. PAd ,P#d ,b-b ,abc ,_0123,ssipedB. cin ,a10,CPP ,float ,del_word ,signedC. void ,max ,hiy ,,list ,*jerif (x>y){z=x; s=z*z;}else{z=y;s=1/(z*z);}if (x>y) z=x; s=z*z; else z=y;s=1/(z*z);D.a,temp,_isw,INT,keep,wind8.字符串“\”E OF= -\61\””的长度是。
c语言试卷集(10套)-试题及答案C语言试卷集(10套)-试题及答案试卷一一、选择题(每题2分,共20分)1. C语言中,用于表示逻辑“真”的值是()。
A. 0B. 1C. -1D. 任意非零值答案:B2. 下列哪个选项是C语言中的合法变量名?()A. 2variableB. variable2C. variable_2D. variable!答案:C3. C语言中,用于定义一个整型数组的语句是()。
A. int array[10];B. int [10] array;C. int 10 array;D. int array=10;答案:A4. 下列哪个选项是C语言中的合法字符串常量?()A. "Hello"B. 'Hello'C. "HelloD. Hello答案:A5. C语言中,用于表示逻辑“假”的值是()。
A. 0B. 1C. -1D. 任意非零值答案:A6. 下列哪个选项是C语言中的合法浮点数常量?()A. 3.14B. 314.C. .314D. 3.14E答案:A7. C语言中,用于定义一个整型变量的语句是()。
A. int x;B. var x;C. x int;D. int = x;答案:A8. 下列哪个选项是C语言中的合法字符常量?()A. 'A'B. "A"C. 'AB'D. "AB"答案:A9. C语言中,用于定义一个字符数组的语句是()。
A. char array[10];B. char [10] array;C. char 10 array;D. char array=10;答案:A10. C语言中,用于表示字符常量的是()。
A. 'A'B. "A"C. AD. "A"答案:A二、填空题(每题3分,共15分)1. C语言中,用于定义一个整型变量并初始化为0的语句是()。
一、选择题1、以下不能定义为用户标识符的是( )。
2、以下不能定义为用户标识符的是( )3、下面属于C 语言标识符的是( )。
4、下列符号中用来表示C 语言中的回车换行的是( )。
(A) \r 5、在计算机系统中,可执行程序是( ) (A) 源代码(B)汇编语言代码(D) ASCII 码6、在Visual C++ 6.0环境下,C 源程序文件名的默认后缀是( )。
7、Microsoft Visual C++ 6.0 中,C语言可执行程序的扩展名是:( )或cpp (D) txt 8、C 程序由( )组成。
(A)子程序(B) 主程序和子程序过程 9、C 程序的基本组成单位( )。
(A)数据类型 (B) 变量和常量 表达式 10、C 语言中主函数的个数是( )。
(A) 2个 任意个 (D) 10个 11、一个C 程序的执行是从( )(B)本程序文件的第一个函数开始,到本程序文件最后一个函数结束. (C)本程序文件的第一个函数开始,到本程序main 函数结束. (D)本程序的main()函数开始,到本程序文件的最后一个函数结束. 12、以下叙述正确的是(A)在C 语言程序中,main函数必须放在其他函数的最前面 (C)在C 语言程序中,只有main 函数才可单独进行编译 (D)每个后缀为.C 的C 语言源程序都应该包含一个main 函数 13、设变量a 是整型,b 是实型,c是双精度型,则表达式2+’a’+b*c 值的数据类型是( )。
(A) int (B) float 14、以下选项中表示一个合法的常量是(说明:符号□表示空格) A) 9□9□15、以下选项中非法的字符常量是16、以下选项中,能表示逻辑值“假”的是17、下列关系表达式中,结果为“假”的是18、关于C 语言变量,以下说法不正确的是( ) (A) 变量名由程序员定义,必须符合标识符的命名规则。
(B) 变量是程序运行过程中其值可以改变的量。
一、单项选择题(每小题2分)【1】设字符型变量ch的值为'A',整型变量m的值为'1',假定执行putchar (m);putchar ('');putchar (ch);后,则输出结果是。
A、A1B、lAC、AlD、1A标准答案:D【2】有如下函数调用语句fuc(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是。
A、3B、4C、5D、有语法错标准答案:A【3】有以下函数定义: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);标准答案:C【5】设有以下程序片段,请问执行后的输出结果是int i=010,j=10,k=0xl0;print f("%d,%d,%d",k,j,i);A、16,10,8B、81016C、10,10,10D、8,10,16标准答案:A【9】有如下程序段:char str[14]={"Iam"};strcat(str,"sad!");scanf("%s",str);print f("%s",str);当输入为happy!<CR>时,输出的结果是()。
A、Iamsad!B、happy!C、Iamhappy!D、happy!ad!标准答案:B【11】以下if语句中格式正确的是A、if(a>b)b++else a++;B、if(a>b){b++;print f("%d",b);}else {a++;print f("%d",a);}C、if(a>b){b++;print f("%d",b)}else {a++;print f("%d",a);}D、if(a>b)b++;print f("%d",b);else print f("%d",a);标准答案:B【1】设有整型变量m值为8,下列赋值语句中,正确的是。
第一题:编写一个售货机(POS)计算程序,用于水果店售货员算账。
苹果每千克 3.2元,梨每千克1.96元,香蕉每千克3元,樱桃每千克24元。
某顾客购买1.5斤苹果,2斤梨,3斤香蕉,1.5斤樱桃,付给售货员100元。
要求规范输出这位顾客购买各类水果的名称,对应的重量和应付价钱,显示顾客所付款项,输出应找回的款项。
#include<stdio.h>main(){float apple=1.5,pear=2.0,banana=3.0,cherry=1.5;float cost,pay=100.0,retern;cost=3.2*apple+1.96*pear+3.0*banana+24.0*cherry;retern=pay-cost;printf("LIST\t重量:\t价钱:\n");printf("apple\t1.5\t%.2f\n",3.2*apple);printf("pear\t2.0\t%.2f\n",1.96*pear);printf("banana\t3.0\t%.2f\n",3.0*banana);printf("cherry\t1.5\t%.2f\n",24.0*cherry);printf("pay=%.2fRMB\ncost=%.2fRMB\nretern=%.2fRMB\n",pay,cost,retern);}第二题:编写一个程序,对输入的一组整数,分别统计其中正整数和负整数的个数(0作为结束标志)。
#include<stdio.h>main(){int a[]={12,1648,500,-322,41,-15,126,-45,0,45,-356},i=0,m=0,n=0;for(i=0;a[i]!=0;i++){if(a[i]<0)m++;else if(a[i]>0)n++;}printf("%d\n%d\n",m,n);}第三题:统计100-500之间各个数字之和为9的三位数,输出这些三位数。
2000~2001学年《程序设计基础-C》试卷一、单项选择题(每小题 2 分,共30 分)1. C 语言程序中可以对程序进行注释,注释部分必须用符号_____括起来。
A、‘{‘ 和’}’B、‘[‘和’]’C、“/*”和”*/”D、“*/”和”/*”2.下列运算符中,优先级最低的是_____。
A、*B、!=C、+D、=3.若变量已正确定义,表达式(j=3, j++) 的值是_____ 。
A、3B、4C、5D、04.已知字符‘a’ 的ASCII码为97 ,执行下列语句的输出是_____。
printf ("%d, %c", ’b’, ’b’+1 ) ;A、98, bB、语句不合法C、98, 99D、98, c5.表达式strcmp(“box”, “boss”) 的值是一个_______。
A、正数B、负数C、0D、不确定的数6.数组定义为int a[3][2]={1, 2, 3, 4, 5, 6},数组元素_____的值为6。
A、a[3][2]B、a[2][1]C、a[1][2]D、a[2][3]7.要调用数学函数时,在#include命令行中应包含_____。
A、”stdio.h”B、”string.h”C、”math.h”D、”ctype.h”8.判断i和j至少有一个值为非0的表达式是_____。
A、i!=0 && j!=0B、i*j!=0C、!(i==0 || j==0)D、i&&j9.若a是基本整型变量,c是单精度实型变量,输入语句______是错误的。
A、scanf(”%d,%f”, &a, &c);B、scanf(”d=%d, c=%f”, &a, &c);C、scanf(”%d%f”, &a, &c);D、scanf(”%d%f”, a, c);10.若变量已正确定义并且指针p已经指向某个变量x,则(*p)++相当于_____。
A、p++B、x++C、*(p++)D、&x++11.若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x, _____是正确的。
A、p2=p1;B、p2=**p1;C、p2=&p1;D、p2=*p1;12.下列程序段的输出是_____。
int c[]={1, 3, 5};int *k=c+1;printf("%d", *++k);A、3B、5C、4D、613.不正确的赋值或赋初值的方式是______。
A、char str[]="string";B、char str[7]={'s', 't', 'r', 'i', 'n', 'g'};C、char str[10];str="string";D、char str[7]={'s', 't', 'r', 'i', 'n', 'g', ’\0’};14.对于以下结构定义,++p->str中的++加在_____。
struct {int len;char *str;} *p;A、指针str上B、指针p上C、str指的内容上D、以上均不是15.对于如下说明,语法和语义都正确的赋值是_____。
int c, *s, a[]={1, 3, 5};A、c=*s;B、s[0]=a[0];C、s=&a[1];D、c=a;二、填空题(每小题 2 分,共20 分)1.写出下列程序段的输出结果。
float x1, x2;x1=3/2;x2=x1/2;printf("%d, %.1f", (int)x1, x2) ;2.表达式(7<<1>>2^2 ) 的值是_______。
3.写出下列程序段的输出结果。
#define A 10#define B (A<A+2)-2printf("%d", B*2);4.写出判断字符变量c是英文字母的表达式。
5.写出下列程序段的输出结果。
int k, x;for (k=0, x=0; k<=9&&x!=10; k++)x+=2;printf ("%d, %d", k, x) ;6.写出下列程序段的输出结果。
printf(“%d, %d”, NULL, EOF);7.对于以下递归函数f,调用f (3) 的返回值是_____。
f (int n){ return ((n>0) ? 2*f(n-1)+f(n-2) : -1); }8.写出下列程序段的输出结果。
char str[]="hello\tworld\n";printf("%d, %c\n", sizeof(str), *(str+10));9.输入12345#后,写出下列程序的输出结果。
void main(){ char c;for(c=getchar(); getchar()!=’#’; c=getchar())putchar(c);}10.执行程序find –nx ould text.txt时,*++argv[1]的值是_______。
三、程序阅读题(每题5分,共20分)1.若输入3 1 2 3 <回车> , 则以下程序的输出结果是_______。
#include "stdio.h"void main(){ int i, j, n, a[10];scanf("%d", &n);for (i=0; i<n; i++)scanf("%d",&a[i]);for (i=0; i<n; i++)for (j=0; j<n; j++)printf("%d, ", a[(i+j)%n]);}2.若输入89 76 24 25 9 8 11 16 35 4 <回车> , 则以下程序的输出结果是_______。
#include "stdio.h"#define N 10main(){int x[N], y1[N], y2[N];int i, j, n1, n2, t, p;n1=n2=0;for(i=0;i<N;i++){scanf(“%d”,& x[i]);if(x[i] % 2==0) y1[n1++]=x[i];else y2[n2++]=x[i];}for(i=1; i<n1; i++)for(j=0; j<n1-1; j++)if(y1[j]>y1[j+1]){t=y1[j]; y1[j]=y1[j+1]; y1[j+1]=t;}for(i=0; i<n2-1; i++){p=i;for(j=i+1; j<n2; j++)if(y2[p]<y2[j]) p=j;if(p!=i){t=y2[i]; y2[i]=y2[p]; y2[p]=t;}}for(i=0; i<n1; i++) printf("%d, ", y1[i]);for(i=0; i<n2; i++) printf("%d, ", y2[i]);}3.以下程序的输出结果是_______。
#include< stdio.h>int z;void p(int *x, int y){ ++*x;y--;z=*x+y+z;printf("%d, %d, %d#", *x, y, z);}void main(){ int x=1, y=5, z=9;p(&x, y);printf("%d, %d, %d#", x, y, z);}4.若输入-6+15*3/5=<回车> , 则以下程序的输出结果是_______。
#include <stdio.h>void main(){int m=0, sum=0;char c, oldc='+';do {c=getchar();if(c<='9'&&c>='0') m=10*m+c - '0';else {if(oldc=='+') sum += m;else sum -= m;m=0;oldc=c;printf("%d, ", sum);}} while(c!='=');}四、程序填空题(每空 2 分,共20 分)1.下列程序的功能是创建单向链表。
#include <stdio.h>#include <alloc.h>struct link {char name[10];int mark;struct link * next;};void insert(char *, int);struct link * head = NULL;main(){char name[10];int mark;struct link * t;while ( 1 ) {scanf("%s %d", name, &mark);if ( strcmp(name, "#") == 0 ) break;______(1)_______;}for (t=head; ______(2)_______)printf("<%s>: %d\n", t->name, t->mark);}void insert(char * name, int mark){struct link * p;p = ______(3)_______ ;strcpy(p->name, name);p->mark = mark;______(4)_______;if ( head != NULL ) ______(5)_______;head = p;}2.prog.c是带命令行参数的程序。
运行prog filename时,将文本文件filename中的内容原样输出;运行prog -u filename时,将文本文件filename中的所有字母以大写方式输出(其余字符原样输出);运行prog -d filename时,只将文本文件filename中的数字输出。