C语言考试题及答案

合集下载

大学c语言考试题库及答案

大学c语言考试题库及答案

大学c语言考试题库及答案一、选择题1. 下列关于C语言中变量的描述,哪个是正确的?A. 变量必须先定义后使用B. 变量的类型不能改变C. 变量可以在任何地方定义D. 所有变量都必须初始化后才能使用答案:A2. C语言中,一个整数除以另一个整数,结果是什么类型的数据?A. 整数型B. 浮点型C. 长整型D. 无符号整数型答案:A3. 在C语言中,哪个函数用于计算字符串的长度?A. strlen()B. strcpy()C. strcat()D. strcmp()答案:A4. 如果一个指针变量p指向一个int类型的变量,那么表达式*p++的值是什么?A. p指向的变量的当前值B. p指向的变量的下一个值C. p指向的变量的前一个值D. 无定义答案:A5. C语言中,以下哪个关键字用于定义一个函数?A. intB. floatC. voidD. char答案:C二、填空题1. C语言中,________关键字用于定义一个结构体。

答案:struct2. 在C语言中,________运算符用于计算两个整数的乘积。

答案:*3. 当需要频繁修改数组中的元素时,应使用________类型的数组。

答案:动态4. C语言中,________函数用于将字符串s复制到t所指向的内存空间。

答案:strcpy()5. 在C语言中,________关键字用于声明一个无限循环。

答案:for 或 while三、简答题1. 请简述C语言中数组和指针的关系。

答案:在C语言中,数组名可以作为指针使用。

数组的每个元素都可以通过数组名加上索引来访问。

指针变量可以指向数组的第一个元素,并通过指针算术来访问数组的其他元素。

数组的地址可以通过指针传递给函数,从而在函数内部访问数组。

2. 解释C语言中的“宏”是什么,并给出一个使用宏的例子。

答案:宏是C语言中的一个预处理指令,它允许定义一个可以被编译器替换的文本块。

宏通常用于定义常量、简化复杂的表达式或者创建可重复使用的代码块。

C语言考试试题及答案

C语言考试试题及答案

《C语言》考卷一单选题(每题2分,共25题,共50分)1.要把高级语言编写的源程序转换为目标程序,需要使用( )[2分][2分]A.编辑程序B.驱动程序C.诊断程序D.编译程序参考答案:D2.以下叙述中正确的是( )[2分][2分]A.C语言程序将从源程序中第一个函数开始执行B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C.C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D.main可作为用户标识符,用以命名任意一个函数作为主函数参考答案:C3.若变量a是int类型,并执行了语句:a=‘A'+1.6;,则正确的叙述是( )[2分][2分] int a int a=66 = 65 + 1.6 =66.6A.a的值是字符BB.a的值是浮点型C.不允许字符型和浮点型相加D.a的值是字符‘A’的ASCII值加上2参考答案:Aint a = ‘A’;char b = 65;4.若变量已正确定义并赋值,以下符合C语言语法的表达式是( )[2分][2分]A.a:=b+1B.a=b=c+2C.18.5%3D.a=a+7=c+b参考答案:B5.下列可用于C语言用户标识符的一组是( )[2分][2分]A.void, define, WORDB.a3_b3, _123,carC.For, -abc, IF CaseD.2a, DO, sizeof参考答案:B6.若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )[2分][2分]A.scanf("%d",a,b,c);B.scanf("%d%d%d",a,b,c);C.scanf("%d",p); //scanf(“%d”,&c);D.scanf("%d",&p);参考答案:C7.以下关于long、int和short类型数据占用内存大小的叙述中正确的是( )[2分][2分]A.均占4个字节B.根据数据的大小来决定所占内存的字节数 // long a = 1 int b = 1000000C.由用户自己定义D.由C语言编译系统决定参考答案:D8.若变量已正确定义,有以下程序段i=0;do{printf("%d,",i); //0}while(i++); //while(0) i=1printf("%d\n",i); //1其输出结果是( )[2分][2分]A.0,0B.0,1C.1,1D.程序进入无限循环参考答案:B9.有以下计算公式则不能够正确计算上述公式的程序段是( )(提示:库函数sqrt()用来求一个数的平方根)[2分][2分]A.if(x>=0) y=sqrt(x); else y=sqrt(-x); //if/else配合使用B.y=sqrt(x) if(x<0) y=sqrt(-x);C.if(x>=0)y=sqrt(x); if(x<0)y=sqrt(-x); //if单独使用D.y=sqrt(x>=0?x:-x);参考答案:B10.设有条件表达式:EXP ? i++ : j--;则以下表达式与之完全等价的是( )[2分][2分]A.(EXP==0)? i++ : j--;B.(EXP!=0)? i++ : j--;C.(EXP==1)? i++ : j--;D.(EXP!=1)? i++ : j--;参考答案:B11.有以下程序#include<stdio.h>int main(void){int y=9;for( ; y>0; y--){if(y%3 == 0)printf("%d",--y);}}程序的运行结果是( )[2分][2分]A.741B.963C.852D.875421参考答案:C12.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( )[2分][2分]A.函数的实参和其对应的形参共占同一存储单元B.形参只是形式上的存在,不占用具体存储单元 //局部变量C.同名的实参和形参占同一存储单元D.函数的形参和实参分别占用不同的存储单元参考答案:D13.已知字符‘A’的ASCⅡ代码值是65,字符变量c1的值是‘A’,c2的值是‘D’。

