大学一年级C语言程序设计复习题.docx

上传人:b****5 文档编号:5363911 上传时间:2022-12-15 格式:DOCX 页数:28 大小:54.74KB
下载 相关 举报
大学一年级C语言程序设计复习题.docx_第1页
第1页 / 共28页
大学一年级C语言程序设计复习题.docx_第2页
第2页 / 共28页
大学一年级C语言程序设计复习题.docx_第3页
第3页 / 共28页
大学一年级C语言程序设计复习题.docx_第4页
第4页 / 共28页
大学一年级C语言程序设计复习题.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

大学一年级C语言程序设计复习题.docx

《大学一年级C语言程序设计复习题.docx》由会员分享,可在线阅读,更多相关《大学一年级C语言程序设计复习题.docx(28页珍藏版)》请在冰豆网上搜索。

大学一年级C语言程序设计复习题.docx

大学一年级C语言程序设计复习题

复习题

1.若有定义:

inta=2,b=3;则表达式(float)(a+b)/2+(float)(b/a)的值为______。

A)4.0B)3.0C)3.5D)都不是

2.若希望当A的值为奇数时,表达式的值为“真”,当A的值为偶数时,表达式的值为“假”。

则以下能满足要求的表达式是____。

A)A/2!

=1B)!

(A%2)C)A%2D)A/2==1

3.以下程序在运行时,输入变量a的值为1,变量b的值为2,其结果。

main()

{inta,b,t=0;scanf(“%d%d”,&a,&b);

if(a=2)t=a,a=b,b=t;

printf(“%d,%d\n”,a,b);

}

A)2,0B)2,2C)2,1D)1,2

4.以下程序的运行结果是_______。

main()

{inta=10,y=0;

do{a+=2;y+=a;if(y>50)break;}while(a=14);

printf(“\n%d,%d”,a,y);

}

A)16,60B)18,60C)死循环D)都不是

5.inta=5,b=4,c=3则表达式a>b>c为_______。

(真/假)

6.#definefx+y

x=5y=3

a=2*fa=?

7.假定inta=0,b=0,c=0;执行表达式a||(b=5)||(c=3)后b,c的值是。

A)5,3B)0,0C)5,0D)0,3

8.已知:

intj,a,b;执行语句“b=(a=2*3,a*5),a+6;”后,变量b的值是。

A)6B)12C)30D)36

9.for(;;)

10.inta=200,b=300;

a*b/100(long)(a*b)/100(long)a*b/100

11.虚实结合时的类型

12.两种典型的排序算法:

选择法和起泡法。

选择法基本思想:

首先选择最小的数放在0位置,再在剩下的数中选择最小的数放在下一位置,┈┈,依次类推,共进行9次选择。

每次选择都要与其后的所有数进行比较换位。

5

8

7

4

3

9

0

1

2

6

j

 

#definen10

main()

{inta[n],i,j,t;

for(i=0;i

for(i=0;i

for(j=i+1;j

if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}

for(j=0;j

}

5

8

7

4

3

9

0

1

2

6

 

也可以在每次选择中先找最小值所在的位置,最后再换位。

main()

{inta[10],i,j,t,k;for(i=0;i<10;i++)scanf(“%d”,&a[i]);

for(i=0;i<9;i++)

{k=i;

for(j=i+1;j<10;j++)if(a[j]

t=a[i];a[i]=a[k];a[k]=t;

}

for(j=0;j<10;j++)printf(“%3d”,a[i]);

}

起泡法基本思想:

首先将所有数中的最大值“冒泡”到最后位置,再将剩下的数中的最大值“冒泡”到上一位置,┈┈,依次类推,共进行9次“冒泡”。

每次“冒泡”都是一种翻滚过程,即相邻两个数进行比较换位。

5

8

7

4

3

9

0

1

2

6

 

假定j为“冒泡”次数,则有:

main()

{inta[10],i,j,t;

for(i=0;i<10;i++)scanf(“%d”,&a[i]);

for(j=1;j<=9;j++)

for(i=0;i<10-j;i++)

if(a[i]

for(j=0;j<10;j++)printf(“%3d”,a[i]);

}

要特别注意两个循环的范围。

 

13.迭代法

例:

求方程2x3+3x2-4x+1=0的根。

简单迭代法基本思想:

将原方程f(x)化为:

x2=g(x1)

x2=(2x13+3x12+1)/4迭代公式

迭代过程:

 

 

main()

{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);

}

牛顿迭代法基本思想:

 

f′(x1)=f(x1)/(x1-x2)

x2=x1-f(x1)/f′(x1)牛顿迭代公式

main()

{floatx1,x2,f1,f;

scanf(“%f”,&x1);

while

(1)

{f=2*x1*x1*x1+3*x1*x1-4*x1+1

f1=6*x1*x1+6*x1-4;

x2=x1-f/f1;

if(fabs(x2-x1)<1e-6)break;

x1=x2;

}

printf(“\n%f”,x2);

}

祝大家取得好成绩!

2006下考试题目

一、单项选择题(每题2分,共32分)

1、A是合法的用户自定义标识符。

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的值是B。

A)2.500000B)2.800000C)3.050000D)0.000000

