📄 练习(一).txt
字号:
else if(wei<=30) ________;
if(r==-1) printf("error\n");
else
{
________;
printf("%f,mon);
}
}
84、某服装店经营套服,也单件出售。若买的不少于50套,每套80元;不足50套的每套90元;只买上衣每件60元;只买裤子每条45元。以下程序的功能是读入所买上衣c和裤子t的件数,计算应付款m。请在________内填入正确内容。
void main()
{
int c,t,m;
printf("input the number of coat and trousers your want buy: \n");
scanf("%d %d",&c,&t);
if(________)
if(c>=50) m=c*80;
else m=c*90;
else
if(________)
if(t>=50) m=t*80+(c-t)*60;
else m=t*90+(c-t)*60;
else
if(________) m=c*80+(t-c)*45;
else m=c*90+(t-c)*45;
printf("%d",m);
}
85、以下程序的功能是判断输入的年份是否是闰年。请在________内填入正确内容。
void main()
{
int y,f;
scanf("%d",&y);
if(y%400==0) f=1;
else if(________) f=1;
else ________;
if(f) printf("%d is",y);
else printf("%d is not",y);
printf(" a leap year\n");
}
86、以下程序段针对输入的截止日期(年:yend,月:mend,日:dend)和出生日期(yman,mman,dman),计算出实际年龄。请在________内填入正确内容。设有:int yend,mend,ded,yman,mman,dman,age;
age=yend-yman;
if(mend________mman) age--;
else if(mend________mman && dend________dman) age--;
87、有四个数a,b,c,d,要求按从大到小的顺序输出。请在________内填入正确内容。
void main()
{
int a,b,c,d,t;
scanf("%d %d %d %d",&a,&b,&c,&d);
if(a<b) {t=a; a=b; b=t;}
if(________) {t=c; c=d; d=t;}
if(a<c) {t=a; a=c; c=t;}
if(________) {t=b; b=c; c=t;}
if(b<d) {t=b; b=d; d=t;}
if(c<d) {t=c; c=d; d=t;}
printf("%d %d %d %d\n",a,b,c,d);
}
88、以下程序的运行结果是________。
void main()
{
int a=2,b=3,c;
c=a;
if(a>b) c=1;
else if(a==b) c=0;
else c=-1;
printf("%d\n",c);
}
89、若a=1,b=2,则表达式a>b?a:b+1的值是________。
90、若a=1,b=2,c=3,d=4,则表达式a>b?a:c>d?c:d的值是________。
91、设有变量定义:int a=10,c=9;
则表达式(--a!=c++)?--a:++c的值是________。
92、若有说明语句:int x=1,y=0; 则表达式x>(y+x)?10:12.5>y++?'a':'A'的值是________。
93、若有说明语句:int a=1,b=0; 则表达式++a*--a==b?12%5:'x'的值是________。
94、若有x=1,y=2,z=3,则表达式(x<y?x:y)==z++的值是________。
95、若有说明语句:int x=1,y=0; 则表达式x-->(y+x)?5:25>y++?'1':'2'的值是________。
96、以下程序的运行结果是________。
#include <stdio.h>
void main()
{
int a=-10,b=-3;
printf("%d,",-a%b);
printf("%d,",(a-b,a+b));
printf("%d\n",a-b?a-b:a+b);
}
97、以下程序的运行结果是________。
void main()
{
int x=1,y=1,z=1;
y=y+x;
x=x+y;
printf("%d,",x<y?y:x);
printf("%d,",x<y?x++:y++);
printf("%d,%d",x,y);
}
98、以下程序的运行结果是________。
void main()
{
int x,y,z;
x=3;
y=z=4;
printf("%d,",(x>=y>=x)?1:0);
printf("%d\n",z>=y&&y>=x);
}
99、若运行时输入:-2〈回车〉,则以下程序的输出结果是________。
void main()
{
int a,b;
scanf("%d",&a);
b=(a>=0)?a:-a;
printf("b=%d",b);
}
100、若运行时输入:100〈回车〉时,下面程序的运行结果是________。
void main()
{
int a;
scanf("%d",&a);
printf("%s",(a%2!=0)?"no":"yes");
}
101、如果运行时输入字符为'Q',则以下程序的运行结果是________。
void main()
{
char ch;
scanf("%c",&ch);
ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
ch=(ch>='a'&&ch<='z')?(ch-32):ch;
printf("%c",ch);
}
102、当运行时输入:1992〈回车〉,则以下程序的运行结果是________。
void main()
{
int y,t;
scanf("%d",&y);
t=((y%4==0&&y%100!=0)||y%400==0)?1:0;
if(t) printf("%d is",y);
else printf("%d is not",y);
printf(" a leap year");
}
103、以下程序是计算x,y,z三个数中值最小的。请在________内填入正确内容。
void main()
{
int x=4,y=5,z=8;
int u,v;
u=x<y?________;
v=u<z?________;
printf("%d",v);
}
104、设有变量定义:int a=5,c=4; 则(--a==++c)?--a:c++的值是________,此时c的存储单元的值为________。
105、执行以下的C语言程序段后,a=________,b=________,c=________。
int x=10,y=9;
int a,b,c;
a=(x--==y++)?x--:y++;
b=x++;
c=y;
106、设有int x=1,y=0; 则以下表达式的值为________。
x-->(y+x)?10:12.5>y++?'A':'Z'
107、设有int x=0,y=1;,则以下表达式的值为________。
x++*x--!='y'?8-4:y
108、若运行时输入:35/〈回车〉,则以下程序的运行结果是________。
void main()
{
float x,y;
char o;
double r;
scanf("%f %f %c",&x,&y,&o);
switch(o)
{
case '+':r=x+y;break;
case '-':r=x-y;break;
case '*':r=x*y;break;
case '/':r=x/y;break;
}
printf("%f",r);
}
109、根据以下嵌套的if语句所给条件,填写switch语句,使它完成相同的功能。
(假设mark的取值在1-100之间。)
if语句:
if(mark<60) k=1;
else if(mark<70) k=2;
else if(mark<80) k=3;
else if(mark<90) k=4;
else if(mark<=100) k=5;
switch语句:
switch(________)
{
________k=1; break;
case 6: k=2; break;
case 7: k=3; break;
case 8: k=4; break;
________k=5;
}
110、设有程序片段:
switch(grade)
{
case 'A': printf("85-100\n");
case 'B': printf("70-84\n");
case 'C': printf("60-69\n");
case 'D': printf("<60\n");
default: printf("error!\n");
}
若grade的值为'C',则输出结果是________。
111、以下程序段的运行结果是________。
int x=1,y=0;
switch(x)
{
case 1:
switch(y)
{
case 0: printf("**1**\n"); break;
case 1: printf("**2**\n"); break;
}
case 2: printf("**3**\n");
112、根据以下函数关系,对输入的每个x值,计算出相应的y值。请在程序的________内填入正确内容。
┏━━━━┯━━━━┓
┃ x │ y ┃
┠────┼────┨
┃x<0 │0 ┃
┠────┼────┨
┃0<=x<10 │x ┃
┠────┼────┨
┃10<=x<20│10 ┃
┠────┼────┨
┃20<=x<40│-0.5x+20┃
┗━━━━┷━━━━┛
void main()
{
int x,c,m;
float y;
scanf("%d",&x);
if(________) c=-1;
else c=________;
switch(c)
{
case -1: y=0; break;
case 0: y=x; break;
case 1: y=10; break;
case 2:
case 3: y=-0.5*x+20; break;
default: y=-2;
}
if(________) printf("y=%f",y);
else printf("error\n");
}
113、以下程序的运行结果是________。
void main()
{
int a=2,b=7,c=5;
switch(a>0)
{
case 1: switch(b<0)
{
case 1: printf("@"); break;
case 2: printf("!"); break;
}
case 0: switch(c==5)
{
case 0: printf("*"); break;
case 1: printf("#"); break;
default:printf("#"); break;
default: printf("&");
}
printf("\n");
}
114、请读程序:
#include <stdio.h>
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:
switch(y)
{
case 0: a++; break;
case 1: b++; break;
}
case 2:
a++; b++; break;
}
printf("a=%d,b=%d",a,b);
}
上面程序的运行结果是________。
115、假设奖金税率如下(a代表奖金,r代表税率)
a<500 r=0%
500<=a<1000 r=5%
1000<=a<2000 r=8%
2000<=a<3000 r=10%
3000<=a r=15%
以下程序对输入的一个奖金数,求税率和应交税款以及实得奖金数(扣除奖金税后)。题中r代表税率,t代表税款,b代表实得奖金数。请在________内填入正确内容。
void main()
{
float a,r,t,b;
int c;
scanf("%f",&a);
if(a>=3000) c=6;
else c=________;
switch(c)
{
case 0: r=0; break;
case 1: r=0.05; break;
case 2:
case 3: ________; break;
case 4:
case 5: r=0.1; break;
case 6: r=0.15; break;
}
t=a*r;
b=a-t;
printf("r=%f,t=%f,b=%f",r,t,b);
}
116、某个自动加油站有'a','b','c'三种汽油,单价分别为1.50,1.35,1.18(元/千克),也提供了“自己加”或“协助加”两个服务等级,这样用户可以得到5%或10%的优惠。本程序针对拥护输入加油量a,汽油品种b和服务类型c('f'--自动,'m'--自己,'e'--协助),输出应付款m。请在________内填入正确内容。
void main()
{
float a,r1,r2,m;
char b,c;
scanf("%f %c %c",&a,&b,&c);
switch(b)
{
case 'a': r1=1.5; break;
case 'b': ________; break;
case 'c': r1=1.18; break;
}
switch(c)
{
case 'f': r2=0; break;
case 'm': r2=0.05; break;
case ________: r2=0.1; break;
}
m=________;
printf("%f",m);
}
117、以下程序计算某年某月有几天。其中判别闰年的条件是:能被4整除但不能被100整除的年是闰年,能被400整除的年也是闰年。请在________内填入正确内容。
void main()
{
int yy,mm,len;
printf("year,month=");
scanf("%d %d",&yy,&mm);
switch(mm)
{
case 1: case 3: case 5: case 7:
case 8: case 10: case 12: ________; break;
case 4: case 6: case 9: case 11: len=30; break;
case 2:
if(yy%4==0 && yy%100!=0||yy%400==0) ________;
else ________;
break;
default: printf("input error");
break;
}
printf("the length of %d %d is %d\n",yy,mm,len);
}
118、以下程序用以计算y年m1月d1日与同年的m2月d2之间的天数(m2>=m1),并打印计算结果。若m1=m2且d1=d2则算1天。在闰年时,2月有29天。闰年的年号由以下方式确定:该年号能被4整除但不能被100整除,或者该年号能被400整除则是闰年。例如:输入1997,2,27,3,10〈回车〉时,输出为12。表明从1997年2月27日到3月10日共有12天。请在________内填入正确内容。
void main()
{
int y,m1,d1,m2,d2;
int i,d;
scanf("%d,%d,%d,%d,%d",&y,&m1,&d1,&m2,&d2);
y=(y%4==0________y%100!=0________y%400==0)?1:0;
d=0-d1;
for(i=m1;i<m2;i++)
switch(i)
{
case 1: case 3: case 5: case 7:
case 8: case 10: case 12:
d+=31;
break;
case 2: d=d+28+y; break;
case 4: case 6: case 9: case 11: ________;
}
printf("%d",d+d2+1);
}
三、编程题
119、编制程序要求输入整数a和b,若a*a+b*b大于100,则输出a*a+b*b百位以上的数字,否则输出两数之和。
120、试编程判断输入的正整数是否既是5又是7的整倍数。若是,则输出yes;否则输出no。
121、请编程序:根据以下函数关系,对输入的每个x值,计算出响应的y值。
┏━━━━┯━━━━┓
┃ x │ y ┃
┠────┼────┨
┃x<0 │0 ┃
┠────┼────┨
┃0<x<=10 │x ┃
┠────┼────┨
┃10<x<=20│10 ┃
┠────┼────┨
┃20<x<40 │-0.5x+20┃
┗━━━━┷━━━━┛
122、编程实现:输入一个整数,判断它能否被3,5,7整除,并输出以下信息之一:
(1)能同时被3,5,7整除;
(2)能被其中两数(要指出哪两个)整除;
(3)能被其中一个数(要指出哪一个)整除;
(4)不能被3,5,7任一个整除。
123、将以下程序段改用非嵌套的if语句实现。
int s,t,m;
t=(int)(s/10);
switch(t)
{
case 10: m=5; break;
case 9: m=4; break;
case 8: m=3; break;
case 7: m=2; break;
case 6: m=1; break;
default m=0;
}
124、用switch编程实现:
y=-1 (x<0)
y=0 (x=0)
y=1 (x>0)
125、将以下程序段改用嵌套的if语句实现。
int s,t,m;
t=(int)(s/10);
switch(t)
{
case 10: m=5; break;
case 9: m=4; break;
case 8: m=3; break;
case 7: m=2; break;
case 6: m=1; break;
default m=0;
}
126、请将以下语句改写成switch语句。
if((s>0)&&(s<=10))
if((s>=3)&&(s<=6)) x=2;
else if((s>1)||(s>8)) x=3;
else x=1;
else x=0;
127、编程实现以下功能:读入两个运算数(data1和data2)及一个运算符(op),计算表达式data1 op data2的值,其中op可为+,-,*,/(用switch语句实现)。
128、编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。设:90分以上为'A',80-89分为'B',70-79分为'D',60分以下为'E'(用switch语句实现)。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -