选择结构.docx
《选择结构.docx》由会员分享,可在线阅读,更多相关《选择结构.docx(51页珍藏版)》请在冰豆网上搜索。
![选择结构.docx](https://file1.bdocx.com/fileroot1/2023-1/4/7851827f-b8e2-4584-a8e8-502491f1743a/7851827f-b8e2-4584-a8e8-502491f1743a1.gif)
选择结构
第33题(10.0分)题号:
401
功能:
输入某年某月某日,判断这一天是这一年的第几天?
main()
{
intday,month,year,sum,leap;
printf("\npleaseinputyear,month,day\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)
{
case1:
sum=0;break;
case2:
sum=31;break;
case3:
sum=59;break;
/***********SPACE***********/
case4:
【?
】;break;
case5:
sum=120;break;
case6:
sum=151;break;
case7:
sum=181;break;
case8:
sum=212;break;
case9:
sum=243;break;
case10:
sum=273;break;
case11:
sum=304;break;
case12:
sum=334;break;
default:
printf("dataerror");break;
}
/***********SPACE***********/
【?
】;
/***********SPACE***********/
if(year%400==0||(【?
】)
leap=1;
else
leap=0;
/***********SPACE***********/
if(【?
】)
sum++;
printf("Itisthe%dthday.",sum);
}
答案:
1).sum=90
2).sum=sum+day或sum=sum+day
3).year%4==0&&year%100!
=0)或year%4==0&&year%100!
=0
4).leap==1&&month>2或leap==1&&month>2或leap==1&&2
第66题(10.0分)题号:
456
功能:
利用指向结构的指针编写求某年、某月、某日是第
几天的程序,其中年、月、日和年天数用结构表示。
main()
{
/***********SPACE***********/
【?
】date
{
inty,m,d,n;
/***********SPACE***********/
}【?
】;
intk,f,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("date:
y,m,d=");
scanf("%d,%d,%d",&x.y,&x.m,&x.d);
f=x.y%4==0&&x.y%100!
=0||x.y%400==0;
/***********SPACE***********/
a[1]+=【?
】;
if(x.m<1||x.m>12||x.d<1||x.d>a[x.m-1])exit(0);
for(x.n=x.d,k=0;k/***********SPACE***********/
printf("n=%d\n",【?
】);
}
答案:
1).struct
2).x
3).f
4).x.n
第68题(10.0分)题号:
457
功能:
功能:
定义一个结构变量(包括年、月、日)计算给定日
期是该年的第几天。
main()
{
/***********SPACE***********/
【?
】date
{
inty,m,d;
}da;
intf,n,p,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("y,m,d=");
scanf("%d,%d,%d",&da.y,&da.m,&da.d);
/***********SPACE***********/
f=da.y%4==0&&da.y%100【?
】0||da.y%400==0;
/***********SPACE***********/
if(da.m<1【?
】da.d>12)exit(0);
a[11]+=f;
if(da.d<1||da.d>a[da.m-1])exit(0);
/***********SPACE***********/
for(n=【?
】,p=1;pprintf("n=%d\n",n);
}
答案:
1).struct
2).!
=
3).||
4).da.d
第87题(10.0分)题号:
446
功能:
编程求某年第n天的日期。
用数组表示月天数。
main()
{
inty,m,f,n;
inta[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("y,n=");
scanf("%d,%d",&y,&n);
/***********SPACE***********/
f=y%4==0&&y%100!
=0【?
】y%400==0;
/***********SPACE***********/
a[1]【?
】f;
if(n<1||n>365+f)
{
printf("error!
\n");exit(0);
}
/***********SPACE***********/
for(m=1;m【?
】a[m-1];n-=a[m-1],m++);
printf("y=%d,m=%d,d=%d\n",y,m,n);
}
答案:
1).||
2).+=或=a+
3).>
第102题(10.0分)题号:
420
功能:
计算某日是当年的第几天。
#include
struct
{
intyear;
intmonth;
intday;
}data;/*定义一个结构并声明对象为data*/
voidmain()
{
intdays;
printf("请输入日期(年,月,日):
");
scanf("%d,%d,%d",&data.year,&data.month,&data.day);
switch(data.month)
{
case1:
days=data.day;
break;
/***********SPACE***********/
case2:
days=data.day+【?
】;
break;
case3:
days=data.day+59;
break;
case4:
days=data.day+90;
break;
/***********SPACE***********/
case5:
days=data.day+【?
】;
break;
case6:
days=data.day+151;
break;
case7:
days=data.day+181;
break;
case8:
days=data.day+212;
break;
case9:
days=data.day+243;
break;
case10:
days=data.day+273;
break;
case11:
days=data.day+304;
break;
case12:
days=data.day+334;
break;
}
/***********SPACE***********/
if(data.year%4==0&&data.year%100!
=0【?
】data.year%400==0)
if(data.month>=3)
/***********SPACE***********/
days=【?
】;
printf("%d月%d日是%d年的第%d天.\n",data.month,data.day,data.year,days);
}
答案:
1).31
2).120
3).||
4).days+1或1+days或++days
第44题(10.0分)题号:
33
功能:
以下程序的功能如(图1)。
#include
#include
/***********SPACE***********/
doublef(【?
】)
{
/***********SPACE***********/
【?
】;
/***********SPACE***********/
if(【?
】)
y=2.0*x*x+3.0*x+4.0;
else
y=-2.0*x*x+3.0*x-4.0;
/***********SPACE***********/
【?
】;
}
main()
{
clrscr();
printf("%f\n",f(f(-1.0)+f(5.0)));
}
答案:
1).floatx或doublex
2).doubley
3).x<=2或2>=x
4).returny或return(y)
第45题(10.0分)题号:
25
功能:
以下程序的功能如(图1)。
/***********SPACE***********/
【?
】
main()
{
floatx,f;
scanf("%f",&x);
/***********SPACE***********/
if(x<0)【?
】;
/***********SPACE***********/
elseif(【?
】)
f=2*x+1;
else
f=sin(x)+5;
/***********SPACE***********/
printf("x=%f,y=%f\n",【?
】);
}
答案:
1).#include"math.h"或#include
2).f=fabs(x+1)
3).x<=5或5>=x或x<6或6>x或x>=0&&x<=5或0<=x&&x<=5或x>=0&&5>=x或0<=x&&5>=x或!
(x>5)
4).x,f
第53题(10.0分)题号:
430
功能:
计算一元二次方程的根。
#include
/***********SPACE***********/
#include【?
】
main()
{
floata,b,c,disc,x1,x2,realpart,imagpart;
scanf("%f%f%f",&a,&b,&c);
printf("theequation");
/***********SPACE***********/
if(【?
】<=1e-6)
printf("isnotquadratic\n");
else
disc=b*b-4*a*c;
if(fabs(disc)<=1e-6)
printf("hastwoequalroots:
%-8.4f\n",-b/(2*a));
/***********SPACE***********/
elseif(【?
】)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("hasdistinctrealroots:
%8.4fand%.4f\n",x1,x2);
}
else
{
realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf("hascomplexroots:
\n");
printf("%8.4f=%.4fi\n",realpart,imagpart);
printf("%8.4f-%.4fi\n",realpart,imagpart);
}
}
答案:
1).
2).fabs(a)
3).fabs(disc)>1e-6或1e-6第62题(10.0分)题号:
614
题目:
以下程序的功能是:
输出a、b、c三个变量中的最小值。
#include
main()
{
inta,b,c,t1,t2;
/***********SPACE***********/
scanf("%d%d%d",&a,&b,【?
】);
t1=a
a:
b;
/***********SPACE***********/
t2=c【?
】;
printf("%d\n",t2);
}
答案:
1).&c
2).c:
t1
第83题(10.0分)题号:
454
功能:
三角形的面积为:
area=sqrt(s*(s-a)*(s-b)*(s-c)).其中
,s=(a+b+c)/2,a、b、c为三角形三条边的长。
定义两个带
参数的宏,一个用来求s,另一个用来求area。
编写程序,
在程序中用带参数的宏求面积area。
#include"math.h"
/***********SPACE***********/
#【?
】S(x,y,z)(x+y+z)/2
#defineAREA(s,x,y,z)sqrt(s*(s-x)*(s-y)*(s-z))
main()
{
floata,b,c,s,area;
printf("a,b,c=");
/***********SPACE***********/
scanf("%f,%f,%f",&a,【?
】,&c);
if(a+b>c&&b+c>a&&c+a>b)
{
/***********SPACE***********/
s=【?
】;
/***********SPACE***********/
area=【?
】;
printf("area=%f\n",area);
}
}
答案:
1).define
2).&b
3).S(a,b,c)
4).AREA(s,a,b,c)
第98题(10.0分)题号:
443
功能:
企业发放的奖金根据利润提成。
利润(I)低于或等于10万元
时,奖金可提10%;利润高于10万元,低于20万元时,低于
10万元的部分按10%提成,高于10万元的部分,可可提成7.5%
;20万到40万之间时,高于20万元的部分,可提成5%;40万
到60万之间时高于40万元的部分,可提成3%;60万到100万
之间时,高于60万元的部分,可提成1.5%,高于100万元时,
超过100万元的部分按1%提成,从键盘输入当月利润I,求
应发放奖金总数?
main()
{
longinti;
intbonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf("%ld",&i);
bonus1=100000*0.1;bonus2=bonus1+100000*0.75;
bonus4=bonus2+200000*0.5;
bonus6=bonus4+200000*0.3;
bonus10=bonus6+400000*0.15;
if(i<=100000)
bonus=i*0.1;
/***********SPACE***********/
elseif(【?
】)
bonus=bonus1+(i-100000)*0.075;
/***********SPACE***********/
elseif(【?
】)
bonus=bonus2+(i-200000)*0.05;
/***********SPACE***********/
elseif(【?
】)
bonus=bonus4+(i-400000)*0.03;
elseif(i<=1000000)
bonus=bonus6+(i-600000)*0.015;
else
bonus=bonus10+(i-1000000)*0.01;
/***********SPACE***********/
【?
】("bonus=%d",bonus);
}
答案:
1).i<=200000或200000>=i
2).i<=600000或600000>=i
3).i<=1000000或1000000>=i
4).printf
第100题(10.0分)题号:
451
功能:
编程求任意给两个日期(Y0年M0月DO日和Y1年M1月D1日)
相差的天数。
main()
{
inty1,m1,d1,y2,m2,d2,n,i;
printf("y1,m1,d1=");
scanf("%d,%d,%d",&y1,&m1,&d1);
/***********SPACE***********/
if(m1<1||m1>12||d1<1||d1>【?
】)exit(0);
printf("y2,m2,d2=");scanf("%d,%d,%d",&y2,&m2,&d2);
/***********SPACE***********/
if(m2<1||m2>12||d2<1||d2>【?
】)exit(0);
if(y1>y2||y1==y2&&m1>m2||y1==y2&&m1==m2&&d1>d2)
{
n=y1;
y1=y2;
y2=n;
n=m1;
m1=m2;
m2=n;
n=d1;
d1=d2;
d2=n;
}
else
{
/***********SPACE***********/
n=yend(y1,m1,d1)+【?
】;
/***********SPACE***********/
for(i=【?
】;i}
printf("%d.%d.%d--->%d.%d.%d:
n=%d\n",y1,m1,d1,y2,m2,d2,n);
}
intf(inty)
{
return(y%4==0&&y%100!
=0||y%400==0);
}
intmday(inty,intm)
{
return(31-((m==4)+(m==6)+(m==9)+(m==11))-(3-f(y))*(m==2));
}
intyday(inty,intm,intd)
{
return(d+31*((m>1)+(m>3)+(m>5)+(m>7)+(m>8)+(m>10))+30*((m>4)+(m>6)+(m>9)+(m>11))+(28+f(y))*(m>2));
}
intyend(inty,intm,intd)
{
return(365+f(y)-yday(y,m,d));
}
答案:
1).mday(y1,m1)
2).mday(y2,m2)
3).yday(y2,m2,d2)
4).y1+1或1+y1
第102题(10.0分)题号:
420
功能:
计算某日是当年的第几天。
#include
struct
{
intyear;
intmonth;
intday;
}data;/*定义一个结构并声明对象为data*/
voidmain()
{
intdays;
printf("请输入日期(年,月,日):
");
scanf("%d,%d,%d",&data.year,&data.month,&data.day);
switch(data.month)
{
case1:
days=data.day;
break;
/***********SPACE***********/
case2:
days=data.day+【?
】;
break;
case3:
days=data.day+59;
break;
case4:
days=data.day+90;
break;
/***********SPACE***********/
case5:
days=data.day+【?
】;
break;
case6:
days=data.day+151;
break;
case7:
days=data.day+181;
break;
case8:
days=data.day+212;
break;
case9:
days=data.day+243;
break;
case10:
days=data.day+273;
break;
case11:
days=data.day+304;
break;
case12:
days=data.day+334;
break;
}
/***********SPACE***********/
if(data.year%4==0&&data.year%100!
=0【?
】data.year%400==0)
if(data.month>=3)
/***********SPACE***********/
days=【?
】;
printf("%d月%d日是%d年的第%d天.\n",data.month,data.day,data.year,days);
}
答案:
1).31
2).120
3).||
4).days+1或1+days或++days
第111题(10.0分)题号:
24
功能:
对任一整数N(N≠0),它都可以分解成1(或-1)和一些质数(素
数)因子的形式。
例如:
当N=150时,可分解成1×2×3×5×5;
当N=-150时,可分解为-1×2×3×5×5。
下边程序能实现这种分解过程。
当N=150,输出以下分解结
果:
N=1*2*3*5*5
main()
{
intn,i,j,r;
scanf("%d",&n);
if(n==0)
{
printf("dataerror\n");
exit(0);
}
/***********SPACE***********/
elseif(【?
】)
printf("n=1");
else
{