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

合集下载

大学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.-a1 B。

a[i] C。

a2_i D。

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。

C语言期末考试试卷附参考答案

C语言期末考试试卷附参考答案

一、单项选择题(请将答案填在下面表格中20×1)1. 以下叙述中正确的是()。

A. C语言比其他语言高级B. C语言可以不用编译就能被计算机识别执行C. C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D. C语言出现的最晚,具有其他语言的一切优点2. 以下叙述中正确的是()。

A.构成C程序的基本单位是函数B.可在一个函数中定义另一个函数C. main函数必须放在其他函数之前D.所有被调用的函数一定要在调用之前进行定义3. 以下叙述中正确的是()。

A. C语言程序总是从第一个函数开始执行B.在C语言程序中,要调用函数必须在main()函数中定义C. C语言程序总是从main()函数开始执行D. C语言程序中的main()函数必须放在程序的开始部分4. 以下有关for循环的正确描述是()。

A. for循环只能用于循环次数已经确定的情况B. for循环是先执行循环体语句,后判断表达式C.在for循环中,不能用break语句跳出循环体D. for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来5. 对下面程序段的描述,正确的是()。

x=-1;do{x=x*x;}while(!x);A.是死循环B. 循环执行一次C. 循环执行两次D. 有语法错误6. 以下有关C语言数组说法正确的是()。

A.数组元素的数据类型可以不一致B.数组元素的个数可以不确定,允许随机变动C.可以使用动态内存分配技术,定义元素个数可变的数组D.定义一个数组后,就确定了它所容纳的具有相同数据类型元素的个数7.以下数组定义正确的是()。

A. int a(20);B. int a[ ]={1,2,5,7,0};C. int a[n];D. int a[2]={1,2,4,6};8.在定义int b[2][10];之后,对b数组元素引用正确的是( )。

A. b[0][9]B. b[2,3]C. b(1)(5)D. b[10] [0]9. 如有定义语句int c[ ]={1,5,3,4,6,7,0};,则数组c有()个元素。

【大学C语言期末考试练习题】详解答案及过程讲解 读程序指针

【大学C语言期末考试练习题】详解答案及过程讲解 读程序指针

2020届大学c语言期末考试习题讲解读程序指针1.# include < stdio .h >main ( ){ int x[ ] = {10, 20, 30, 40, 50 };int *p ;p=x;printf ( “%d”, *(p+2 ) );}运行结果为:30首先定义一个整型数组x,x的长度为5;然后定义一个指针变量p;对p进行初始化,将数组x的地址赋给p。

因此此时p中存放的数组x的首地址,即数组中第一个元素x[0]的地址。

然后执行printf语句,输出表达式*(p+2)的值。

p+2表示以p当前指向的位置起始,之后第2个元素的地址,即a[2]的地址。

*(p+2)则表示该地址内所存放的内容,即a[2]的值30,因此输出302.#include <stdio.h>main( ){ char s[]=”abcdefg”;char *p;p=s;printf(“ch=%c\n”,*(p+5));}运行结果为:ch=f首先定义一个字符型数组s,并用字符串abcdefg对s进行初始化; 然后定义一个字符型指针变量p; 对p进行初始化,将数组s的地址赋给p。

因此此时p中存放的数组s的首地址,即数组中第一个元素s[0]的地址。

然后执行printf语句,输出表达式*(p+5)的值。

p+5表示以p当前指向的位置起始,之后第5个元素的地址,即a[5]的地址。

*(p+5)则表示该地址内所存放的内容,即a[5]的值f, 因此输出ch=f3.#include<stdio.h>main ( ){ int a[]={1, 2, 3, 4, 5} ;int x, y, *p;p=a;x=*(p+2);printf("%d:%d \n", *p, x);}运行结果为:1:3首先定义一个整型数组a,并对a进行初始化; 然后定义整型变量x,y,整型指针变量p; 再将数组a的地址赋给p。

【大学C语言期末考试练习题】详解答案及过程讲解 读程序输入输出

【大学C语言期末考试练习题】详解答案及过程讲解 读程序输入输出