C语言考试习题及答案

C语言考试习题及答案
第一章 C语言程序设计概述习题
1. C语言程序的基本结构是【 】。 A) 函数 B) 语句 C) 字符 D) 程序行 2. 下列四个叙述中,正确的是【 】 A)在C程序中,主函数必须位于其他函数的最前面 B)在C程序中,一行只能写一条语句 C)C程序的基本结构是程序行 D)C语句是完成程序功能的最小单位 3. C语言规定,在一个C程序中,main()函数的位置是【 】 A) 必须在开始 B) 必须在最后 C) 可以任意 D) 必须在系统调用的库函数之后 4. 以下叙述中,正确的是【 】 。 A) C语言程序总是从第一个定义的函数开始执行 . B) C语言程序中,要调用的函数必须在main()函数中定义 C) C语言程序总是从main()函数开始执行 D) C语言程序中的main()函数必须放在程序的开始部分 5. 在C语言提供的合法的关键字是【 】 A) switch B) cher C) Case D) FLOAT 6. 以下用户标识符,其中合法的是【 】 A) For B) 4d C) f2.G3 D) _f#
A)4 B) –4 C) 1 D) 0 7. 设int a,b;则表达式a=2,b=++a*2的值为【 】。 A)6 B) 4 C) 8 D) 2 8. 列四组数据类型中,C语言允许的一组是【 】 A) 整型、实型、逻辑型,双精度型 B) 整型、实型、字符型,无值类型 C) 整型、双精度型、布尔型,无值类型 D) 整型、实型、复型、字符型 9. 以下能正确定义变量a, b和c并为它们赋值的语句是【 】 A) int a=5; b=5; c=5; B) int a,b,c=5; C) a=5,b=5,c=5; D) int a=5, b=5, c=5; 10. C语言所提供的五种基本数据类型包括:字符型、整型、双精度 型、浮点型和【 】。 A) 指针型 B) 结构型 C) 数组型 D) 无值类型 11. 设变量a为整型,f为实型,i为双精度型,则表达式10+‘a’+i*f 的 数据类型是【 】。 A) int型 B) float 型 C) double型 D) 不确定 12. 若有定义: int x=3, y=2; float a=2.5, b=3.5; 则表达式 (x+y)%2+(int)a/(int)b的值是【 】。 A) 0 B) 2 C) 1.5 D) 1 13. 若d为double型, 表达式 d=1, d+5, d++ 的值是【 】。 A) 1 B) 6.0 C) 2.0 D) 1.0 14. 设int a=1, d=4;float b=2.0, c=3.0, 则表达式: a+b*c-d%2 的值 是【 】。 A) 5 B) 6 C) 5.0 D) 6.0 15. 下列运算符中,优先级最高的是【 】。 A) * B) ++ C) + D) /= 16. 若希望当整型变量A的值为5时, 表达式的值为1, 则下面不能满足 要求的表达式是【 】。 A) A/2-1 B) A%2 C)(A-2)/2 D) (A+3)%2 17. a、b均为整数, 且b≠0, 则表达式 a/b*b+a%b的值是【 】。 A) a B) b C) a被b除的余数部分 D) a被b除商的整数部 分 18. 设x、y、z、s均为int型变量,且初值均为1,则执行语句s=(++x)+ (++y)-(++z);后, s的值为【 】。

