提高练习1Word格式.docx
- 文档编号:19449065
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:13
- 大小:22KB
提高练习1Word格式.docx
《提高练习1Word格式.docx》由会员分享,可在线阅读,更多相关《提高练习1Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
25.若有如下声明和语句:
intt[3][3],*pt[3],k;
for(k=0;
k<
3;
k++)pt[k]=&
t[k][0];
则表达式*(*(pt+1)+2)所引用的是(25)。
A.t[2][0]B.&
t[2][0]C.t[1][2]D.&
t[1][2]
26.设有声明floata=1.23456;
inti;
,欲将a中的数值保留小数点后两位,第三位进行四舍五入运算,能实现该功能的表达式是(26)。
A.i=a*100+0.5,a=i/100.0B.a=(a*100+0.5)/100.0
C.a=((int)a*100+0.5)/100.0;
D.a=(a/100+0.5)/100.0
27.设有如下程序:
#include<
stdio.h>
main()
{chars[128]={‘\0’},*p=s;
while(strcmp(s,"
END"
))
{gets(s);
while(*p)putchar(*p++);
}
以下关于该程序运行时输出结果的叙述中,正确的是(27)。
A.所有输入的字符串都能被完整输出
B.所有输入的字符串都不能被完整输出
C.只能完整输出第一个字符串
D.只能完整输出最后一个字符串
28.若已定义一个有返回值的函数,则以下关于调用该函数的叙述中错误的是(28)。
A.函数调用可以作为独立的语句存在
B.函数调用可以出现在表达式中
C.函数调用可以作为一个函数实参
D.函数调用可以作为一个函数形参
29.对应main函数中的fun函数调用语句,以下给出的四个fun函数首部中,错误的是(29)。
{inta[50],n;
fun(n,&
a[9]);
A.voidfun(intm,intx[])B.voidfun(ints,inth[41])
C.voidfun(intp,int*s)D.voidfun(intn,inta)
30.以下所列对结构类型变量tdl的声明中,错误的是(30)。
A.typedefstructaaB.#defineAAstructaa
{intn;
floatm;
}AA;
AA{intn;
}tdl;
AAtdl;
C.structD.struct
}aa;
{intn;
structaatdl;
二、填空题
●基本概念
1.执行以下程序段后,number的值是
(1)。
charstr[]=“Hello!
”;
intnumber;
number=sizeof(str);
2.case和default只能在
(2)语句中出现。
3.若有说明inta[][4]={1,2,3,4,5,6,7,8,9};
,则数组a第一维的大小是(3)。
4.设有如下声明和语句:
inta=2,b,c=5;
scanf("
%d"
&
b);
b=c--||scanf("
c)&
&
a++;
该程序段执行时,若从键盘输入的数据是4┗┛3(┗┛代表空格键),则变量c的值为(4)。
5.在用fopen函数打开一个已经存在的数据文件abc时,若要求既可以读出abc文件中原来的内容,也可以用新的数据覆盖文件原来的数据,则打开模式应当是(5)。
●阅读程序
6.以下程序运行时,输出结果是(6)。
#include<
string.h>
main()
{chararr[2][4];
strcpy(arr[0],"
you"
);
strcpy(arr[1],"
me"
arr[0][3]='
'
printf("
%s\n"
arr[0]);
7.以下程序运行时,输出结果是(7)。
{ints,i,sum(int);
for(i=1;
i<
=5;
i++)
s=sum(i);
%d\n"
s);
sum(intk)
{staticintx=0;
returnx+=k;
8.以下程序运行时,输出结果为(8)。
{printf("
f(21,35));
intf(inta,intb)
{if(a==b)returna;
else
if(a>
b)returnf(a-b,b);
elsereturnf(a,b-a);
9.以下程序运行时,输出结果的第一行是(9),第二行是(10)。
intt(intx,inty,int*cp,int*dp)
{x=x*x;
y=y*y;
*cp=x+y;
*dp=x-y;
{inta=4,b=3,c=5,d=6;
t(a,b,&
c,&
d);
%d,%d\n%d,%d"
a,b,c,d);
10.以下程序运行时,输出结果的第一行是(11),第二行是(12)。
voidchange(intx,intm)
{charch[]={'
'
1'
'
2'
3'
4'
6'
7'
8'
9'
},b[80];
inti=0,r;
while(x)
{r=x%m;
x/=m;
b[i++]=ch[r];
for(--i;
i>
=0;
i--)
%c"
b[i]);
{inta,b;
change(10,2);
\n"
change(10,8);
11.以下程序执行时,输出结果的第一行是(13),第二行是(14),第三行是(15)。
#defineN20
{inti,j,k,n,arr[N][N];
k=1,i=0;
n=3;
while(i<
n/2)
{for(j=i;
j<
n-i;
j++)
arr[j][n-i-1]=k++;
for(j=n-i-2;
j>
=i;
j--)
arr[n-i-1][j]=k++;
arr[j][i]=k++;
for(j=i+1;
=n-i-2;
arr[i][j]=k++;
i++;
if(n%2)arr[i][i]=k;
for(i=0;
n;
i++)
{for(j=0;
j++)printf("
%4d"
arr[i][j]);
12.以下程序运行时,输出结果的第一行是(16),第二行是(17),第三行是(18)。
stdlib.h>
structnode
{charinfo[5];
structnode*link;
};
{structnode*create(char*);
voidprint(structnode*);
structnode*head=NULL;
charc[]="
theteacher"
head=create(c);
print(head);
structnode*create(char*s)
{intk;
structnode*h,*p;
h=NULL;
while(*s)
{k=0;
p=(structnode*)malloc(sizeof(structnode));
while(k<
4&
*s)
p->
info[k++]=*s++;
info[k]='
\0'
link=h;
h=p;
returnh;
voidprint(structnode*head)
{structnode*p=head;
while(p!
=NULL)
{puts(p->
info);
p=p->
link;
●完善程序
13.以下程序的功能是:
实现两个复数相加的计算并输出运算结果。
structcomplex
{floatr,i;
};
structcomplex*cal(structcomplex*x1,structcomplex*x2)
{structcomplex*p;
p=((19))malloc(sizeof(structcomplex));
r=(*x1).r+(*x2).r;
i=(*x1).i+(*x2).i;
(20);
{structcomplex*p,x,y;
scanf("
%f%f%f%f"
x.r,&
x.i,&
y.r,&
y.i);
p=cal(&
x,&
y);
result:
%.2f+%.2fi"
(21));
free(p);
14.以下程序中函数floatfun(intn)的功能是:
根据下列公式计算并返回s的值(n≥0)。
floatfun(intn)
{floats=0.0,w,f=-1.0;
inti;
=n;
{f=(22);
w=f/(2*i+1);
(23);
returns;
{intn=5;
floats;
(24);
%f\n"
s);
15.以下程序的功能是:
首先对字符串s1和s2分别按字典序排序,然后将s1和s2有序合并为字符串s3并同时删除s3中重复出现的字符,最后输出字符串s3。
例如,当字符串s1和s2分别是“good”和“morning”时,程序应输出“dgimnor”。
voidmerge(char*x,char*y,char*z)
{chart;
inti=0,j=0,k=-1;
while((25))
{if(x[i]<
y[j])t=x[i++];
elset=y[j++];
while(x[i]==t)i++;
while(y[j]==t)j++;
(26)=t;
while(x[i])
if(x[i]!
=z[k])z[++k]=x[i++];
elsei++;
while(y[j])
if(y[j]!
=z[k])z[++k]=y[j++];
elsej++;
z[++k]=’\0’;
voidsort(chars[])
{inti,j,k,n;
chart;
n=strlen(s);
n-1;
{(27);
if(s[k]>
s[j])k=j;
if(k!
=i)
{t=s[k];
s[k]=s[i];
s[i]=t;
{chars1[100]="
good"
s2[100]="
morning"
s3[200];
sort(s1);
sort(s2);
merge(s1,s2,s3);
puts(s3);
16.以下程序的功能是:
对于一个长度不超过50的字符串S,按输入的命令进行删除、插入字符的操作。
删除和插入命令的格式如下:
1)删除命令格式:
Da(a表示被删除的字符)
命令功能:
从字符串S中删除字符a,若S串中有多个a,只删除第一个。
例如:
S字符串为“Thisisabook.”,执行命令“Ds”后,S字符串变为“Thiisabook.”
2)插入命令格式:
Ia1a2(a1表示定位字符,a2表示要插入的字符)
将字符a2插入到字符串S中最后一个出现的字符a1的前面。
S字符串为“Thisisabook.”,执行命令“Isd”后,S字符串变为“Thisidsabook.”
voiddelete(chars[],charc);
voidinsert(chars[],charc1,charc2);
{chars[50]="
Thisisabook."
op,c1[2],c2[2];
inti,p,k;
printf("
\nInputcommand\n"
scanf("
(28));
switch(op)
{case'
D'
:
%s"
c1);
delete(s,c1[0]);
break;
case'
I'
%s%s"
c1,c2);
insert(s,c1[0],c2[0]);
default:
\nCommandformaterror!
return1;
voiddelete(chars[],charc)
{inti,n=-1;
for(i=0;
s[i]!
='
if(s[i]==c){n=i;
}
if(n==-1)
{printf("
\nThereisno\'
%c\'
inthe\"
%s\"
c,s);
exit
(1);
for(i=n;
s[i]!
i++)
s[i]=(29);
voidinsert(chars[],charc1,charc2)
{inti,n=-1,m;
if(s[i]==c1)n=i;
if(n==-1)
c1,s);
exit(0);
m=strlen(s);
for(i=m;
i>
i--)s[i]=s[i-1];
(30);
提高练习1参考答案
一、选择题
21.B22.C23.B24.D25.C26.A27.C28.D29.D30.C
1.7
2.switch
3.3
4.4
5.r+
6.you&
me
7.15
8.7
9.4,3
10.25,7
11.1010.
12.12
13.781
14.692
15.543
16.her
17.teac
18.the
19.structcomplex*
20.returnp
21p->
r,p->
i
22.–f
23.s+=w;
24.s=fun(n)或s=fun(5)
25.x[i]&
y[j]或x[i]!
=’\0’&
y[j]!
=’\0’
26.z[++k]
27.k=i
28.&
op
29.s[i+1]
30.s[n]=c2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 提高 练习