2020届大学c语言期末考试习题讲解读程序基本输入输出及流程控制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遇到选择结构,首先要明确条件表达式成立时执行哪些操作。

C语言程序设计期末考试试题含答案

C语言程序设计期末考试试题含答案

C语言程序设计期末考试试题含答案一、选择题(每题 3 分,共 30 分)1、以下选项中,不是 C 语言关键字的是()A intB floatC classD char答案:C解析:在 C 语言中,class 不是关键字,int、float 和 char 都是常见的数据类型关键字。

2、以下变量定义中,正确的是()A int a=b=5;B char a='A';C float a=55, b=66;D double a; b;答案:C解析:A 选项中不能在定义时连续赋值;B 选项应该是 char a ='A';注意单引号;D 选项应该是 double a, b; 中间用逗号分隔。

3、以下程序段的输出结果是()```cint a = 5, b = 4, c = 6;if (a > b && a > c)printf("a 最大\n");else if (b > a && b > c)printf("b 最大\n");elseprintf("c 最大\n");```A a 最大B b 最大C c 最大D 编译错误答案:C解析:因为 5 不大于 6,所以执行 else 部分,输出“c 最大”。

4、以下循环语句执行的次数是()```cfor (int i = 0; i < 5; i++){printf("%d ", i);}```A 4 次B 5 次C 6 次D 无限次答案:B解析:从 0 到 4 ,一共 5 次。

5、以下数组定义中,正确的是()A int a5 ={1, 2, 3, 4, 5, 6};B int a ={1, 2, 3};C int a5 ={1, 2};D int a3 =(1, 2, 3);答案:B解析:A 选项数组长度为 5,却初始化了 6 个元素;C 选项只初始化了前两个元素,后面三个元素默认为 0;D 选项初始化方式错误,应该用花括号。

2020-2021《C语言》期末课程考试试卷B1(含答案)

2020-2021《C语言》期末课程考试试卷B1(含答案)

2020-2021《C语言》期末课程考试试卷B1适用专业:考试时间:120分钟考试形式:闭卷试卷总分:100分一、选择题;(每题2分,共34分)1.与十六进制数200等值的十进制数为()A) 256 B) 512 C) 1024 D) 20482.以下选项中可作为C语言合法变量的是( )A)int B)2_or C)Main D)a#b3.数字字符0的ASCII值为48,若有以下程序main(){ char a='1',b='2';printf("%c,",b++);printf("%d\n",b-a);}程序运行后的输出结果是( ) A)3,2 B)50,2 C)2,2 D)2,504.设int i=10,j=10;则“printf(“%d,%d\n”,++i,j--);”输出结果是( )A)10,10 B)10,9 C)11,9 D)11,105. 有以下程序main(){ int a,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,b);}程序运行后的输出结果是( )A)6,1 B)2,1 C)6,0 D)2,06.若整型变量a、b、c、d中的值依次为:1、4、3、2。

则条件表达式a<b?a:c<d?c:d 的值( ) A)1 B)2 c)3 D)47.有以下程序main(){ int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7) if(p[i]%2) j+=p[i];printf("%d\n",j);}程序运行后的输出结果是( ) A)42 B)45 C)56 D)60 8.以下While循环中,循环体执行的次数是( ) 。

