C语言期末考试.docx

上传人:b****5 文档编号:7380311 上传时间:2023-01-23 格式:DOCX 页数:21 大小:134.49KB
下载 相关 举报
C语言期末考试.docx_第1页
第1页 / 共21页
C语言期末考试.docx_第2页
第2页 / 共21页
C语言期末考试.docx_第3页
第3页 / 共21页
C语言期末考试.docx_第4页
第4页 / 共21页
C语言期末考试.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

C语言期末考试.docx

《C语言期末考试.docx》由会员分享,可在线阅读,更多相关《C语言期末考试.docx(21页珍藏版)》请在冰豆网上搜索。

C语言期末考试.docx

C语言期末考试

1/******计算圆的面积和周长******/

#include"stdio.h"

#definePI3.141592654

#defineR2.0

doubleF1(doubler);

doubleF2(doubler);

intmain()

{

printf("mianji=%f",F1(R));

printf("\tzhouchang=%f\n",F2(R));

return0;

}

doubleF1(doubler)

{

return(PI*r*r);

}

doubleF2(doubler)

{

return(2.0*PI*r);

}

2/*三个数最大*/

#include"stdio.h"

floatmax3(floatx,floaty,floatz)

{

floatmax=x;

if(z>y)

{

if(z>x)

max=z;

}

else

{

if(y>x)

max=y;

}

printf("Themaxis:

%f",max);

}

intmain()

{

floata,b,c;

printf("Input3realnumbers:

\n");

scanf("%f%f%f",&a,&b,&c);

max3(a,b,c);

return0;

}

3/*求一元二次方程的解*/

#include"stdio.h"

#include"math.h"

voidsolv_quadr_equa(floata,floatb,floatc)

{

if(a==0.0)

if(b==0.0)

printf("noanswerduetoinputerror\n");

else

printf("thesignglerootis%f\n",-c/b);

else

{

doubledisc,twoa,term1,term2;

disc=b*b-4*a*c;

twoa=2*a;

term1=-b/twoa;

term2=sqrt(fabs(disc))/twoa;

if(disc<0.0)

printf("complexroot:

\nrealpart=%f,imagpart=%f\n",term1,term2);

else

printf("realroot:

\nroot1=%f,root2=%f\n",term1+term2,term1-term2);

}

}

voidmain()

{

floata,b,c;

printf("Input3realsnumbers:

\n");

scanf("%f%f%f",&a,&b,&c);

solv_quadr_equa(a,b,c);

return0;

}

4/*求十年之后的人口*/

#include"stdio.h"

intmain()

{

doublem=13;

inti=1;

while(i<=10)

{

m=m*(1+0.002);

i++;

}

printf("Populationtenyearslateris:

%f\n",m);

return0;

}

5/*计算Fibonacci数*/

#include"stdio.h"

voidmain()

{

intfib1=1,fib2=1,fib,i=3;

while(i<=12)

{

fib=fib1+fib2;

fib1=fib2;

fib2=fib;

i++;

}

printf("TheFibonaccinumberafter1yearis:

%d\n",fib);

}

6/*百钱买百鸡*/

#include"stdio.h"

voidmain()

{

intcocks=0;

printf("%8s%8s%8s\n","cocks","hens","chicks");

while(cocks<=19)

{

inthens=0;

while(hens<=33)

{

intchicks;

chicks=100-cocks-hens;

if(5*cocks+3*hens+chicks/3.0==100)

printf("%8d%8d%8d\n",cocks,hens,chicks);

hens++;

}

cocks++;

}

return0;

}

7用c语言描述下列命题

(1)a小于b或a小于c.

(1)a

(2)a或b都大于c.

(2)a>c&&b>c

(3)a和b其中之一小于c.

(3)a

(4)a是非正整数

(4)!

(a>0&&(int)a==a)

(5)a是奇数。

(5)a>0&&a%2==1

(6)a不能被b整除

(6)a%b!

=0

(7)角A在第一象限或者第三象限。

(7)#definePI3.1415(A>=0&&A<=PI/2)||(A>=PI&&A<=3*PI/2)

(8)a是一个带小数的正数,而b是一个带小数的负数。

(8)(a>0&&(int)a!

=a)&&(b<0&&(int)b!

=b)

8写出下列表达式的值

(1)1<4&&4<7

值为1

(2)1<4&&7<4

值为0

(3)!

(2<=5)

值为0

(4)!

(1<3)||(2<=5)

值为1

(5)!

(4<=6)&&(3<=7)

值为1

9若x=3,y=z=4,求下列表达式的值。

1)(z>=y>=x)?

1:

0

1)

z>=y为1,而1>=x为0,

表达式的值为0

2)z>=y&&y>=x

1)z>=y为1,而y>=x为1;1&&1为1.

10若x=3,y=2,z=1求下列表达式的值

1)x

y:

x

1)x

结果为x.

2)x

x++:

y++

1)x

3)z+=(x

x++:

y++)

2)x

12写出以下程序段的输出结果。

(1)intx=40,y=4,z=4;

