1、大连理工大学秋季学期C语言模拟题一一、选择题1 以下不符合C语言语法的赋值语句是( )A j=j=5B k=2*4,k*4C j+D y=float(j)2 以下运算符中,优先级最高的运算符是( )A ?:B ,C &D +3 根据下面的程序,正确的输出形式是( )main( ) 1nt i =5,j=10; printf (“i =%d,”,i); printf(“j =%d”,J);A i =5, j=10B 10, 5C. 5, 10D. i=5U j=104 int a=1,b=2, c=3; if(ab=a .a=c c=b;则c的值为( )A .1B .3C .2D.不一定5 在以
2、下一组运算符中,优先级最高的运算符是: ( )A.=B.&C.=D.%6 执行语句 for (i=1; i+4;); 后变量 i 的值是 ( )A 3B 5C 4D 不定7 若i为整型变量则以下循环执行次数是 ( ) for ( i=2; i= =0;) printf (“%d”,i- -);A .0次B .2次C.无限次D .1次8下列数组说明中,正确的是( )A. char str1,str2 ;str2=“China; strcpy(strl, str2);B. char str=”China;C. char str; str=China”D. char str5,str2= China
3、;str1=str2;9 设有数组定义:char array =China; 则数组array所占的空间为( )A.7个字节B.6个字节C. 5个字节D. 4个字节10 以下能对二维数组二进行正确初始化的语句是( )A .int a 3=1,2,3,4,5,6;B .int a24=1,2,3,4,5,6;C .int a2=1,0,1,5,2,3;D .int a3=1,0,1,1,1;11 用户定义的函数不可以调用的函数是( )A.本文件外的B.本函数下面定义的C.非整型返回值的D.main函数12 以下正确的函数声明是( )A .double fun(int x,int y);B .do
4、uble fun(int x,y);C .double fun(int x ;int y)D .double fun(int x,int y)13 凡是函数中未指定存储类别的局部变量,其隐含的存储类别为( )A.外部(extern)B.静态(static)C.寄存器(register)D.自动(auto)14有关文件包含“命令说法,下列叙述正确的是( ).A.将预处理的结果作为一个源程序编译,得到一个目标文件.B一个include命令可指定多个被包含文件.C.将预处理的结果作为多个文件编译.D.被包含的文件可以是源文件或目标文件.15下面程序的输出结果应该是( ).char s =”ABCD”
5、main char *p for(p=s;p关系运算符_算术运算符_逻辑运算符!.4、已知x=3,y=1,执行分支语句if(xy)t=x;x=y;y=t; esle printf(“error!”);后,结果为error!.5、若有说明int c;则while(c=getchar();没有语法错误。6、for循环的三个表达式中间用分号相分隔,并且分号不能省略。7、若有语句:char a =”string”;则a6的值为”0”;8、数组整体可以参加各种数学运算,数组元素也可以参加各种数学运算。9、C语言中弓用数组元素的方括号可以用花括号代替。10、在C语言中,函数名仅仅代表函数的名称,没有任何含
6、义.11、当全局变量与局部变量同名时,局部变量起作用.12、在C程序中,函数可以嵌套定义,但不可以嵌套调用13、宏名有类型,其参数也有类型.14、用指针取值比用数组名取值速度要快.15、结构体变量的成员可以象普通变量一样进行各种运算.16、C语言中,遇到回车符号就意昧着文件结束。三、填空题1、已知:int i=8, j=10, m, n; m=+i ; n=j+;问语句执行后m=( ),n=( )。2、执行下列语句后,z的值是( ) int x=4,y+25,;z=5;z=y/x*z;3、设x=2&2|1, x的值为( )4、已知a=12,写出表达式0a&a2的值是( )5、若有数组定义: i
7、nt a10; 则该数组可用的最小下标值是( )6、在调用一个函数的过程中,直接或间接地调用该函数本身,称为函数的( )调用。7、设有以下结构类型说明和变量定义,在TC编译环境下,变量a在内存所占字节数是 ( ) struct stud char name10; float s 4; double ave; a,*p ;8、若有fp=fopen(“al. dat, “r+”)打开文件语句,这个文件的数据是以( )的形式存放在内存中,该文件的使用方式为读/( )四 程序改错1、/*- 【程序改错】-功能:删除 w 数组中下标为k的元素中的值。程序中,调用了 getindex、arrout和arr
8、del三个函数,getindex用以输入 所删元素的下标,函数中对输入的下标进行检查,若越界, 则要求重新输入,直到正确为止。arrout用以输出数组中 的数据,arrdel进行所要求的删除操作。-*/#include conio.h#include stdio.h#define NUM 10/*ERROR*/void arrout ( int w, int m ) int k; /*ERROR*/ for (k = 1; k m; k+) /*ERROR*/ printf (%d ,wm); printf (n); int arrdel ( int *w, int n, int k ) in
9、t i; for ( i = k; i n-1; i+ ) wi = wi+1; n-; return n;int getindex( int n ) int i;do printf(nEnter the index 0= i %d : , n );scanf (%d,&i ); while( i n-1 );return i;main( ) int n, d, aNUM=21,22,23,24,25,26,27,28,29,30;n = NUM;printf (Output primary data :n); arrout ( a, n );d = getindex( n ); n = ar
10、rdel ( a, n, d );printf (Output the data after delete :n); arrout( a, n );2、/*- 【程序改错】-功能:编写函数fun生成一个对角线元素为5,上三角元素为0, 下三角元素为1的3*3的二维数组。-*/#include stdio.hvoid fun(int arr3) /*ERROR*/ int i,j /*ERROR*/ for(i=1;i3;i+) for(j=0;ji) arrij=0; else arrij=1;main() int a33,i,j; fun(a); for(i=0;i3;i+) for(j=0
11、;j3;j+) printf(%d ,aij); printf(n); 五、程序设计1、/*- 【程序设计】-功能:编写函数求10个数中的次大数,返回其值。注意:请勿改动主函数main和其它函数中的任何内容。-*/#include stdio.hint second_max(int a, int n) /*Begin*/ /* End */main() void TestFunc();int x10=12,-4,5,8,0,9,-3,10,6,2; printf(this second max =%dn, second_max(x, 10); TestFunc(); void TestFunc
12、() FILE *IN,*OUT; int i,b10; 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(i=0;i10;i+)fscanf(IN,%d,&bi); o=second_max(b,10); fprintf(OUT,%dn,o); fclose(IN); fclose(OUT);2、/*-【程序设计】-功能:编写函数fun求sum=d+dd+ddd+dd.d(n个d), 其
13、中d为1-9的数字。例如:3+33+333+3333+33333(此时d=3,n=5),d和n在主函 数中输入。-*/#include stdio.hmain() int d,n; long sum,fun(); void TestFunc(); printf(d=); scanf(%d,&d); printf(n=); scanf(%d,&n); sum=fun(d,n); printf(sum=%ldn,sum); TestFunc();long int fun(int d,int n) /*Begin*/ /* End */void TestFunc() FILE *IN,*OUT; i
14、nt n; int i2; long 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(n=0;n2;n+) fscanf(IN,%d,&in); o = fun(i0,i1); fprintf(OUT,%ldn,o); fclose(IN); fclose(OUT);六、程序填空1、/*-【程序填空】-功能:函数fun的功能是:有NN矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元
15、素中,右上三角元素置为0。请用下标法访问数组元素。例如:若N=3,有下列矩阵: 1 2 3 4 5 6 7 8 9 计算结果为 1 0 0 6 5 0 10 14 9注意:请在下划线处填入正确的内容并把下划线删除。不得增行或删行,也不得更改程序的结构!-*/#include #define N 3void fun(int (*t)N) int i,j; for(i=1;iN;i+) /*FILL*/ for(j=0;_;j+) /*FILL*/ _=tij+tji; /*FILL*/ _=0; main() int tN=1,2,3,4,5,6,7,8,9,i,j; printf(nThe o
16、riginal array:n); for(i=0;iN;i+) for(j=0;jN;j+) printf(%2d ,tij); printf(n); fun(t); printf(nThe result is:n); for(i=0;iN;i+) for(j=0;jN;j+) printf(%2d ,tij); printf(n); 2、/*-【程序填空】-功能:根据整型参数m,计算如下公式的值y=1/(100100)+1/(200200)+1/(300300)+1/(mm)例如:若m=2000,则应输出0.000160。注意:请在下划线处填入正确的内容并把下划线删除。不得增行或删行,也不得更改程序的结构!-*/#include /*FILL*/_ fun(int m) double y=0,d; int i; /*FILL*/ for(i=100;_;i+=100) d=(double)i*(double)i; /*FILL*/ y+=1/_; return(y);main() int n=2000; printf(nThe result is %lfn,fun(n);