大连理工大学c语言题库共12套Word文档格式.docx
《大连理工大学c语言题库共12套Word文档格式.docx》由会员分享,可在线阅读,更多相关《大连理工大学c语言题库共12套Word文档格式.docx(173页珍藏版)》请在冰豆网上搜索。
A、=
B、+
D、&
&
6.设有如下程序段:
intk=10;
while(k==0)
k--;
则下述说明中正确的是().
A、循环体一次也不执行
B、循环体执行一次
C、死循环
D、循环体执行10次
7.从循环体内某一层跳出,继续执行循环外的语句是()。
A、continue语句
B、空语句
C、break语句
D、return语句
8.以下对一维整型数组a的正确说明是()。
A、inta(10);
B、intn;
scanf("
%d"
&
n);
inta[n];
C、intn=10,a[n];
D、#defineSIZE10
(换行)
inta[SIZE];
9.以下定义语句中,错误的是()。
A、intn=5,a[n];
B、inta[]={1,2};
C、chars[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
C、#if
(M>
1)
D、while
15.下面判断正确的是()。
A、charc[4]="
abc"
d[4]="
等价于charc[4]=d[4]="
B、charstr[10]={"
china"
等价于charstr[10];
str[]={"
C、char*a="
等价于char*a;
*a="
D、char*s="
等价于char*s;
s="
16.若有以下结构体定义:
structexample
{intx;
inty;
}v2;
则()是正确的引用或定义.
A、example.x=10;
B、structv2;
v2.x=10;
C、examplev2;
D、structexamplev2={10,3};
17.若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数
feof(fp)的值为()。
A、-1
B、1
C、一个非0值
D、0
DDACAACDACCDCDDDD
二、判断
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;
elsey=-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.若定义intarray[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在内存所占字节数是_____。
unionstud{shortintnum;
charname[10];
floatscore[5];
doubleave;
}c;
8.在C语言中,关闭文件即是文件指针不再指向该_____.
0
-1
0
1
指针或地址
函数体
20
文件
四、程序设计
1./*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
计算并输出给定整数n的所有因子之和(不包括1与
自身)。
注意:
n的值不大于1000。
例如:
n的值为855时,应输出704。
------------------------------------------------*/
#include"
stdio.h"
intfun(intn)
/*********Begin**********/
/**********
End
**********/
voidTestFunc()
FILE*IN,*OUT;
intiIN,iOUT,i;
IN=fopen("
in.dat"
r"
);
if(IN==NULL)
{
printf("
PleaseVerifyTheCurrerntDir..ItMayBeChanged"
}
OUT=fopen("
out.dat"
w"
if(OUT==NULL)
PleaseVerifyTheCurrentDir..ItMayBeChanged"
for(i=0;
i<
5;
i++)
fscanf(IN,"
iIN);
iOUT=fun(iIN);
fprintf(OUT,"
%d\n"
iOUT);
fclose(IN);
fclose(OUT);
s=%d\n"
fun(855));
TestFunc();
【参考代码】
ints=0,i;
for(i=2;
n;
if(n%i==0)s=s+i;
returns;
===============
2./*------------------------------------------------------
--------------------------------------------------------
删去一维数组中所有重复的数,只保留不同的数。
数组中的数已按由小到大的顺序排列,
函数返回删除后数组中数据的个数。
一维数组中的数据是:
2223445666677899101010。
删除后,数组中的内容应该是:
2345678910。
请勿改动主函数main和其它函数中的任何内容。
------------------------------------------------------*/
#defineN80
intfun(inta[],intn)
voidTestFunc();
inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;
Theoriginaldata:
\n"
i++)printf("
%3d"
a[i]);
n=fun(a,n);
\n\nThedataafterdeleted:
\n\n"
inta[N];
intn;
inti;
ReadFileError"
WriteFileError"
i++)fscanf(IN,"
a[i]);
i++)fprintf(OUT,"
inti,j=1,k=a[0];
for(i=1;
if(k!
=a[i])
a[j++]=a[i];
k=a[i];
a[j]=0;
returnj;
五、程序改错
1./*------------------------------------------------------
【程序改错】
函数fun的功能是:
求1到20的阶乘的和。
--------------------------------------*/
main()
intn,j;
floats=0.0,t=1.0;
for(n=1;
n<
=20;
n++)
{
/**********ERROR**********/
s=1;
for(j=1;
j<
=n;
j++)
t=t*n;
s+t=s;
printf("
jiecheng=%f\n"
s);
【改错1】
【学生答案】
s=1;
【参考答案】
t=1;
t=1.0;
============================================================
【改错2】
t=t*n;
t=t*j;
t*=j;
t=j*t;
【改错3】
s+t=s;
s=s+t;
s+=t;
s=t+s;
2./*------------------------------------------------------
实现两个字符串的连接。
输入dfdfqe和12345时,则输出dfdfqe12345.
#include"
chars1[80],s2[80];
voidscat(chars1[],chars2[]);
gets(s1);
gets(s2);
scat(s1,s2);
puts(s1);
voidscat(chars1[],chars2[])
inti=0,j=0;
/**********ERROR**********/
while(s1[i]=='
\0'
)i++;
while(s2[j]=='
)
s2[j]=s1[i];
i++;
j++;
s2[j]='
while(s1[i]=='
while(s1[i]!
='
)i++;
while(s1[i])i++;
=NULL)i++;
=0)i++;
while(s2[j]=='
while(s2[j]!
while(s2[j])
=NULL)
=0)
s2[j]=s1[i];
s1[i]=s2[j];
【改错4】
s2[j]='
s1[i]='
s1[i]=NULL;
*(s1+i)='
s1[i]=0;
六、程序填空
1./*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
打印以下图形。
*****
*****
-------------------------------------------------------*/
main()
chara[5][9]={"
"
inti,j;
for(i=0;
/***********FILL***********/
for(j=i;
_____;
a[i][j]='
*'
for(_____;
for(j=0;
9;
%c"
_____);
【空1】
for(j=i;
i+5
i+5>
j
=i+4
i+4>
5+i
【空2】
for(_____;
i=0
【空3】
a[i][j]
【空4】
_____;
/*-------------------------------------------------------
【程序填空】
计算n门课程的平均分。
若有5门课程的成绩是:
90.5,72,80,61.5,55
则函数的值为:
71.80。
#include<
stdio.h>
floatfun(float*a,intn)
floatave=0.0;
/***********FILL***********/
for(i=0;
________;
ave=ave+a[i];
ave=ave/n;
_________;
intmain()
floatscore[30]={90.5,72,80,61.5,55},aver;
aver=fun(_______,5);
printf("
\nAveragescoreis:
%5.2f\n"
aver);
return0;
n
n>
i
returnave;
aver=fun(_______,5);
score
【第四套】
一单选
1sizeof(float)是()。
A、一个浮点表达式
B、一个不合法的表达式
C、运算结果是一个整型表达式。