大连理工大学2012c语言期末模拟试题及答案

发布时间:2024-08-29

一、

1/字符串"\\\'efg\'\\"的长度是:( ).

A、3 B、11 C、7 D、5

2、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的 数据类型为()。

A、double B、不确定 C、int D、float

3、下列语句的结果是()。 main() { int j; j=3;

printf("%d,",++j); printf("%d",j++); }

A、3,3 B、4,4 C、3,4 D、4,3

4、逻辑表达式!(2-1)&&x||0的值是( )

A、1 B、0 C、3 D、2

5、int a=1,b=2,c=3; if(a>b)a=b; if(a>c)a=c; 则a的值为()。

A、3 B、2 C、1

D、不一定

6、执行语句 for(i=1;i++<4;); 后变量 i 的值是()。

A、3 B、5 C、4 D、不定

7、以下正确的描述是( ).

A、只能用continue语句来终止本次循环 B、switch语句中不能出现continue语句 C、在循环中break语句不能独立出现 D、goto语句只能用于退出多层循环

8、下面合法的语句定义是( ).

A、char a[ ]={'0','1','2','3','4','5'}; B、int a[ ]="string";

C、int a[5]={0,1,2,3,4,5}; D、char a="string";

9、char a[10];不能将字符串"abc"存储在数组中的是()。

A、int i;for(i=0;i<3;i++)a[i]=i+97;a[i]=0; B、a="abc";

C、strcpy(a,"abc");

D、a[0]=0;strcat(a,"abc");

10、在C语言中,一维数组的定义方式为:类型说明符 数组名()。

A、[整型常量]或[整型表达式] B、[正整型常量表达式] C、[整型表达式] D、[常量表达式]

11、在定义全局变量和局部静态变量的同时赋值,变量的初始化在( )时确定的.

A、运行 B、编辑 C、编译 D、调试

12、关于建立函数的目的,以下正确的说法是()。

A、提高程序的可读性 B、减少程序文件所占内存 C、减少程序的篇幅

D、提高程序的执行效率

13、以下函数调用语句中实参的个数是()。 func((e1,e2),(e3,e4,e5));

A、3 B、5

C、语法错误 D、2

14、设有宏定义#define SUB(x,y) (x)*y,且a=3,b=4,则 SUB(a++,b++) 的值为( ).

A、13 B、16 C、20 D、12

15、变量p为指针变量,若p=&a,下列写法不正确的是()。

A、*(p++)==a++ B、&*p==&a

C、(*p)++==a++ D、*&a==a

16、下列程序正确的运行结果为( ). #include<stdio.h> main() {

union u

{char *name; int age; int income; } s;

http://www.77cn.com.cn="WANGLING"; s.age=28;

s.income=1000;

printf("%d\n", s.age); }

A、8 B、28 C、1000 D、不确定

17、定义my_file 为文件型指针变量,使用fopen只读方式打开一个已存在的二进制文件,以下正 确的调用形式为( ).

A、my_file=fopen("my.dat", "r"); B、my_file=fopen("my.dat", "rb+"); C、my_file=fopen("my.dat", "rb"); D、my_file=fopen("my.dat", "r+");

二、

1、若i =3,则printf("%d",-i++);输出的值为 -4。 2、格式字符%x用来以八进制形式输出整数.

3、设u=1,v=2,w=3,则逻辑表达式u||v-w&&v+w的值为0. 4、已知a=4,b=2,c=3,d=5,表达式a>b?a:c<d?c:d的值为3. 5、break语句能够终止当前进行的多层循环. 6、break语句不能终止正在进行的多层循环. 7、若有定义和语句:

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.

8、二维数组在内存中存贮时,是按行的顺序进行存储的。 9、C语言中引用数组元素的方括号可以用花括号代替.

10、每次调用函数时,都要对静态局部变量重新进行初始化.