x=y==z;printf("%d\n",x);

x=x==(y==z);printf("%d\n",x);

(3)intx=1,y=1,z=1;

y=y+z;

x=x+y;

printf("%d\n",x

y:

x);

printf("%d\n",x

x++:

y++);

printf("%d\n",x);

printf("%d\n",y);

x=3;

y=z=4;

printf("%d\n",(x>=y>=x)?

1:

0);

printf("%d\n",z>=y&&y>=x);

(4)#include"stdio.h"

intmain()

{

inta;

scanf("%d",&a);

if(a>=0)

printf("plus\n");

else

printf("minus\n");

return0;

}

(6)#include"stdio.h"

intmain()

{

intn=0;

while(n++<=1)

printf("%d\t",n);(如果没有大括号,就代表他接下来这一句是属于上面那句的)

printf("%d\n",n);(先引用后增值,所以,n不会到while语句中,直接增值。

故为3)

return0;

}

13设计c语言程序,判断所输入年份是否为闰年

/*判断所输入年份是否为闰年*/

#include"stdio.h"

voidmain()

{

charch;

intyear;

do

{

printf("entertheyear\n");

scanf("%d%",&year);

if(year%4==0)

if(year%100!

=0)

printf("%disLEAP!

\n",year);

elseif(year%4000==0)

printf("%disLEAP!

\n",year);

else

printf("%disNOTLEAP!

\n",year);

else

printf("ifContinued,pressY,otherwisepressanykeyabort\n");

scanf("%ls",&ch);

}

while(ch=='Y'||ch=='y');

}

14/*计算三角形的面积*/

#include"stdio.h"

#include"math.h"

voidmain()

{

doublea,b,c,s;

printf("input3realnumbers:

\n");

scanf("%lf%lf%lf",&a,&b,&c);

if((a+b)>c&&(b+c)>a&&(a+c)>b)

{

s=(a+b+c)*0.5;

printf("\nAreaofthetriangleis%lf\n",sqrt(s*(s-a)*(s-b)*(s-c)));

}

else

printf("It`snotatriangle\n");

}

15/*第n年母牛数*/

#include"stdio.h"

intmain(void)

{

inti,year,oxNum,oxNum1,oxNum2,oxNum3;

printf("inputyear:

");

scanf("%d",&year);

for(i=1;i<=year;i++)

{

if(i<4)

oxNum=oxNum1=oxNum2=oxNum3=1;

else

{

oxNum=oxNum1+oxNum3;

oxNum3=oxNum2;

oxNum2=oxNum1;

oxNum1=oxNum;

}

printf("i=%2doxnumber=%3d\n",i,oxNum);

}

return0;

}

16/*递归计算n!

的函数*/

#include"stdio.h"

longrfact(intn)

{

if(n<0)

{

printf("Itisnomeaning.\n");

return(-1);

}

elseif(n<=1)

return

(1);

else

return(n*rfact(n-1));

}

intmain()

{

inta;

printf("pleaseinputanumber:

\n");

scanf("%d",&a);

rfact(a);

printf("%d\n",rfact(a));

return0;

}

17/*正序反序显示*/

#include"stdio.h"

#defineN10

intmain()

{

inti;

intstudent_age[N];

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

{

printf("inputaage:

");

scanf("%d",&student_age[i]);

}

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

printf("%6d",student_age[i]);

printf("\n");

for(i=N;i>=0;i--)

printf("%6d",student_age[i]);

printf("\n");

return0;

}

18/*顺序查找学生年龄*/

#include"stdio.h"

#include"stdlib.h"

intmain()

{

inti,age;

intstudent_age[]={10,15,12,14,13,11,16,19,17,18};

printf("请输入要查找的年龄:

");

scanf("%d",&age);

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

if(student_age[i]==age)

{

printf("第%d位学生的年龄是%d.\n",i+1,student_age[i]);

return0;

}

printf("找不到这个年龄的学生。

\n");

return0;

}

19/*折半查找学生年龄*/

#include"stdio.h"

#include"stdlib.h"

#defineN19

intmain()

{

inta[N]={2,5,6,7,8,13,15,17,19,21,23,25,26,27,28,35,41,52,63};

intmid,top,bot,x;

top=0;

bot=N-1;

printf("请输入要查找的元素:

");

scanf("%d",&x);

while(top<=bot)

{

mid=(top+bot)/2;

if(x==a[mid])

{

printf("\n找到的元素%d是:

a[%2d]\n",x,mid);

return0;

}

elseif(x>a[mid])

top=mid+1;

elsebot=mid-1;

}

printf("没有找到该元素.\n");

return0;

}

20/******冒泡排序******/

#include

#defineN8

intmain()

{

inta[N]={9,8,3,7,5,2,6,1};

inti,j,temp;

for(j=0;j<=N-2;j++)

{

for(i=0;i<=N-j-1;i++)

if(a[i]>a[i+1]){temp=a[i];a[i]=a[i+1];a[i+1]=temp;}

}

printf("\n排序结果:

");

for(i=0;i<=N-1;i++)

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

printf("\n");

return0;

}

21#include"stdio.h"

voidmain()

{

inta[2]={0},i,j,k=2;

for(i=0;i

for(j=0;j

a[j]=a[i]+1;

printf("%d",a[k]);

}

#include"stdio.h"

voidmain()

{

inta[6],i;

for(i=1;i<6;i++)

{

a[i]=6*(i-1+4*(i/3))%5;

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

}

}

#include"stdio.h"

voidmain()

{

inti=0,j=7,k,a[8]={6,2,11,4,5,9,7,8};

while(i

{k=a[i];a[i]=a[j];a[j]=k;i++;j--;}

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

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

}

22有17个人围成一圈,开始报数。

凡报3的人就退出,下一个人又从一开始报数,直到最后只剩下一个人为止。

请问此人原来的位置是多少?

#include"stdio.h"

voidmain()

{

intp[18]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};

inti=1,j=1,k=1,m=17;

do

{

if(p[i])

{

if(j++>=3)

{

p[i]=0;

j=1;

m--;

}

else

k=i;

if(m<=1)break;

}

if(i>=17)

i=1;

else

i++;

}

while

(1);

printf("\n%d",k);

return0;

}

23#include"stdio.h"

voidmain()

{

inta[6][6],i,j;

for(i=1;i<6;i++)

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

a[i][j]=(i/j)*(j/i);

for(i=1;i<6;i++)

{

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

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

}

printf("\n");

}

#include"stdio.h"

voidmain()

{

inti,j,row,col,m;

intarr[3][3]={{100,200,300},{228,172,-130},{-748,42,634}};

m=arr[0][0];

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

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

if(arr[i][j]

{

m=arr[i][j];

row=i;

col=j;

}

printf("\n%d,%d,%d\n",m,row,col);

}

24

(1)对于说明doublex,*p;正确的表达式是:

()

A.p=&x

正确

B.p=x

错误:

x为double型,p是指向double型的指针类型

C.*p=&x

错误:

x是指针p的引用,而&x是地址

D.*p=x

错误:

P为空指针,不能赋值

(2)对于说明doublex=3.141593,*pointer&x;

均表示地址的表达式是:

()

A.&x,&*pointer,&pointer

正确

B.*&x,*(&pointer),&pointer

给出变量x的地址

C.&(&(*pointer)),&(*pointer),*pointer

给出指针变量x的地址

D.&(*&pointer),&*&pointer,*&*pointer

给出变量x的指针pointer的地址

(3)对于说明int*p1,*p2,a=5,b;均为正确的赋值语句为()

A.p1=&a;p2=&p1;

B.p1=&a;p2=&b;*p1=p2;

C.p1=&a;p2=p1;

D.*p2=b;*p2=*p1;

E.p2=p1;p1=&a;

F.*p2=a;

(4)对于说明int*p1,*p2,a=5,b;

char*q,ch;

正确的程序段是()

A.main()

{

*p=99;

}

错误:

指针没有被初始化之前不能被使用

B.main()

{

p=&ch;

s=p;

}错误:

地址类型与指针类型不一致,不可互相赋值

C.main()

{

p=&i;

q=ch;

p=q;

}

错误:

p与q的类型不一致,不可互相赋值

D.main()

{

p=&i;

q=ch;

*p=55;

*q=*p;

}正确

25阅读程序,指出程序的运行结果

(1)#include"stdio.h"

main()

{

intn=10,*p=&n;

*p=5;

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

}

(2)#include"stdio.h"

main()

{

inta=2,b=4,c=6;

int*pa=&a,*pb=&b,*p;

*(p=&c)=*pa*(*pb);

printf("%d\n",c);

}

26从键盘输入三个整数,要求设3个指针变量p1,p2,p3,使p1指向3个数中的最大者,p2指向次大者,p3指向最小者。

按照由大到小的顺序输出这三个数。

#include"stdio.h"

intmain()

{

int*p1,*p2,*p3;

inta,b,c,t;

printf("inputthreenumbers\n");

scanf("%d%d%d",&a,&b,&c);

p1=&a;p2=&b;p3=&c;

if(*p1<*p2)

{

t=*p1;*p1=*p2;*p2=t;

}

if(*p1<*p3)

{

t=*p1;*p1=*p3;*p3=t;

}

if(*p2<*p3)

{

t=*p2;*p2=*p3;*p3=t;

}

printf("%d%d%d",*p1,*p2,*p3);

return0;

}

27/*Note:

YourchoiceisCIDE*/

#include"stdio.h"

intmain()

{

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

printf("%d,%d\n",*p+2,*(p+2));

return0;

}

(2)

/*Note:

YourchoiceisCIDE*/

#include"stdio.h"

intmain()

{

inti;

inta[10],*p=a;

for(i=0;i<10;i++)*p++=2*i;

for(i=0;i<10;i++)printf("%d,",a[i]);

printf("\n");

return0;

}

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

当前位置:首页 > 农林牧渔 > 林学

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

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