k=1;while(--k) k=10;A. 一次也不执行B.无限次C. 10次D. 1次9.执行下面的程序时,从键盘上输入5和2,则输出结果是( )main(){int a,b,k;Scanf(“%d%d”,&a,&b);k=a;if(a<b)k=a%b;else k=b%a;printf(“%d\n”,k);}A 5B 3C 2D 010.有以下程序main(){ int a[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i;for(i=0;i<3;i++)printf("%d ",a[1][i]);}程序运行后的输出结果是( )A)0 1 2 B)1 2 3 C)2 3 4 D)3 4 511.有以下程序a=1,b=2,c=2;While(a<b<c){ t=a;a=b;b=t;c--;}printf(“%d,%d,%d”,a,b,c);程序运行后的输出结果是:( )A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,112.以下对一维整型数组a的正确说明是A) int a(10) B)int n=10,a[n]C)int n;scanf(“%d”,&n);int a[n]; D)#define SIZE 10 int a[SIZE];13.有以下程序main(){ int a=1,b;for(b=1;b<=10;b++){if(a>=8) break;if(a%2==1) { a+=5; continue;}a-=3;}printf("%d\n",b);}程序运行后的输出结果是( )A)3 B)4 C)5 D)614. 下面函数调用语句含有实参的个数为()fun((exp1,exp2),(exp3,exp4,exp5))A)1 B)2 C)4 D)515.有以下程序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中的偶数之和16. 2.数组名作为函数参数传递给函数,作为实在参数的数组名被处理为A. 该数组的长度B. 该数组的元素个数C. 该数组中各元素的值D. 该数组的首地址17.有以下程序#define N 20fun(int a[],int n,int m){ int i,j;for(i=m;i>=n;i--)a[i+1]=a[i];}main(){ int i,a[N]={1,2,3,4,5,6,7,8,9,10};fun(a,2,9);for(i=0;i<5;i++)printf("%d",a[i]); }程序运行后的输出结果是( )A)10234 B)12344 C)12334 D)12234二、填空题(每空1.5分,共24分)1.C语言程序是由【1】构成的,其中有且只能有一个【2】函数,该函数名为【3】。

大学C语言期末考试练习题(带详解答案)(1)



A)\’
B)\0 C)\n
D)\\
D 基

6) 8) 设先有定义:int a=10;则表达式a+=a *=a的值为____.
数 据
A)10
B)100 C)1000
D)200
C 类
型 9) 设先有定义:int a=10;则表达式(++a)+(a- -)的值为____.

运 算
A)20
B)21 C)22


printf("x=%d,a=%d,b=%d\n",x,a,b);
运 算
}

返回目录
C
● 填空题

0 5.以下程序的执行结果是___________。
言 程
#include<stdio.h>

main( )
设 计
{

float f1,f2,f3,f4;
D)19

返回目录
C
● 单项选择题
10) 设先有定义:int y=3,x=3,z=1;则语句:
语 言
D printf(“%d %d\n”,(++x,y++),z+2); 的输出结果为____.
程 序
A)3 4
B)4 2 C)4 3
D)3 3

计 11)假定x、y、z、m均为int型变量,有如下程序段:
● 单项选择题
C
3) 某C程序由一个主函数main( )和一个自定义函数max( )组

D 成,则该程序 ____.

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

一、选择题(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 。

x=y=0;while(x<15) {y++;x+=++y;}printf("%d,%d",x,y);A)20,7 B)6,12 C)20,8 D)8,209.若有说明:int a[3]={0};则下面正确的叙述是 D 。

A) 只有元素a[0]可得到初值0B) 此说明语句不正确C) 数组a中各元素都可得到初值,但其值不一定为0D) 数组a中每个元素均可得到初值010.在c语言中,引用数组元素时,其数组下标的数据类型允许是_ C _。

A)整型常量 B)整型表达式C)整型常量或整型表达式 D)任何类型的表达式11.下面程序段的运行结果是 _ B _。

char c[5]={'a','b','\0','c','\0'};printf("%s",c);}A)’a’’b’ B)ab C)ab c D)a b12.以下叙述正确的是 C 。

A) 在C程序中,main函数必须位于程序的最前面B)C程序的每行中只能写一条语句C)C语言本身没有输入输出语句D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误13.简单变量做实参时,实参与其对应的形参之间的数据传递方式是 C 。

A)双向值传递方式B)地址传递方式C)单向值传递方式D)用户指定传递方式14.编辑程序的功能是 A 。

A)修改并建立源程序 B)将源程序翻译成目标程序C)调试程序 D)命令计算机执行指定的程序15.在C语言中,5种基本数据类型的存储空间长度排列顺序为 C 。

