选择结构.docx
- 文档编号:6254650
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:51
- 大小:26.51KB
选择结构.docx
《选择结构.docx》由会员分享,可在线阅读,更多相关《选择结构.docx(51页珍藏版)》请在冰豆网上搜索。
选择结构
第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;p printf("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 {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 选择 结构