11、在程序中的第二个函数之后定义了某全局变量,则该程序的所有函数均可使用它. 12、在C程序中 , 函数既可以嵌套定义 , 也可以嵌套调用 13、在定义宏时,在宏名与带参数的括弧之间不应加空格. 14、数组名与指针变量是相互等价的.

15、两个类型相同的结构体变量,可以互相赋值.

16、C语言中,在打开文件时,必须说明文件的使用方式,"r+"用于打开一个不存在的文件. 三、

1、设x和y均为int型变量,且x=1,y=2,则表达式1.0+x/y的值为_____.

2、在C语言中,long类型数据占_____个字节, short类型数据占_____个字节. 3、int x=2,y=3,z=4; 则表达式x+y>z&&y==z的值为_____. 4、int x=2,y=3,z=4; 则表达式x+y&&(x=y)的值为_____.

5、C语言中,二维数组在内存中的存放方式为按_____优先存放. 6、函数调用时的实参和形参之间的数据是单向的_____传递.

7、结构体是不同数据类型的数据集合,作为数据类型, 必须先说明结构体_____,再说明结构体变量.

8、调用 fopen 函数打开一文本文件,在"使用方式"这一项中, 为输入而打开需填入_____. 四、 1、/*-------------------------------------

----------- 【程序设计】

--------------------------------------------------

功能:求出二维数组外围元素之和,作为函数值返回。二

维数组的值在主函数中赋予。

-------------------------------------------------*/ #define M 4 #define N 5

#include "stdio.h"

int fun(int a[M][N]) {

/*********Begin**********/

/********** End **********/ }

main() {

int

a[M][N]={{1,3,5,7,9},{2,4,6,8,10},{2,3,4,5,6},{4,5,6,7,8}}; void TestFunc(); int y; y=fun(a); 2、

/*------------------------------------------------ 【程序设计】

--------------------------------------------------

功能:找出一个大于给定整数且紧随这个整数的素数,并

作为函数值返回。

------------------------------------------------*/

#include "stdio.h"

printf("s=%d\n",y); TestFunc(); }

void TestFunc() {

FILE *IN,*OUT;

int iIN[M][N],iOUT; int i,j,k;

IN=fopen("14.in","r"); if(IN==NULL)

{printf("Please Verify The Currernt Dir..It May Be Changed"); }

OUT=fopen("14.out","w"); if(OUT==NULL)

{printf("Please Verify The Current Dir.. It May Be Changed"); }

for(k=0;k<10;k++) { for(i=0;i<M;i++) for(j=0;j<N;j++)

fscanf(IN,"%d",&iIN[i][j]);

iOUT=fun(iIN);

fprintf(OUT,"%d\n",iOUT); }

fclose(IN); fclose(OUT); }

#include"conio.h"

int fun(int n) {

/*********Begin**********/

/********** End **********/ }

void TestFunc() {

FILE *IN,*OUT; int s ; int t; int o;

IN=fopen("in.dat","r"); if(IN==NULL) {

printf("Read File Error"); }

OUT=fopen("out.dat","w"); if(OUT==NULL) {

printf("Write File Error"); }

for(s=1;s<=5;s++)

五、 1、

/*------------------------------------------------------ 【程序改错】

--------------------------------------------------------

功能:一个5位数,判断它是不是回文数。即12321是回文数,个

位与万位相同,十位与千位相同。

------------------------------------------------------*/

#include "stdio.h" main( ) 2、

/*------------------------------------------------------ 【程序改错】

--------------------------------------------------------

功能:用下面的和式求圆周率的近似值。直到最后一项的绝对值

小于等于0.0001。

{

fscanf(IN,"%d",&t); o=fun(t);

fprintf(OUT,"%d\n",o); }

fclose(IN); fclose(OUT); }

main() {

int m;

printf("Enter m: "); scanf("%d", &m); printf("\nThe result is %d\n", fun(m)); TestFunc(); }

{

/**********ERROR**********/ long ge,shi,qian;wan,x; scanf("%ld",&x);

/**********ERROR**********/ wan=x%10000;

qian=x%10000/1000; shi=x%100/10; ge=x%10;

/**********ERROR**********/ if (ge==wan||shi==qian)

printf("this number is a huiwen\n"); else

printf("this number is not a huiwen\n"); }