C语言考试题及答案

C语言考试题及答案

C语言考试题一、单项选择题(每题2分,共40分)1、一个算法应该具有“确定性”等五个特性,下面对另外4个特性的描述中错误的是(B)A、有零个或多个输入B、有零个或多个输出C、有穷性D、可行性2、C语言中最简单的数据类型包括(B)A、整型、实型、逻辑型B、整型、实型、字符型C、整型、字符型、逻辑型D、整型、实型、逻辑型、字符型3、设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D)A、 6.500000B、 6C、 5.500000D、 6.0000004、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是(B)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);5、设 int x=1, y=1; 表达式(!x||y--)的值是(B)。

A、0B、1C、2D、-16、对两个字符数组a和b进行初始化char a[]="ABCDEF";char b[ ]={'A','B','C','D','E','F'}; 则以下叙述正确的是(D)。

A、a与b数组完全相同B、a与b长度相同C、a和b中都存放字符串D、a数组比b数组长度长7、为了避免在嵌套的条件语句if――else中产生二义性,c语言规定:else子句总是与(B)配对。

A、缩排位置相同的ifB、其之前最近的ifC、其之后最近的ifD、同一行上的if8、下面不正确的字符串常量是(A)A、 'abc'B、 "12'12"C、 "0"D、 " "9、以下错误的if语句是(C)。

c语言考试题库及答案

c语言考试题库及答案

c语言考试题库及答案一、选择题1. 下列哪个关键字是C语言中定义函数的关键字?A. funcB. defC. mainD. int答案:C. main2. 下列哪个选项是C语言中的注释符号?A. //B. **C. <>D. ##答案:A. //3. 下列哪个选项是C语言中的逻辑与运算符?A. ||B. &&C. !D. <答案:B. &&二、填空题1. 完成以下C语言代码,实现两个变量的值交换。

```int a = 10;int b = 20;// 在这里填写代码printf("a = %d, b = %d", a, b);```答案:```int temp = a;a = b;b = temp;```2. 完成以下C语言代码,实现输出1~10的累加和。

```int sum = 0;int i;for (i = 1; i <= 10; i++) {// 在这里填写代码}printf("Sum = %d", sum);```答案:```sum += i;```三、编程题编写一个程序,实现输入两个整数,输出它们的最大公约数。

答案:```c#include <stdio.h>int main() {int num1, num2, i, gcd;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);for (i = 1; i <= num1 && i <= num2; ++i) {if (num1 % i == 0 && num2 % i == 0) {gcd = i;}}printf("最大公约数为:%d", gcd);return 0;}```四、简答题1. C语言中的数据类型有哪些?请至少列举出5个。

c语言考试题及答案

c语言考试题及答案

