中南大学2021年《C语言程序设计基础》期末试题及答案

一、判断题(每小题1分,共15分) 1.标准C中,只有数值型数据才能进行4则混合运算。 2.标准C中,_a是合法的自定义标识符。 3.有定义:float f;表达式f+=(int)3.6%2”不符合C语言语法。 4.标准C中,逻辑运算的结果只有是1表示满足条件,而结果是0表示不满足条件。 5.C语言程序中要求被调用函数在调用函数中能被调用必须要在调用函数中进行声明。 6.以下运算符排列顺序满足按照优先级从高到低的排列:‘&&’、‘!’、‘==’、‘-’。 7.语句for(;;);是非法的。 8.在C语言程序中可以由多个源文件构成,每个源文件都可以有自己的main()函数。 9.while和do-while的主要区别是后者至少无条件执行一次。 10.数组名代表数组的首地址是常量,所以将实参数组名表示地址传给形参数组名是错误的。 11.当函数没有返回值类型时,表示函数类型为void。 12.C语言中,指针变量作函数参数时,它们不是采取单向值传递的方式。 13.一个函数中只允许有一条return语句。 14.在C语言中,如果没有说明变量的存储类型是auto类型的。 15.由于指针中所存放的地址都是整数,所以整型指针和浮点型指针可以相互赋值。 二、填空题(每空1分,共15分) 1. 若a=4;b=5,c=6;则表达式c==(b=-a); 中c的值是 (1) 。 2. 计算表达式的值: 4&&-4的值: (2) ; 设int a=3,b=4,c=5,则表达式a||b+c&&b==c的值: (3) ; 设x=2.5, a=7, y=4.7,则表达式x+a%3*(int)(x+y)%2/4的值: (4) ; 设a=12,则表达式a*=a/5的值: (5) ; 3. 若int x = 4,y = 6,z = 0;有循环while(x = y) {z ++;y--;} 则循环语句执行完后,z值为 (6) 。 4. 变量的指针就是指该变量的 (7) 。 5. 若有定义int (*p)[4],则标识符p是 (8) ;若有定义int *p[4],则标识符p是 (9) ; 6. 已有定义:char *p[ ]={“France”,“Chinese”,“Russia”,“America”};则语句printf(“%s”,p[2]);printf(“%c”,*(p[1]+2));printf(“%c”,*(*(p+1)+1)); 的输出结果分别为: (10) 、 (11) 、 (12) 。 7. 已有定义: int x=65; 若格式化输出结果为“A, 65”,则对应的格式化输出语句为printf(“ (13) , (14) ”, x, x)。 8. 已定义:int a[][2]={1, 2, 3, 4, 2, 6, 7, 2};则a[3][0]= (15) 。 三、简答题(每题4分,共12分) 1、简述选择语句if和else语句对与switch语句的区别。 2、简述在循环语句中,break和continue的区别。 3、若int a[5],*p=a;简述*p++和(*p)++的区别。 四、下列各程序中每个程序各有2个错误,指出错误语句,写出对应正确语句(每小题4分,共16分) 1、 输入一个数,计算其平方根 # include void main( ) { float a, b; printf(“please input a number\n”); scanf(“%f”,a); if(a>=0) { b=sqrt(a); printf(“b=%f\n”, b);

2、 已知矩阵a=987654321,求该矩阵对角线元素之和。 # include void main( ) { int i, sum; int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; } else printf(“data is error!\n”); } for(i=1; i<=3; i++) sum = sum + a[i][i]; printf(“sum=%d”, sum); } 3、 通过函数调用实现两个变量值的交换。 # include void swap(int *p1, int *p2) { int temp; temp=*p1; p1= p2; *p2=temp; } void main() { int a = 3, b = 8, *p ; printf("Old:a=%d b=%d\n", a, b) ; p=&b; swap(&a, *p) ; printf("New:a=%d b=%d\n", a, b) ; } 4、 用递归语句编函数计算10! # include long f (int m) { long a; if(m<0) printf(“data error!”); else a=f(m-1)*m; }