π/4= 1- 1/3 + 1/5 - 1/7 ....

------------------------------------------------------*/ #include "stdio.h"

/**********ERROR**********/ #include "math"

void fun() {

int i=1;

/**********ERROR**********/ int s=0,t=1,p=1;

/**********ERROR**********/ while(fabs(t)<=1e-4) {

s=s+t; p=-p; i=i+2;

六、1、

/*------------------------------------------------------- 【程序填空】

---------------------------------------------------------

功能:计算并输出500以内最大的10个能被13或17整除的自然数之和。

-------------------------------------------------------*/

#include "stdio.h"

/***********FILL***********/ int fun(_____ ) {

int m=0, mc=0, j, n;

/***********FILL***********/ 2、

/*------------------------------------------------------- 【程序填空】

---------------------------------------------------------

功能:以下程序中,函数fun的功能是计算x^2-2x+6,主函数中将调用fun函数计算: y1=(x+8)^2-2(x+8)+6 y2=(sin(x))^2-2sin(x)+6 请填空。

---------------------------------------------------------------*/ #include <stdio.h>

t=p/i; }

/**********ERROR**********/ printf("pi=%d\n",s*4); }

main() {

fun(); }

while (k >= 2 && _____) {

/***********FILL***********/ if (k%13 == 0 || _____) {

m=m+k; mc++; } k--; }

/***********FILL***********/ _____; }

main ( ) {

printf("%d\n", fun (500)); }

#include <math.h> double fun(double x) {

return(x*x-2*x+6); }

main() {

/***********FILL***********/ double x, __________; printf("Enter x:"); scanf("%lf",&x);

/***********FILL***********/

y1=fun( _________);

/***********FILL***********/ y2=fun( _________);

printf("y1=%lf,y2=%lf\n", y1, y2);

答案:一、CABBC/BAABB/CADDA/CC 二、NNNNN/YYYNN/NNYNY/N 三、1、1 1.0 1.

2、 4 2

3、 0 4、 1 5、 行 6、 值 7、 类型 8、 r+ r 四、1、int s=0;

int i,j;

for(i=0;i<M;i++)

s=s+a[i][0]+a[i][N-1]; for(j=1;j<N-1;j++)

s=s+a[0][j]+a[M-1][j];

return s;

五、1、long ge,shi,qian,wan,x;

wan=x/10000;

if (ge==wan&&shi==qian) if (shi==qian&&ge==wan) 2、A #include "math.h"

#include <math.h>

B float s=0,t=1,p=1; float s=0,p=1,t=1; float p=1,s=0,t=1; float p=1,t=1,s=0; float t=1,p=1,s=0; float t=1,s=0,p=1; double s=0,t=1,p=1;

float s=0.0,t=1.0,p=1.0; double s=0.0,t=1.0,p=1.0;

}

2、int i,k;

for(i=n+1;;i++){ for(k=2;k<i;k++) if(i%k==0) break; if(k==i) return(i); }

C、while(fabs(t)>1e-4) while(0.0001<fabs(t)) while(1e-4<fabs(t)) while(fabs(t)>0.0001) 六、1、A int k B、 mc < 10 10 > mc mc <= 9 9 >= mc C、k%17 == 0 !(k%17) k/17*17==k D、return m return (m)

单项填空:

1.以下程序段 char

*alp[]={"ABC","DEF","GHI"}; int j; puts(alp[1]); 的输出结果是()。

A、D B、A C、B D、DEF

2.下列表达式中,可作为C合法表达式的是()。

A、3.0%2 B、3=2=1=0 C、[3,2,1,0] D、(3,2,1,0)

