C语言复习题Word格式.docx
- 文档编号:19223624
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:29
- 大小:51.13KB
C语言复习题Word格式.docx
《C语言复习题Word格式.docx》由会员分享,可在线阅读,更多相关《C语言复习题Word格式.docx(29页珍藏版)》请在冰豆网上搜索。
5
8
7
4
3
9
1
2
6
#definen10
{inta[n],i,j,t;
for(i=0;
i<
n;
i++)scanf(“%d”,&
a[i]);
i++)
for(j=i+1;
j<
n;
j++)
if(a[i]>
a[j]){t=a[i];
a[i]=a[j];
a[j]=t;
for(j=0;
j++)printf(“%3d”,a[i]);
也可以在每次选择中先找最小值所在的位置,最后再换位。
{inta[10],i,j,t,k;
for(i=0;
10;
9;
{k=i;
for(j=i+1;
j++)if(a[j]<
a[k])k=j;
t=a[i];
a[i]=a[k];
a[k]=t;
起泡法基本思想:
首先将所有数中的最大值“冒泡”到最后位置,再将剩下的数中的最大值“冒泡”到上一位置,┈┈,依次类推,共进行9次“冒泡”。
每次“冒泡”都是一种翻滚过程,即相邻两个数进行比较换位。
假定j为“冒泡”次数,则有:
{inta[10],i,j,t;
for(j=1;
=9;
10-j;
i++)
if(a[i]<
a[i+1]){t=a[i];
a[i]=a[i+1];
a[i+1]=t;
要特别注意两个循环的范围。
13.迭代法
例:
求方程2x3+3x2-4x+1=0的根。
简单迭代法基本思想:
将原方程f(x)化为:
x2=g(x1)
x2=(2x13+3x12+1)/4迭代公式
迭代过程:
假定一个x1
x1=x2
x2=g(x1)
不成立
成立
输出x2
{floatx1,x2;
scanf(“%f”,&
x1);
while
(1)
{x2=(2*x1*x1*x1+3*x1*x1+1)/4;
if(fabs(x2-x1)<
1e-6)break;
?
printf(“\n%f”,x2);
牛顿迭代法基本思想:
y
f(x1)
f(x2)
x
x2
x1
f′(x1)=f(x1)/(x1-x2)
x2=x1-f(x1)/f′(x1)牛顿迭代公式
{floatx1,x2,f1,f;
{f=2*x1*x1*x1+3*x1*x1-4*x1+1
f1=6*x1*x1+6*x1-4;
x2=x1-f/f1;
x1=x2;
祝大家取得好成绩!
2006下考试题目
一、单项选择题(每题2分,共32分)
1、
(1)是合法的用户自定义标识符。
A)file_bakB)abc(10)C)continueD)class+3
2.若有定义:
inta=10;
floatx=2.8,y=8.6;
则表达式:
x+a%3*(int)(y-x)%2/4的值是
(2)。
A)2.500000B)2.800000C)3.050000D)0.000000
3.设intx=8,y,z;
执行y=z=x++;
x=y==z后,变量x的值是(3)。
A)0B)1C)8D)9
4.以下叙述中错误的是(4)。
A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B)数组名代表的是数组所占存储区的首地址,其值不可改变
C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D)可以通过赋初值的方式确定数组元素的个数
5.已有定义:
chara[]="
xyz"
b[]={'
x'
'
y'
z'
};
以下叙述中正确的是(5)。
A)数组a和b的长度相同
B)a数组长度小于b数组长度
C)a数组长度大于b数组长度
D)上述说法都不对
6、表达变量a中个位、十位、百位数字满足降序关系的正确表达式是(6)。
A)a%10>
a/10%10>
a/100%10
B)a%10>
a/10%10&
&
C)a%10>
a%100&
a%100>
a%1000
D)a%10>
a%10/10&
a%10/10>
a%100/10
7、以下函数是计算多项式(7)的值。
floatf(intn)
{floati,t=2,s=t;
for(i=2;
=n;
i++){t=t*(2*i-1)*(2*i);
s+=t;
returns;
A)1+3+5…B)2+4+6…C)1!
+2!
+3!
…D)2!
+4!
+6!
…
8、有以下程序
{inti=1,j=2,k=3;
if(i++==1&
(++j==3||k++==3))
printf("
%d%d%d"
i,j,k);
程序运行后的输出结果是(8)。
A)123
B)234
C)223
D)233
9、以下程序中,不正确的赋值语句是(9)。
structstudent
{intnum;
charname[20];
floatscore;
};
main()
{structstudentst,*p;
p=&
st;
A)st.num=1001;
B)p->
num=2001;
C)st.name=”Zhang”;
D)p->
score=80;
10、以下求矩阵a中主对角元素之和的各程序段中,不正确的是(10)。
A)inta[3][3]={1,2,3,4,5,6,7,8,9},s=0,*p=a;
for(p=a;
p<
a+3;
p+=3)s+=*p++;
B)inta[3][3]={1,2,3,4,5,6,7,8,9},s=0,i;
for(i=0;
i<
3;
i++)s+=a[i][i];
C)inta[3][3]={1,2,3,4,5,6,7,8,9},s=0,*p=a,i;
i++)s+=p[i][i];
D)inta[3][3]={1,2,3,4,5,6,7,8,9},s=0,*p=a;
p+=4)s+=*p;
11、以下程序中,不合法的函数调用语句是(11)。
voidfun(floatx[]){……}
{floata[9],b[4][5];
A)f(a+5);
B)f(b);
C)f(a[4]);
D)f(b[2]);
12、设有程序段
t=0;
while(printf(“*”)){t++;
if(t<
3)break;
下面描述正确的是(12)。
A)其中循环控制表达式与0等价B)其中循环控制表达式与‘0’等价
C)其中循环控制表达式是不合法的D)以上说法都不对
13、以下各循环语句中,不是无限循环的是(13)。
A)for(j=5;
j--<
5;
)j=4;
B)for(j=0;
j>
=0<
j++);
C)for(j=1,k=10;
j-k;
j++,k--);
D)for(j=1;
j=10;
j++)s+=j;
14、对于以下求最大值最小值的函数,可以代替第三行的语句有(14)。
voidmax_min(int*a,intn,int*max,int*min)
{int*i;
*max=a[0];
*min=a[0];
for(i=a;
a+n;
{if(*i>
*max)*max=*i;
if(*i<
*min)*min=*i;
A)*max=0;
*min=0;
B)*max=-32768;
*min=32767;
C)*max=a[n];
*min=a[n];
D)*max=32767;
*min=-32768;
15、以下程序的功能是(15)。
{inta[10]={3,5,2,9,1,8,0,2,4,6},i,p=0,q=0;
{if(a[i]>
p)p=a[i];
if(a[i]<
a[q])q=i;
\n%d,%d"
p,q);
A)求最大值和最小值
B)求最大值的位置和最小值的位置
C)求最大值的位置和最小值
D)求最小值的位置和最大值
16、判断字符串a和b是否相等,应当使用(16)。
A)if(a==b)B)if(a=b)
C)if(strcpy(a,b))D)if(strcmp(a,b))
二、程序阅读题(18,21,25,29每题2分,其他每题3分,共38分)
17、下面程序的运行结果是(17)。
voidf(int*x,int*y)
{intt;
t=*x;
*x=*y;
*y=t;
{inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;
p=a;
q=&
a[7];
while(p<
q)
{
f(p,q);
p++;
q--;
8;
%d,"
a[i]);
A)8,2,3,4,5,6,7,1,
B)5,6,7,8,1,2,3,4,
C)1,2,3,4,5,6,7,8,
D)8,7,6,5,4,3,2,1,
18、以下程序的运行结果是(18)。
intfunc(inta,intb)
{staticintm=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
{intk=4,m=1,p;
p=func(k,m);
printf(“%d,”,p);
p=func(k,m);
printf(“%d\n”,p);
A)8,17B)8,16C)8,20D)8,8
19、下面程序的运行结果是(19)。
main()
{inta,b;
for(a=1,b=1;
a<
=100;
a++)
{if(b>
=20)break;
if(b%3==1){b+=3;
continue;
b-=5;
printf(“%d\n”,a);
}
A)7B)8C)9D)10
20、以下程序的运行结果是(20)。
{inta[10]={8,6,4,0,9,1,2,5,7,3},t,*k=a,*p,*q;
for(p=a;
p<
a+10;
p++)if(*p<
*k)k=p;
for(p=k,q=k;
p>
=a&
q<
p--,q++){t=*p;
*p=*q;
*q=t;
p++)printf(“%d”,*p);
A)3752190468B)7521904683C)2190468573D)8640912573
21.以下程序的运行结果是(21).
voidsort(int*a,intn)main()
{int*i,*j,t;
{inti,a[10]={5,3,8,6,0,1,4,7,9,2}
for(i=a;
a+n-1;
i++)sort(a,5);
for(j=i+1;
j<
j++)sort(a+5,5);
if(*i>
*j){t=*i;
*i=*j;
*j=t;
}for(i=0;
i++)printf(“%d”,a[i]);
}
A)0123456789B)9876543210C)0356812479D)8653097421
22、以下程序的运行结果是(22)。
{intj,k,s1=0,s2=0,a[3][3]={1,2,3,4,5,6,7,8,9};
for(k=j+1;
k<
k++){s1+=a[j][k];
s2+=a[k][j];
printf(“\n%d,%d”,s1,s2);
A)26,34B)34,26C)19,11D)11,19
23、以下程序的运行结果是(23)。
{inti;
chara[]="
ab12"
for(i=0;
a[i];
switch(a[i])
{case1:
printf("
%d"
a[i]);
break;
case2:
default:
if(a[i]>
='
a'
&
a[i]<
)putchar(a[i]);
elseprintf("
a[i]+1);
A)ab23B)ab12C)ab4950D)ab5051
24、以下程序的运行结果是(24)。
{inta[10]={3,2,5,4,6,7,9,12,8,10},i,p=0,q=0;
i++)
{if(a[i]>
if(a[i]<
q)q=a[i];
printf(“\n%d,%d”,p,q);
}
A)0,0B)12,0C)12,2D)2,12
25、以下程序的运行结果是(25)。
#defineFx+y
main()
{intx=4,y=5,z;
if(x++<
y)z=2*F;
elsez=F/2;
printf(“\n%d”,z);
A)5B)7C)15D)20
26.以下程序的运行结果是(26)。
{chara[]=”abcXYZ789”;
intj,k=0;
for(j=0;
a[j];
j++)if(a[j]>
a[k])k=j;
j=a[0];
a[0]=a[k];
a[k]=j;
printf(“%s”,a);
A)ZbcXYa789B)cbaXYZ789C)7bcXYZa89D)9bcXYZ78a
27.以下程序的运行结果是(27)。
#include<
stdio.h>
{staticchara[]=“Language”,b[]=“programe”;
char*p1,*p2;
intk;
p1=a;
p2=b;
for(k=0;
=7;
k++)
if(*(p1+k)==*(p2+k))printf(“%c”,*(p1+k));
28.以下程序的运行结果是(28)。
{intn=12345,j,n1=0,n2=0;
while(n/=10)
{
j=n%10;
if(j%2)n1+=j;
elsen2+=j;
printf("
n1,n2);
A)gaeB)gaC)LanguageD)有语法错
A.9,6B.6,4C.6,9D.4,6
29.若运行以下程序时,从键盘输入abcd<
CR>
(<
表示回车),
则输出结果是(29)。
#include“stdio.h”
{intc;
while((c=getchar())!
=’\n’)
switch(c-‘a’)
{case0:
case1:
putchar(c+4);
case2:
case3:
putchar(c+3);
default:
putchar(c+2);
File1.txt内容:
Zhao87
Qian75
Sun90
Li93
Zhou70
A.fggB.effgg
C.eeffggfD.eeffgg
30.以下程序的运行结果是(30)。
#definePRT“\n%s%d%s%d”
structstudent{charname[10];
intscore;
{inti;
structstudentst,stmax,stmin;
FILE*fp;
fp=fopen(“file1.txt”,”r”);
stmax.score=0;
stmin.score=100;
for(i=1;
i<
=3;
i++)
{fscanf(fp,”%s%d”,st.name,&
st.score);
if(st.score>
stmax.score)stmax=st;
while(!
feof(fp))
if(st.score<
stmin.score)stmin=st;
fclose(fp);
printf(PRT,stmax.name,stmax.score,stmin.name,stmin.score);
A.Li93zhou75B.Sun90Zhou70C.Qian75Li93D.Zhao87Zhou70
三、程序填充题:
选择适当的内容填在以下各程序的下划线处,使程序完整。
(每空3分,共30分)
●下面程序的功能是求100至1000之间有多少个数其各位数字之和是5。
{inti,s,k,count=0;
for(i=100;
=1000;
{s=0;
k=i;
while((31)){s+=k%10;
k=(32);
if(s==5)(33);
}printf(“\n%d”,count);
(31)A)1B)kC)k>
1D)k>
10
(32)A)k/10B)k%10C)k-k%10D)k-k/10
(33)A)continueB)breakC)count++D)printf(“%d”,count)
●下面程序的功能是在字符串str中找出最大的字符并放在第一个位置上,并将该字符前的原字符往后顺序移动,如chyab变成ychab。
{charstr[80],*p,max,*q;
q=p=str;
gets(p);
max=*p++;
while(*p)
{if(max<
*p){max=*p;
(34);
p++;
while((35)){*q=*(q-1);
(36);
*q=max;
puts(str);
(34)A)p++B)p=qC)q=pD)q++
(35)A)q>
strB)q>
pC)*q>
str[0]D)*q>
*p
(36)A)q++B)str--C)q--D)p--
●以下函数是将数列a中的非素数去掉,只保留素数部分,然后按从大到小顺序重新排列后输出。
voidsort(int*a,intn)
{int*i,*j,t;
for(i=a;
for(j=i+1;
j++)
(38);
intprime(intm
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 复习题