void main( ) { int n; n=10; printf(“%d!=%ld”,n,f (n) ); } 五、程序填空题:下列程序中缺少若干条语句,在对应的下划线上填上合适的语句,每一个下划线只填一条语句(每小题6分,共24分) 1、 若一自然数全部正整数因子(该因子不包括其本身)之和仍为该自然数,则该自然数称为完全数。如:6=1+2+3,则6是完全数。输出[2,1000]以内的所有完全数及完全数的个数。 #include int main( ) { int x,n,m,s=0; for(n=2;n<=1000;n++) { (1) for(m=1;m数,使用条件表达式找出最大的整数,并且以输入的整数为0时作为输入数据结束标志。 #define N 100 main() { int num[N]; int i= -1; int max=0; printf("\n Input integer number: \n"); do { i++; printf("num[%d]=",i); scanf("%d", (4) ); max= (5) num[i] : max; }while( (6) ); printf("max=%d\n", max); } 3、用起泡法对n个数由小到大排序。 起泡法排序的原理为:从第一对元素开始比较相邻的元素,如果第一个比第二个大,就交换他们两个,每一轮下来,该序列的最后的元素应该会是当前序列中最大的数。 bubble(int a[],int n) { int i,j,t,temp ; for(i=1; i<=n-1; i++) { t= (7) ; for(j=0; j<=t; j++) if( (8) ) { temp = a[j]; a[j] = a[j+1]; (9) ; } } } 4、从键盘上输入一个不多于7位的正整数,统计其中2的个数,并求各位数字中的最小数。 #include main( ) {int count,min,temp; long n; min=9; (10) ; scanf(“%ld”,&n); do { temp= (11) ; if (temp= =2) count++; if (temp < min) min=temp; n=n/10; }while ( (12) ); printf(“count=%d,min=%d”,count,min); } 六、阅读下列程序,写出运行结果(第一小题4分,第二小题6分,共10分) 1、#include int main( ) { int i; for (i=1; i<=5; i++) { if (i%2) printf("#"); else continue; printf("*"); } return 0; } 2、 #include void sub(); int i=0; static int j=1; main( ) { int k=1; i++; j++; k++; printf(“main i=%d j=%d k=%d\n”, i,j,k); sub( ); sub( ); } void sub( ) { int k=0; static int x=1; k++; x++; printf(“sub i=%d j=%d k=%d x=%d\n”,i,j,k,x); } 七、编程题(8分) 编译程序,其功能是比较字符串的大小(不允许用系统提供的字符串比较函数strcmp)。要求是: (1) 通过主函数调用一个函数strcompare来实现。 (2) 要求函数strcompare实现两个字符的比较:如第一个字符小于第二个字符则返回一个负值;如两个字符相等则返回0值;如第一个字符大于第二个字符则返回一个正值。 (3) 并输出两个字符串中相同部分的子串。

合集下载

c语言大学期末考试题及答案

c语言大学期末考试题及答案

c语言大学期末考试题及答案一、选择题(每题2分,共20分)1. 下列哪个选项是C语言中的基本数据类型?A. BooleanB. StringC. CharD. Integer答案:C2. C语言中,用于定义数组的关键字是:A. structB. unionC. arrayD. enum答案:C3. 下列哪个选项是C语言中正确的注释方式?A. /* This is a comment */B. // This is a commentC. # This is a commentD. % This is a comment答案:A4. 下列哪个选项是C语言中用于交换两个变量值的函数?A. strcpyB. strcatC. swapD. printf答案:C5. C语言中,用于定义一个结构体的关键字是:A. structB. unionC. classD. typedef答案:A6. 下列哪个选项是C语言中正确的文件操作函数?A. fopenB. fcloseC. fprintfD. All of the above答案:D7. C语言中,用于定义一个指针的关键字是:A. refB. ptrC. pointerD. *答案:D8. 下列哪个选项是C语言中用于定义一个枚举类型的关键字?A. enumB. typedefC. unionD. struct答案:A9. C语言中,用于定义一个函数的关键字是:A. functionB. defC. voidD. int答案:D10. 下列哪个选项是C语言中用于定义一个联合体的关键字?A. structB. unionC. enumD. typedef答案:B二、填空题(每题2分,共20分)1. 在C语言中,使用________关键字可以定义一个函数。

答案:int2. C语言中,使用________关键字可以定义一个指针。

答案:*3. C语言中,使用________关键字可以定义一个结构体。

2021c语言考试题库及答案

2021c语言考试题库及答案

2021c语言考试题库及答案一、选择题1. 在C语言中,以下哪个选项是正确的数据类型?A. 整型 intB. 浮点型 floatC. 字符型 charD. 所有选项都是答案:D2. 下列哪个运算符用于比较两个值是否相等?A. ==B. !=C. <=D. >=答案:A3. 在C语言中,如何声明一个指向整型的指针?A. int *p;B. int *p = 0;C. int *p = 1;D. 所有选项都是答案:A4. 下列哪个函数用于计算一个数的平方?A. sqrt()B. pow()C. abs()D. ceil()答案:B5. 在C语言中,哪个关键字用于定义一个函数?A. functionB. defC. voidD. int答案:C二、填空题1. 在C语言中,____关键字用于跳过当前循环的剩余部分,并开始下一次循环迭代。