3.下面程序的 正确输出结果是( ).(规定用U表示空格) main() {

float x=5.783,y= -10.2345; printf ("x=%-8.2f ,y=%-8.2f \n", x,y); }

A、x=5.78UUUU,y=-10.23UU B、x=5.78,y=-10.23 C、5.78,-10.23

D、x=UUUU5.78,y=UU-10.23

4.当x为偶数或奇数时(0除外),其值都为0的表达式是:( )

A、(x/2*2-x)==0 B、x%2==0 C、!x!=0 D、!(x%2)

5.下列运算符优先级最低的是( ).

A、=

B、+ C、! D、&&

6.设有如下程序段: int k=10; while(k==0) k--;

则下述说明中正确的是( ).

A、循环体一次也不执行 B、循环体执行一次 C、死循环

D、循环体执行10次

7.从循环体内某一层跳出,继续执行循环外的语句是( )。

A、continue语句 B、空语句 C、break语句 D、return语句

8.以下对一维整型数组a的正确说明是()。A、int a(10);

B、int n; scanf("%d",&n); int a[n]; C、int n=10,a[n];

D、#define SIZE 10 (换行) int a[SIZE];

9.以下定义语句中,错误的是()。

A、int n=5,a[n]; B、int a[]={1,2}; C、char s[10]="test"; D、char *a[3];

10.下面叙述中不正确的是( ).

A、可以对字符型数组进行整体输入和输出. B、不可以对浮点型数组进行整体输入和输出. C、可以对整型数组进行整体输入和输出. D、字符型数组可以存放字符串.

11.函数定义时的参数为形参,调用函数时所用的参数为实参,则下列描述正确的是( ).

A、实参与形参是双向传递 B、形参可以是表达式 C、形参和实参可以同名

D、实参类型一定要在调用时指定

12.以下错误的描述是:函数调用可以()。A、出现在执行语句中

判断:

B、做为一个函数的实参 C、出现在一个表达式中 D、做为一个函数的形参

13.以下不正确的说法是:C语言规定()。

A、实参可以是常量,变量或表达式 B、实参可以为任何类型

C、形参可以是常量,变量或表达式 D、形参应与其对应的实参类型一致

14.下列形式,不属于编译预处理命令的是( ).

A、#ifdef M B、#undef M C、#if (M>1) D、while (M>1)

15.下面判断正确的是()。

A、char c[4]="abc",d[4]="abc";等价于 char c[4]=d[4]="abc";

B、char str[10]={"china"};等价于char str[10];str[]={"china"}; C、char *a="china";等价于 char *a;*a="china";

D、char *s="china";等价于 char *s;s="china";

16.若有以下结构体定义:

struct example { int x; int y; } vl;

则( )是正确的引用或定义.

A、example.x=10; B、struct v2;v2.x=10; C、example v2;v2.x=10; D、struct example v2={10,3};

17.若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数 feof(fp)的值为()。

A、-1 B、1

C、一个非0值 D、0

1.如果有一个字符串,其中第十个字符为'\n',则此字符串的 有效字符为9个。

2.格式字符%o用来以十六进制形式输出整数.

3.已知a=3,b=4,c=5,则逻辑表达式!(a>b) && !c||1的值为1.

4.已知x=2,y=2, 执行分支语句 if(x==y) y=1; else y=-1;后,y=-1.

5.continue语句对于while和do-while循环来说,意味着转去计算While表达式. 6.在do-while循环中,根据情况可以省略while.

7.对于字符数为n个的字符串,其占用的内存为n+1个字节空间. 8.puts 函数用来输出一个字符.

9.引用数组元素时,下标可以是整型表达式或整型常量. 10.函数调用结束后,静态局部变量所占用的空间被释放.

11.在一个函数中定义的静态局部变量可以被另一个函数调用.

12.当全局变量与局部变量同名时,在局部变量的作用域范围之内,全局变量起作用. 13.计算机编译系统对宏定义在编译时进行语法检查.

