大连理工大学c语言上机模拟题1.docx
《大连理工大学c语言上机模拟题1.docx》由会员分享,可在线阅读,更多相关《大连理工大学c语言上机模拟题1.docx(19页珍藏版)》请在冰豆网上搜索。
![大连理工大学c语言上机模拟题1.docx](https://file1.bdocx.com/fileroot1/2023-6/4/ae24d97b-e16a-43b1-8d23-e7dc6932b68e/ae24d97b-e16a-43b1-8d23-e7dc6932b68e1.gif)
大连理工大学c语言上机模拟题1
A1.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用
八进制表示的字符常量'\101'是()。
A、字符A
B、字符a
C、字符e
D、非法的常量
C2.下列程序段的输出结果为()。
floatk=0.8567;printf("%4.1f%%",k*100);
A、85.6%
B、85.6%%
C、85.7%
D、.857
A3.下面的scanf函数输入数据,使得a=10,b=15,s1='S',s2='s',x1=1.5,x2=-3.75,x3=67.8,
正确的键盘输入方法是().
(用"[CR]"表示回车,U表示空格)
main()
{inta,b;
floatx1,x2,x3;
chars1,s2;
scanf("%5d%5d%c%c%f%f%*f%f",&a,&b,&s1,&s2,&x1,&x2,&x3);
}
A、10UUU15Ss1.5U-3.75U+1.5U67.8[CR]
B、10UUU15USUs1.5U-3.75U+1.5U67.8[CR]
C、10UUU15USUsU1.5U-3.75U+1.5U67.8[CR]
D、10UUU15Ss1.5U-3.75U+1.5,67.8[CR]
A4.C语言的if语句中,用作判断的表达式为()。
A、任意表达式
B、算术表达式
C、逻辑表达式
D、关系表达式
A5以下程序的输出结果是:
()
main()
{intm=5;
if(m++>5)printf("%d\n",m);
elseprintf("%d\n",m--);
}
A、6
B、5
C、7
D、4
C6以下for循环的执行次数是for(x=0,y=0;(y=123)&&(x<4);x++);()。
A、3次
B、循环次数不定
C、4次
D、是无限循环
B7.以下程序的执行结果是()。
main()
{intnum=0;
while(num<=2){num++;printf("%d,",num);}}
A、0,1,2
B、1,2,3,
C、1,2,3,4,
D、1,2,
A8.以下不能正确进行字符串赋初值的语句是()。
A、charstr[5]="good!
";
B、charstr[5]={'g','o','o','d'};
C、char*str="good!
";
D、charstr[]="good!
";
D9.函数调用:
strcat(strcpy(str1,str2),str3)的功能是()。
A、将串str1复制到串str2中后再连接到串str3之后
B、将串str2连接到串str1之后再将串str1复制到串str3中
C、将串str1连接到串str2之后再复制到串str3之后
D、将串str2复制到串str1中后再将串str3连接到串str1之后
C10.以下函数的类型是()。
fff(floatx)
{
return5;
}
A、void类型
B、与参数x的类型相同
C、int类型
D、无法确定
A11.设有如下函数
fac(intx)
{
floaty=1.0;
return(x*y);
}
则函数的类型为().
A、int型
B、float型
C、无法确定
D、void型
B12.设有宏定义#definePI3.14和#defineS(r)PI*r*r,则S
(2)的值为().
A、6.28
B、12.56
C、3.14
D、9.42
A13.下列关于指针定义的描述,错误的是()。
A、指针是一种变量,该变量用来存放某个变量的值
B、指针是一种变量,该变量用来存放某个变量的地址值
C、指针变量的类型与它所指向的变量类型一致
D、指针变量的命名规则与标识符相同
A14.以下程序的输出结果是().
main()
{charstr[]="ABCD",*p=str;printf("%d\n",*(p+3));}
A、68
B、不确定的值
C、字符D的地址
D、0
B15.对结构体类型的变量的成员的访问,无论成员是何种数据类型都可使用
的运算符是()。
A、&
B、.
C、*
D、->
N1.在C语言中,各种类型的整型数据在内存中都占2个字节。
N2.若有inti=10,j=2;则执行完i*=j+8;后ⅰ的值为28。
N3.格式字符%g选用%e或%f格式中输出宽度较长的一种格式输出实数.
N4.C语言程序中输入一个中间带有空格的字符串时,可以用scanf函数.
N5.设d=1,e=2,f=3,则逻辑表达式!
(d+e)+f&&e+f*2的值为0.
Y6.已知a=4,b=2,c=3,d=5,表达式a>b?
a:
cc:
d的值为4.
Y7.语句if(a>b)printf("%d",a);elseprintf("%d",b);可以用语句printf("%d",a>b?
a:
b);取代.
Y8.在do-while循环中,任何情况下都不能省略while.
N9.break语句能够终止当前进行的多层循环.
Y10.continue语句对于while和do-while循环来说,意味着转去计算While表达式.
N11.对静态变量的初始化不是在编译阶段完成的.
N12.gets函数是用来输入一个字符的函数.
N13.设有数组定义:
chararray[]="hello";则数组array所占的内存空间为5字节.
Y14.当全局变量与局部变量同名时,在局部变量的作用域范围之内,局部变量起作用.
N15.C语言中,通过函数调用只能获得一个返回值.
N16.数组名作为函数调用时的实参,实际上传递给形参的是数组第一个元素的值.
Y17.被包含文件与其所在的文件(即用#include命令的源文件),在预编译后,成为同一个文件.
Y18.如果需要向函数内传递多个值,用数组和用指针效果是一样的.
Y19.两个类型相同的结构体变量,可以互相赋值.
N20.C语言中,在打开文件时,必须说明文件的使用方式,"wb+"只能用于文件的写.
1.intx;x=-3+4%-5*3,则x的值为_____.9
2.下列语句输出的结果是_____.-1
unsignedintb=65535;printf("%d",b);
3.x=5,y=8时,c语言表达式5-2>=x-1<=y-2的值是_____1
4.设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是_____.
for(x=0,y=0;y!
=123&&x<3;x++)
scanf("%d",&y);3
5.连接字符串的函数是_____,只写函数名即可.Strcat
6.从函数的形式上看,函数分为无参函数和_____两种类型.有参函数
7.定义int*p,a[5];将数组a的首地址赋给指针变量p的语句是_____.
p=a
p=&a[0]
p=a;
p=&a[0];
8.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是_____。
structstud{charname[10];floats[4];doubleave;}a,*p;34
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
编写函数fun(str,i,n),从字符串str中删除第i个
字符开始的连续n个字符(注意:
str[0]代表字符串
的第一个字符)。
------------------------------------------------*/
#include"stdio.h"
#include"string.h"
main()
{
charstr[81];
inti,n;
voidfun(charstr[],inti,intn);
voidTestFunc();
printf("请输入字符串str的值:
\n");
scanf("%s",str);
printf("你输入的字符串str是:
%s\n",str);
printf("请输入删除位置i和待删字符个数n的值:
\n");
scanf("%d%d",&i,&n);
while(i+n-1>strlen(str))
{
printf("删除位置i和待删字符个数n的值错!
请重新输入i和n的值\n");
scanf("%d%d",&i,&n);
}
fun(str,i,n);
printf("删除后的字符串str是:
%s\n",str);
TestFunc();
}
voidfun(charstr[],inti,intn)
{
/*********Begin**********/
while(str[i+n-1])
{
str[i-1]=str[i+n-1];
i++;
}
str[i-1]='\0';
2
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
请编一个函数voidfun(inttt[M][N],intpp[N]),
tt指向一个M行N列的二维数组,求出二维数组每列
中最小元素,并依次放入pp所指一维数组中。
二维
数组中的数已在主函数中赋予。
------------------------------------------------*/
#include"conio.h"
#include"stdio.h"
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
{
/*********Begin**********/
/**********End**********/
}
main()
{
intt[M][N]={{22,45,56,30},{19,33,45,38},{20,22,66,40}};
voidNONO();
intp[N],i,j,k;
printf("Theoriginaldatais:
\n");
for(i=0;i{
for(j=0;jprintf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\nTheresultis:
\n");
for(k=0;kprintf("\n");
NONO();
}
voidNONO()
{
inti,j,array[3][4],p[4];
FILE*rf,*wf;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
fscanf(rf,"%d",&array[i][j]);
fun(array,p);
for(j=0;j<4;j++)
{
fprintf(wf,"%7d",p[j]);
fprintf(wf,"\n");
}
fclose(rf);
fclose(wf);
}
inti,j;
for(j=0;j{
pp[j]=tt[0][j];
for(i=1;iif(tt[i][j]pp[j]=tt[i][j];
}
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
求1到20的阶乘的和。
------------------------------------------------------*/
#include"stdio.h"
voidfun()
{
intn,j;
floats=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;
}
/**********ERROR**********/
printf("jiecheng=%d\n",s);
}
main()
{
fun();
}
【参考答案】
t=1;
t=1.0;
#include"string.h"
#include"conio.h"
intfun(char*str,char*substr)
{
/**********ERROR**********/
inti,n=0
/**********ERROR**********/
for(i=0;i<=strlen(str);i++)
if((str[i]==substr[0])&&(str[i+1]==substr[1])&&(str[i+2]==substr[2]))
/**********ERROR**********/
++i;
returnn;
}
main()
{
charstr[81],substr[4];
intn;
printf("输入主字符串:
");
gets(str);
printf("输入子字符串:
");
gets(substr);
puts(str);
puts(substr);
n=fun(str,substr);
printf("n=%d\n",n);
}
【参考答案】
inti,n=0;
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
计算平均成绩并统计90分以上的人数,输入的成绩为负时程序结束。
-------------------------------------------------------*/
#include"stdio.h"
main()
{
intn,m;floatgrade,average;
/***********FILL***********/
average=n=m=_____;
while
(1)
{
/***********FILL***********/
scanf("%f",&grade);
if(_______)break;
n++;
average+=grade;
/***********FILL***********/
if(grade<90)_____;
m++;
}
if(n)printf("%f\n%d\n",average/n,m);
}
【空1】正确
【学生答案】
average=n=m=0;
【参考答案】
0
============================================================
【空2】错误
【学生答案】
scanf("%f",&grade);
【参考答案】
grade<0
0>grade
============================================================
【空3】错误
【学生答案】
if(grade<90)return;
【参考答案】
continue
============================================================
/***********FILL***********/
intmax_value(intm,intn,int______)
{
inti,j,max;
max=array[0][0];
for(i=0;ifor(j=0;j/***********FILL***********/
if(maxreturn(max);
}
main()
{
inta[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};
/***********FILL***********/
printf("maxvalueis%d\n",_____);
}
【空1】错误
【学生答案】
intmax_value(intm,intn,int______)
【参考答案】
array[][4]
array[3][4]
============================================================
【空2】错误
【学生答案】
if(max【参考答案】
max=array[i][j]
============================================================
【空3】错误
【学生答案】
printf("maxvalueis%d\n",_____);
【参考答案】
max_value(3,4,a)
============================================================
【改错1】错误
【学生答案】
for(j=1;j<=n;j++)
【参考答案】
t=1;
t=1.0;
============================================================
【改错2】正确
【学生答案】
t=t*j;
【参考答案】
t=t*j;
============================================================
【改错3】正确
【学生答案】
s=t+s;
【参考答案】
s=s+t;
s+=t;
s=t+s;
============================================================
【改错4】错误
【学生答案】
printf("jiecheng=%d\n",s);
【参考答案】
printf("jiecheng=%f\n",s);
============================================================
【改错1】错误
【学生答案】
inti,n=0
【参考答案】
inti,n=0;
============================================================
【改错2】错误
【学生答案】
for(i=0;i<=strlen(str);i++)
【参考答案】
for(i=0;i<=strlen(str)-3;i++)
for(i=0;i
============================================================
【改错3】错误
【学生答案】
++i;
【参考答案】
n++;
n+=1;
n=n+1;
++n;
============================================================