答案:continue2. 字符串在C语言中是以____字符结束的字符数组。

答案:'\0'3. C语言中,____运算符用于计算两个数的乘积。

答案:*4. 在C语言中,____函数用于将浮点数转换为整数。

答案:(int) 或者 floor()5. C语言中,____关键字用于定义一个结构体。

答案:struct三、简答题1. 描述C语言中数组和指针的关系。

答案:在C语言中,数组名可以被看作指向数组第一个元素的指针。

因此,数组和指针紧密相关,可以通过指针访问和操作数组元素。

2. 解释C语言中的预处理指令#include的作用。

答案:预处理指令#include用于告诉预处理器包含一个源代码文件。

这通常用于包含库文件或自定义头文件,以便在编译时将它们的内容插入到源代码中。

四、编程题1. 编写一个C语言程序,计算并输出100以内所有偶数的和。

```c#include <stdio.h>int main() {int sum = 0;for (int i = 2; i <= 100; i += 2) {sum += i;}printf("The sum of even numbers from 1 to 100 is: %d\n", sum);return 0;}```2. 请编写一个函数,实现字符串的反转。

c语言大学期末考试题及答案

c语言大学期末考试题及答案

c语言大学期末考试题及答案C语言大学期末考试题及答案一、选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于定义数组?A. intB. arrayC. defineD. static答案:A2. 下列哪个是C语言中的合法标识符?A. 3variableB. variable-nameC. variable#nameD. variable_name答案:D3. C语言中,哪个函数用于计算两个数的和?A. sum()B. add()C. calculate()D. None of the above答案:D4. 以下哪个语句用于定义一个空指针?A. int *ptr;B. int *ptr = 0;C. int *ptr = NULL;D. Both B and C答案:C5. 在C语言中,哪个运算符用于取地址?A. *B. &C. %D. /答案:B6. 下列哪个语句是正确的C语言循环语句?A. do-whileB. whileC. forD. All of the above答案:D7. 在C语言中,哪个关键字用于定义一个函数?A. functionB. defC. voidD. int答案:D8. 以下哪个是C语言中的逻辑运算符?A. &&B. ||C. Both A and BD. None of the above答案:C9. 在C语言中,哪个函数用于输入数据?A. printf()B. scanf()C. getchar()D. puts()答案:B10. C语言中,哪个关键字用于定义一个结构体?A. structB. typeC. unionD. enum答案:A二、填空题(每空2分,共20分)1. 在C语言中,基本数据类型包括_______、_______、double和char。

答案:int, float2. 一个C语言程序的执行从_______函数开始。

中南大学2020年《C语言程序设计》期末考试试题及答案

中南大学2020年《C语言程序设计》期末考试试题及答案

一、选择题(15小题,每小题2分,共计30分)1.下面不正确的字符串常量是 A 。

A)'abc' B)"12'12" C)"0" D)" "2.以下正确的叙述是 DA)在C程序中,每行中只能写一条语句B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数C)在C程序中,无论是整数还是实数,都能被准确无误(精确)地表示D)在C程序中,%是只能用于整数运算的运算符3.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'十'6'一'3';后,c2中的值为 AA)D B)68 C)不确定的值 D)C4.sizeof(float)是 B :A)一个双精度型表达式 B)一个整型表达式C)一种函数调用 D)一个不合法的表达式5.以下说法正确的是 D :A)输入项可以为一实型常量,如scanf("%f",3.5);B)只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d");C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f);D)当输入数据时,必须指明变量的地址,如scanf("%f",&f);6.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A,B,当从第一列开始输入数据时,正确的数据输入方式是 D (注:<CR>表示回车)。

int a1,a2; char c1,c2;scanf("%d%d",&a1,&a2); scanf("%c%c",&c1,&c2);A) 1020AB<CR> B)10 20<CR>AB<CR>C)10 20 AB<CR> D)10 20AB<CR>7.请阅读以下程序:void main(){int a=5,b=0,c=0;if(a=b+c) printf("***\n");e1se printf("$$$\n");以上程序 D :A)有语法错不能通过编译 B)可以通过编译但不能通过连接C)输出*** D)输出$$$8.下面程序段的运行结果是 C 。

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