c语言考试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言的描述中,错误的是:A. C语言是一种高级语言B. C语言可以直接被计算机执行C. C语言具有结构化的特点D. C语言具有跨平台的特性答案:B2. C语言中,用于定义一个整型变量的关键字是:A. intB. floatC. doubleD. char答案:A3. 在C语言中,以下哪个运算符用于取模运算?A. %B. /C. *D. -答案:A4. 下列关于数组的描述中,正确的是:A. 数组必须在程序开始时初始化B. 数组的元素可以是不同的数据类型C. 数组的索引从1开始D. 数组的声明必须指定数组的大小答案:D5. 在C语言中,以下哪个关键字用于定义一个函数?A. intB. voidC. functionD. define答案:B6. C语言中,用于表示逻辑“与”操作的运算符是:A. &&B. ||C. !D. &答案:A7. 下列哪个选项是C语言中合法的注释?A. // 这是一个注释B. /* 这是一个注释 */C. // 这是一个注释/* 这是一个注释 */D. /* 这是一个注释 */答案:A8. C语言中,用于定义一个空指针的值是:A. NULLB. 0C. falseD. none答案:A9. 下列关于指针的描述中,错误的是:A. 指针可以存储变量的地址B. 指针可以存储函数的地址C. 指针可以存储数组的索引D. 指针可以存储指针的地址答案:C10. 在C语言中,用于定义一个字符型指针的声明是:A. char *ptr;B. int *ptr;C. float *ptr;D. double *ptr;答案:A二、填空题(每题2分,共20分)1. 在C语言中,定义一个整型数组的语法是:______ int array[10];。

答案:int2. 如果一个变量的值是10,那么表达式sizeof(&var)的结果是:______。

大学c语言考试题及答案

大学c语言考试题及答案

大学c语言考试题及答案一、选择题(每题2分,共20分)1. 下列哪个关键字用于定义一个结构体?A. intB. structC. floatD. char答案:B2. C语言中,哪个函数用于计算并返回字符串的长度?A. strlen()B. strcpy()C. strcat()D. strcmp()答案:A3. 如果变量`a`的类型是`int`,那么表达式`a += a -= a;`执行后,`a`的值是多少?A. 0B. -1C. 1D. 无法确定答案:B4. 在C语言中,以下哪个不是合法的用户定义的标识符?A. _classB. 2DArrayC. caseD. float答案:C5. 下列哪项不是C语言的标准输入输出库函数?A. printf()B. scanf()C. getchar()D. open()答案:D6. C语言中,`sizeof`运算符的返回类型是什么?A. intB. longC. size_tD. double答案:C7. 在C语言中,以下哪个是正确的字符串字面量?A. "Hello, World!"B. 'Hello, World!'C. Hello, World!D. {"Hello, World!"}答案:A8. 下列哪个语句可以正确地从标准输入读取一个整数?A. int x; gets(x);B. int x; scanf("%d", &x);C. int x; read("%d", &x);D. int x; input("%d", &x);答案:B9. C语言中,全局变量的生命周期是?A. 只在定义它的函数中有效B. 只在程序的main函数中有效C. 从定义开始到程序结束D. 只在程序的某个特定部分有效答案:C10. 在C语言中,以下哪个操作符用于计算两个整数的逻辑与(AND)?A. &&B. &C. |D. ||答案:B二、填空题(每题2分,共20分)11. C语言中,用于定义一个指针变量的关键字是______。

c语言试题及答案大全

c语言试题及答案大全

c语言试题及答案大全一、选择题1. 下列关于C语言的说法中,正确的是:A. C语言是一种高级编程语言。

B. C语言可以被编译成机器语言执行。

C. C语言的语法和C++完全相同。

D. C语言不支持面向对象的编程。

答案:B. C语言可以被编译成机器语言执行。

2. C语言中,以下哪个是合法的标识符?A. 123abcB. abc_123C. intD. function()答案:B. abc_1233. 在C语言中,以下哪种循环结构是先判断条件后执行循环体?A. for循环B. while循环C. do-while循环D. switch语句答案:C. do-while循环二、编程题1. 编写一个C程序,计算并输出1到n之间所有整数的和。

其中,n由用户输入。