14.若定义 int array[5] , *p; 则赋值语句 p=array;是正确的. 15.共同体变量所占的内存长度等于最长的成员的长度。 16.C语言中,打开一个文件就意味着产生了一个文件.

填空:

1.设x的值为15,n的值为2,则表达式x%=(n+=3)运算后x的值是_____. 2.已知a=-13,b=6, a%b的十进制数值为_____. 3.已知a=12,写出表达式 0<a&&a<2的值是_____.

4.已知 i=5, 写出语句 a=(i>5)?0:1; 执行后整型变量 a 的值是_____.

5.C语言中,数组名是一个不可变的_____常量,不能对它进行加减和赋值运算. 6.C语言中一个函数由函数首部和_____两部分组成.

7.设有以下共用体类型说明和变量定义,则变量c在内存所占字节数是 _____。

union stud { short int num; char name[10]; float score[5]; double ave; } c; 8.在C语言中,关闭文件即是文件指针不再指向该_____.

程序设计:

1.

/*------------------------------------------------ 【程序设计】

--------------------------------------------------

功能:计算并输出给定整数n的所有因子之和(不包括1与 自身)。

注意:n的值不大于1000。

例如:n的值为855时,应输出704。

------------------------------------------------*/

#include "stdio.h"

int fun(int n) {

/*********Begin**********/

/********** End **********/ }

void TestFunc() {

FILE *IN,*OUT; int iIN,iOUT,i;

IN=fopen("in.dat","r"); if(IN==NULL) {

printf("Please Verify The Currernt Dir..It May Be Changed"); }

OUT=fopen("out.dat","w"); if(OUT==NULL) {

printf("Please Verify The Current Dir.. It May Be Changed"); }

for(i=0;i<5;i++) 2.

/*------------------------------------------------------ 【程序设计】

--------------------------------------------------------

功能:删去一维数组中所有重复的数,只保留不同的数。

数组中的数已按由小到大的顺序排列,

函数返回删除后数组中数据的个数。 例如:一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。

删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。

注意:请勿改动主函数main和其它函数中的任何内容。

------------------------------------------------------*/ #include "stdio.h" #define N 80

int fun(int a[],int n) {

/*********Begin**********/

/********** End **********/

{

fscanf(IN,"%d",&iIN); iOUT=fun(iIN);

fprintf(OUT,"%d\n",iOUT); }

fclose(IN); fclose(OUT); } main() {

printf("s=%d\n",fun(855)); TestFunc(); } } main() {

void TestFunc(); int

a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;

printf("The original data:\n"); for(i=0;i<n;i++) printf("%3d",a[i]); n=fun(a,n);

printf("\n\nThe data after deleted:\n"); for(i=0;i<n;i++) printf("%3d",a[i]); printf("\n\n"); TestFunc(); }

void TestFunc() {

FILE *IN,*OUT; int a[N]; int n; int i;

IN=fopen("in.dat","r"); if(IN==NULL) {

printf("Read File Error");

}

OUT=fopen("out.dat","w"); if(OUT==NULL) {

printf("Write File Error"); }

fscanf(IN,"%d",&n);

程序改错:

1.

/*------------------------------------------------------ 【程序改错】

--------------------------------------------------------

函数fun的功能是:求1到20的阶乘的和。 --------------------------------------*/

#include "stdio.h" main () {

int n,j; 2.

/*------------------------------------------------------ 【程序改错】

--------------------------------------------------------

功能:实现两个字符串的连接。 例如:输入dfdfqe和12345时,则输出dfdfqe12345.

------------------------------------------------------*/ #include"stdio.h" main() {

char s1[80],s2[80];

void scat(char s1[],char s2[]); gets(s1); gets(s2); scat(s1,s2); puts(s1);

程序填空:

1.

for(i=0;i<n;i++) fscanf(IN,"%d",&a[i]); n=fun(a,n);

for(i=0;i<n;i++) fprintf(OUT,"%3d",a[i]); fclose(IN); fclose(OUT); }