A)char<int<1ong int<=float<double B)char=int<1ong int<=float<double C)char<int<=1ong int<=float<double D)char=int=1ong int<=float<double二、计算表达式(每小题1.5分,共计15分):设 int x=25,y=-20;float a=102.56,b=50.87;(注意:各式结果不影响后续的题目!)1.(++y)+(x--)( 6 )2.y*=y+=25( 25 )3.x+y>=0?(x-2*y):(x+2*y)( 65 )4.(x+y)/2+(int)(a-b)%(int)b( 3 )5.x/2+(a-b)/2( 37.845 )6.!(x=a)&&(y=b)&&1( 0 )7.!(a+b-1)||y+x/2( 1 )8.计算(y>=0)&&(++y)后y的值为: ( -20 )9.printf(“%d”,’\102’);结果为( 66 )10.已知’a’的ASCII码为97,则:printf(“%c”,’\x64’);结果为( d )三、写出下列程序的的执行结果(每小题5分,共计20分,注意输出格式)1.#include<stdio.h>Int main(){ int a=23389,b=45;float x=647.3586,y=13643.5538;char c1=’A’,c2[]="Hello";printf("a=%4d,b=%4d\n",a,b);printf("%-9.2f,%9.2f\n",x,y);printf("%o,%x,%u\n",b,b,b);printf("%d,%c\n",c1,c1);printf("%s,%6.4s\n",c2,c2);return 0;}2.#include<stdio.h>#define N 10int main( ){ int a=1,b=0, i;for (i=0; i<N/2; i++){ printf("%6d%6d",a,b);printf("\n");a=b+a;b=a+b;}return 0;}3.#include<stdio.h>int main(){ int i,j,k=0;for(i=1;i<31;i++){ for(j=2;j<=i-1;j++)if(i%j==0) break;if(j==i){ printf("%7d",i) ;k++;if(k%2==0) printf("\n");}}Return 0;}4.#include<stdio.h>int main(){ int i=16,j,x=6,y,z;static char c[]=”I am a student”;j=i+++1; printf(“%5d\n”,j);x*=i=j; printf(“%5d\n”,x);x=1,y=2,z=3;x+=y+=z;printf(“%5d\n”,(z+=x)>y? z++:y++);x=y=z=-1;++x||++y||z++;printf(“%5d,%5d,%5d\n”,x,y,z);printf(“%s,%5.4s\n”,c,c);return 0;}四、程序填空(每空1.5分,共计15分)1.下面程序的功能是:将字符数组s2中的全部字符拷贝到字符数组s1中,不用strcpy 函数。

#include <stdio.h>main(){ char s1[80], s2[80];int i;printf("input s2:");gets(s2);for(i=0;s2[i]!=’\0’; i++ )s1[i]=s2[i] ;s1[i]=’\0’;printf("s1: %s \n",s1);return 0;}2.输入20个整数,找出其中的最大数及最小数,并求其和值。

#include <stdio.h>int main(){ int a[20],i,max,min,sum;printf("input a[0]-a[19]:");for(i=0;i<20;i++)scanf(“%d”, &a[i] );max=a[0]; min=a[0]; sum= a[0] ;for(i=1; i<20 ;i++){ if(a[i]>max) max=a[i];if(a[i]<min) min=a[i] ;sum+=a[i];}printf(%d,%d,%d\n",max,min,sum);return 0;}3.输入一行字符到字符数组中,将其中的小写字母转化成大写字母,大写字母转化成小写字母,然后输出。

#include <stdio.h>#include <string.h>main(){ char c,str[80];int i;gets(str);for(i=0;(c=str[i])!=’\0’;i++){ if( c>=’A’&&c<=’Z’ ) c=c+32;else if(c>=’a’&&c<=’z’) c=c-32;str[i]=c; }puts( str );return 0;}五、编写程序(每小题10分,共计20分)(注意:可做在试卷反面)1.输出100到300之间能被5整除却不能被3整除的所有数之和。

#include <stdio.h>int main(){ int n,sum=0;for(n=100; n<=300; n++)if(n%5==0 && n%3!=0) sum += n;printf(“%d\n”, sum);return 0;}2.编写main函数及一个求x阶乘(x!)的用户自定义函数fun( ),并在主函数中调用该函数求组合数c 的值)!(!!n m n m C nm -=。

相关文档
最新文档