答案:#include <stdio.h>int main() {int n;int sum = 0;printf("请输入一个整数n:");scanf("%d", &n);for (int i = 1; i <= n; i++) {sum += i;}printf("1到%d之间所有整数的和为%d\n", n, sum);return 0;}2. 编写一个C程序,判断一个整数是否为素数。

素数是指除了1和自身外,无法被其他整数整除的整数。

答案:#include <stdio.h>#include <stdbool.h>bool is_prime(int num) {if (num <= 1) {return false;}for (int i = 2; i * i <= num; i++) {if (num % i == 0) {return false;}}return true;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (is_prime(num)) {printf("%d是素数\n", num);} else {printf("%d不是素数\n", num);}return 0;}三、应用题1. 假设有一个班级的学生信息如下:学号姓名年龄性别101 张三 18 男102 李四 17 女103 王五 16 男请根据上述学生信息,编写一个C程序,输出学生的平均年龄。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、单项选择题:(10分,每题2分)1.char*p[10];该语句声明了一个:。

A)指向含有10个元素的一维字符型数组的指针变量pB)指向长度不超过10的字符串的指针变量pC)有10个元素的指针数组p,每个元素可以指向一个字符串D)有10个元素的指针数组p,每个元素存放一个字符串2.若intx;且有下面的程序片断,则输出结果为:。

for(x=3;x<6;x++){printf((x%2)"##%d":"**%d\n",x);}A) ##3B)**3 C)**3D)##3**4**4##4##4**5##5##5**53.在while(!x)语句中的!x与下面条件表达式等价的是:。

A)x!=0B)x==1 C)x!=1D)x==04.已知structpoint{intx;inty;};structrect{structpointpt1;structpointpt2;};structrectrt;structrect*rp=&rt;则下面哪一种引用是不正确的________。

A) r t.pt1.xB) (*rp).pt1.xC) rp->pt1.xD)rt->pt1.x5.若二维数组a有m行n列,则下面能够正确引用元素a[i][j]的为:。

A)*(a+j*n+i)B)*(a+i*n+j)C)*(*(a+i)+j)D)*(*a+i) +jCDDDC二、分析程序并写出运行结果。

(25分,每题5分)1.#include<stdio.h>main(){intn;staticchar*monthName[]={"Illegalmonth","January","February","March","April","May","June","July","August", "September","October","November","December"};for(n=1;n<=12;n++){printf("%s\n",monthName[n]);}}运行结果是:JanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember2.#include<stdio.h>#defineARR_SIZE7voidYH(inta[][ARR_SIZE],intn);voidPrintYH(inta[][ARR_SIZE],intn);main(){inta[ARR_SIZE][ARR_SIZE];YH(a,ARR_SIZE-1);PrintYH(a,ARR_SIZE-1);}voidYH(inta[][ARR_SIZE],intn){inti,j;for(i=1;i<=n;i++){for(j=1;j<=i;j++){if(j==1||i==j){a[i][j]=1;}else{a[i][j]=a[i-1][j-1]+a[i-1][j];}}}}voidPrintYH(inta[][ARR_SIZE],intn) {inti,j;for(i=1;i<=n;i++){for(j=1;j<=i;j++){printf("%4d",a[i][j]);}printf("\n");}}运行结果是:111121133114641151010513.#include<stdio.h>main(){inti,n;for(i=1;i<=5;i++){printf("Pleaseentern:");scanf("%d",&n);if(n<=0)continue;printf("n=%d\n",n);}printf("Programisover!\n");}程序运行时输入:1-23-45↙运行结果是:n=1Pleaseentern:Pleaseentern:n=3Pleaseentern:Pleaseentern:n=5Programisover!4.#include<stdio.h>voidFunc(intn);main(){inti;for(i=0;i<2;i++){Func(i);}}voidFunc(intn){staticintt=1;printf("t=%d\n",t++);}运行结果是:t=1t=25.#include<stdio.h>intFunc(inti);main(){inti;for(i=3;i<5;i++){printf("%d",Func(i));}printf("\n");}intFunc(inti){staticintk=10;for(;i>0;i--){k++;}return(k);}运行结果是:1317三、阅读并完成程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。