float s=0.0,t=1.0; for(n=1;n<=20;n++) {

/**********ERROR**********/ s=1;

for(j=1;j<=n;j++)

/**********ERROR**********/ t=t*n;

/**********ERROR**********/ s+t=s; }

printf("jiecheng=%f\n",s); }

void scat (char s1[],char s2[]) {

int i=0,j=0;

/**********ERROR**********/ while(s1[i]= ='\0') i++; /**********ERROR**********/ while(s2[j]= ='\0') {

/**********ERROR**********/ s2[j]=s1[i]; i++; j++; }

/**********ERROR**********/ s2[j]='\0';

} }

/*-----------------------------------

-------------------- char a[5][9]={" "}; 【程序填空】 int i,j; ------------------------------------- for (i=0;i<5;i++)

-------------------- /***********FILL***********/ for(j=i; _____;j++) 功能:打印以下图形。 a[i][j]='*'; /***********FILL***********/ ***** for(_____;i<5;i++) ***** { ***** for(j=0;j<9;j++) ***** /***********FILL***********/ ***** printf("%c", _____ ); ------------------------------------- /***********FILL***********/

------------------*/ _____; #include "stdio.h" } main ( ) } { 2. for(i=0;________;i++) /*-----------------------------------ave=ave+a[i];

-------------------- ave=ave/n; 【程序填空】 /***********FILL***********/ -------------------------------------_________;

-------------------- } 功能:计算n门课程的平均分。 int main()