3.设intx=8,y,z;执行y=z=x++;x=y==z后,变量x的值是B。

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&&a/10%10>a/100%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;i<=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、有以下程序

main()

{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

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;

for(i=0;i<3;i++)s+=p[i][i];

D)inta[3][3]={1,2,3,4,5,6,7,8,9},s=0,*p=a;

for(p=a;p

11、以下程序中,不合法的函数调用语句是(11)。

voidfun(floatx[]){……}

main()

{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<10;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;i

{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)。

main()

{inta[10]={3,5,2,9,1,8,0,2,4,6},i,p=0,q=0;

for(i=0;i<10;i++)

{if(a[i]>p)p=a[i];

if(a[i]

}

printf("\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;

}

main()

{inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;

p=a;q=&a[7];

while(p

{

f(p,q);

p++;

q--;

}

for(i=0;i<8;i++)

printf("%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);

}

main()

{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)。

main()

{inta[10]={8,6,4,0,9,1,2,5,7,3},t,*k=a,*p,*q;

for(p=a;p

for(p=k,q=k;p>=a&&q

for(p=a;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;i

for(j=i+1;j

if(*i>*j){t=*i;*i=*j;*j=t;}

for(i=0;i

}

A)0123456789B)9876543210C)0356812479D)8653097421

22、以下程序的运行结果是(22)。

main()

{intj,k,s1=0,s2=0,a[3][3]={1,2,3,4,5,6,7,8,9};

for(j=0;j<3;j++)

for(k=j+1;k<3;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)。

main()

{inti;chara[]="ab12";

for(i=0;a[i];i++)

switch(a[i])

{case1:

printf("%d",a[i]);break;

case2:

printf("%d",a[i]);break;

default:

if(a[i]>='a'&&a[i]<='z')putchar(a[i]);

elseprintf("%d",a[i]+1);

}

}

A)ab23B)ab12C)ab4950D)ab5051

24、以下程序的运行结果是(24)。

main()

{inta[10]={3,2,5,4,6,7,9,12,8,10},i,p=0,q=0;

for(i=0;i<10;i++)

{if(a[i]>p)p=a[i];

if(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++

printf(“\n%d”,z);

}

A)5B)7C)15D)20

26.以下程序的运行结果是(26)。

main()

{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

main()

{staticchara[]=“Language”,b[]=“programe”;

char*p1,*p2;

intk;

p1=a;p2=b;

for(k=0;k<=7;k++)

if(*(p1+k)==*(p2+k))printf(“%c”,*(p1+k));

}

28.以下程序的运行结果是(28)。

main()

{intn=12345,j,n1=0,n2=0;

while(n/=10)

{

j=n%10;

if(j%2)n1+=j;

elsen2+=j;

}

printf("\n%d,%d",n1,n2);

}

A)gaeB)gaC)LanguageD)有语法错

A.9,6B.6,4C.6,9D.4,6

29.若运行以下程序时,从键盘输入abcd表示回车),

则输出结果是(29)。

#include“stdio.h”

main()

{intc;

while((c=getchar())!

=’\n’)

switch(c-‘a’)

{case0:

case1:

putchar(c+4);

case2:

putchar(c+4);break;

case3:

putchar(c+3);

default:

putchar(c+2);break;

}

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;};

main()

{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))

{fscanf(fp,”%s%d”,st.name,&st.score);

if(st.score

}

fclose(fp);

printf(PRT,stmax.name,stmax.score,stmin.name,stmin.score);

}

A.Li93zhou75B.Sun90Zhou70C.Qian75Li93D.Zhao87Zhou70

三、程序填充题:

选择适当的内容填在以下各程序的下划线处,使程序完整。

(每空3分,共30分)

●下面程序的功能是求100至1000之间有多少个数其各位数字之和是5。

main()

{inti,s,k,count=0;

for(i=100;i<=1000;i++)

{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。

main()

{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;i

for(j=i+1;j

(38);}

intprime(intm)

{inti;

if(m<2)retu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1