(20分,每空2分)1.下面程序用于读入10个字符串,然后找出最大的字符串并打印。

#include<stdio.h>#include<string.h>main(){charstr[10][80],maxstring[80];inti;printf("Entertenstrings:\n");for(i=0;i<10;i++){scanf("%s",str[i]);}strcpy(maxstring,str[0]);for(i=1;i<10;i++){if(strcmp(maxstring,str[i])<0)或strcmp(str[i],maxstring)>0strcpy(maxstring,str[i]);}}printf("Themaxstringis:%s\n",maxstring);}2.下面这个程序用于交换两个数组的对应元素的值。

#include<stdio.h>#defineARRAY_SIZE10voidSwap(int*x,int*y); voidExchange(inta[],intb[],intn); voidInputArray(inta[],intn); voidPrintArray(inta[],intn);main(){inta[ARRAY_SIZE],b[ARRAY_SIZE],n; printf("Inputarraylenthn<=10:"); scanf("%d",&n);printf("Inputarraya:\n"); InputArray(a,n);printf("Inputarrayb:\n"); InputArray(b,n);Exchange(a,b,n);printf("Afterswap:\n");printf("Arraya:\n");PrintArray(a,n);printf("Arrayb:\n");PrintArray(b,n);}voidSwap(int*x,int*y){inttemp;temp=*x;*x=*y;*y=temp;voidExchange(inta[],intb[],intn) {inti;for(i=0;i<n;i++)Swap(&a[i],&b[i]);}voidInputArray(inta[],intn){inti;for(i=0;i<n;i++)scanf("%d",&a[i]);}voidPrintArray(inta[],intn){inti;for(i=0;i<n;i++)printf("%d",a[i]);printf("\n");}3.从键盘任意输入一个年号,判断它是否是闰年。

若是闰年,输出"Yes",否则输出"No"。

已知符合下列条件之一者是闰年:能被4整除,但不能被100整除。

能被400整除。

#include<stdio.h>main(){intyear,flag;printf("Enteryear:");scanf("%d",&year);if(year%4==0&&year%100!=0||year%400==0)elseflag=0;if(flag)elseprintf("No!\n");}四、在下面给出的4个程序中,共有15处错误(包括语法错误和逻辑错误),请找出其中的错误,并改正之。

(在错误的代码下边画一根横线,把正确的代码写在旁边;漏掉的代码正确插入合适的位置。

30分,每找对1个错误,加1分,每修改正确1个错误,再加1分。

)1.编程计算矩阵相乘之积。

#include<stdio.h>#defineROW2#defineCOL3//voidMultiplyMatrix(inta[ROW][COL],intb[COL][R OW],intc[ROW][ROW]);main(){inta[ROW][COL],b[COL][ROW],c[ROW][ROW],i,j;printf("Inputarraya:\n");for(i=0;i<ROW;i++)for(j=0;j<COL;j++)scanf("d",&a[i][j]);//%dprintf("Inputarrayb:\n");for(i=0;i<COL;i++)for(j=0;j<ROW;j++)scanf("d",&b[i][j]);MultiplyMatrix(a,b,c);printf("Results:\n");for(i=0;i<ROW;i++)for(j=0;j<ROW;j++)printf("%6d",&c[i][j]);//c[i][j]printf("\n");}voidMultiplyMatrix(inta[ROW][COL],intb[COL][ROW ],intc[ROW][ROW]){inti,j,k;for(i=0;i<ROW;i++)for(j=0;j<ROW;j++)for(k=0;k<COL;k++){//c[i][j]=0;c[i][j]=c[i][j]+a[i][k]*b[j][k];//b[k][j]}}2.编程输入10个数,找出其中的最大值及其所在的数组下标位置。

相关文档
最新文档