{ 例如:若有5门课程的成绩是:90.5, 72, 80,

float 61.5, 55

score[30]={90.5,72,80,61.5,55},aver;

则函数的值为:71.80。

/***********FILL***********/

------------------------------------- aver=fun(_______,5);

------------------*/

printf( "\nAverage score

#include <stdio.h>

is: %5.2f\n",aver);

float fun(float *a,int n)

return 0;

{

}

int i;

float ave=0.0;

/***********FILL***********/ 答案:DDACAACDACCDCDDDD

错错对错对错对错对错错错错对对错

0 -1 0 1 指针、地址 函数体 20 文件

2. 【参考代码】 程序设计:

int i,j=1,k=a[0]; 1. 【参考代码】

int s=0,i;

for(i=2;i<n;i++) if(n%i==0)s=s+i; return s;

for(i=1;i<n;i++) if(k!=a[i]) {a[j++]=a[i]; k=a[i];}

a[j]=0;

return j; 程序改错: 1. 【改错1】 【参考答案】 t=1; t=1.0; 【改错2】 【参考答案】 t= t * j ; t*=j; t=j*t; 【改错3】 【参考答案】 s= s + t ; s+=t; s=t+s; 2. 【改错1】 【参考答案】

while(s1[i]!='\0')i++; while(s1[i])i++; while(s1[i]!=NULL)i++; while(s1[i]!=0)i++; 【改错2】 【参考答案】 while(s2[j]!='\0') while(s2[j]) while(s2[j]!=NULL) while(s2[j]!=0) 【改错3】 【参考答案】 s1[i]=s2[j]; 【改错4】 【参考答案】 s1[i]='\0'; s1[i]=NULL; *(s1+i)='\0'; s1[i]=0; 程序填空: 1.【空1】 【参考答案】 j<i+5 i+5>j j<=i+4

i+4>j 【空2】 【参考答案】 i=0 【空3】 【参考答案】 a[i][j] 【空4】 【参考答案】 printf("\n")

单项选择:

1.sizeof(float)是()。

A、一个浮点表达式 B、一个不合法的表达式

C、函数调用结果是一个整型表达式。 D、一种函数调用

2.下列数据中属于"字符串常量"的是( )。A、'A' B、"ABC" C、ABC D、'ABC'

3.用下面的scanf函数输入数据,使得i=10,k=15选择正确的键盘输入方法( ). (用"[CR]"表示回车,U表示空格) main() {int i,k;

scanf("i=%d,k=%d",&i,&k); }

A、i=10[CR]k=15[CR] B、i=10,k=15[CR] C、10U15[CR] D、10,15[CR]

4.逻辑表达式3<2||-1&&4>3-!0的值为:( )

A、1 B、3 C、0 D、2

5.下列运算符中是C语言关系运算符的是()。

A、& B、~

C、!= D、!

6.语句while(!E);中的表达式!E等价于()。

A、E==1 B、E!=0 C、E!=1 D、E==0

7.以下正确的描述是( ).

A、只能在循环体内和switch语句内使用break语句

B、continue语句的作用是终止整个循环的执行

C、从多层嵌套的外层循环中退出时,只能使用goto语句

D、在循环体内使用break和continue语句的作用相同

8.下面各语句中,能正确进行赋字符串操作的语句是( ).

A、char s1[5][ ]={"ABCDE"};

B、char s2[6]={'A','B','C','D','E'}; C、char st[ ][ ]={"ABCDE"};

D、char s[5]={'A','B','C','D','E'};

9.若有说明: int a[3][4]={0};则下面正确的叙述是()。

A、数组a中每个元素均可得到初值0 B、只有元素a[0][0]可得到初值0

C、数组a中各元素都可得到初值,但其值不一定为0

D、此说明语句不正确

10.若有说明 int a[3][4];则a数组元素的非法引用是()。

A、a[1][3] B、a[0][4] C、a[0][2*1] D、a[4-2][0]

11.执行下面程序后,输出结果是()。 main()

{ int a,b,c; a=45,b=27,c=0; c=max(a,b);

printf("%d\n",c); }

int max(int x,int y) { int z;

if(x>y) z=x; else z=y; return(z); }

A、72 B、18 C、27 D、45

C、不一定 D、3

12.以下正确的描述是:在C语言程序中()。

A、函数的定义可以嵌套,但函数的调用不可以嵌套

B、函数的定义不可以嵌套,但函数的调用可以嵌套

C、函数的定义和函数的调用均可以嵌套 D、函数的定义和函数的调用均不可以嵌套

13.在C语言的函数中,下列正确的说法是()。

A、形参可以是常量和变量 B、可以有也可以没有形参 C、数组名不能作形参 D、必须有形参

16.若有以下程序段,则使用错误的选项是( ).

struct student {

int num; int age; };

struct student stu[3]

={{1001,20},{1002,19},{1004,20}}; main(); {

struct student *p; p=stu; … ; }

A、(*p).num B、(p++)->num C、p=&stu.age D、p++

14.设有宏定义#define PI 3.14 和#define S(r) PI*r*r,则S(2)的值为( ).

A、6.28 B、12.56 C、3.14 D、9.42

17.若以"a+"方式打开一个已存在的文件,则以下叙述正确的是()。

A、文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B、以上各种说法皆不正确

C、文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 D、文件打开时,原有文件内容被删除,只可作写操作

15.int a[10]={1,2,3,4,5,6,7,8};int *p;p=&a[5];p[-3]的值是()。

A、4 B、2

判断:

1.#define 和printf 都不是C语句。

2.格式字符%x用来以十六进制形式输出整数.

3.语句if(a>b) printf("%d",a); else printf("%d",b);可以用条件表达式a>b?a:b取代. 4.逻辑表达式-5&&!8的值为1.

5.循环结构中的continue语句是使整个循环终止执行 6.for循环语句不能用于循环次数未知的情况下. 7.引用数组元素时,数组元素下标必须是整型常量. 8.数组的首地址一定是第一个数组元素的地址.

9.数组整体不参加数据处理(即不参加各种运算),参加数据处理的只能是数组的元素. 10.数组名作为函数调用时的实参,实际上传递给形参的是数组全部元素的值. 11.在主函数中,必须要对被调用函数进行类型说明,否则在编译时会出现错误.

大连理工大学2012c语言期末模拟试题及答案.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    下载本文档需要支付 7

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219