完美WORD格式
可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
【分析与提示】请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 参考代码: main() {
long int i;
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf(\
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; else if(i<=200000)
bonus=bonus1+(i-100000)*0.075; else if(i<=400000)
bonus=bonus2+(i-200000)*0.05; else if(i<=600000)
bonus=bonus4+(i-400000)*0.03; else if(i<=1000000)
bonus=bonus6+(i-600000)*0.015; else
bonus=bonus10+(i-1000000)*0.01; printf(\}
3.由键盘输入三个整数a、b、c,用条件运算符求出其中最大值和最小值。
【分析与提示】首先比较输入的a,b 的大小,并把大数装入max, 小数装入min 中,然后再与c 比较,若max 小于c,则把c 赋予max;如果c 小于min,则把c 赋予min。因此max 内总是最大数,而min 内总是最小数。最后输出max 和min 的值即可。
参考代码: main( ) {
int a,b,c,max,min;
scanf(\max=a>b?a:b ; max=max>c?max:c; min=a
printf(\最大值为:%d,最小值为:%d\\n\}
专业整理 知识分享
完美WORD格式
4.有一函数:
x (x<1) y= 2x-1 (1≤x<10)
3x-11 (x≥10)
编一程序,输入一个x值,输出y值。
【分析与提示】本题考查if语句的嵌套,应当注意if与else的配对关系。从最内层开始,else总是与它上面最近的(未曾配对的)if 配对。
参考代码:
main( ) {
float x,y;
printf(\请输入x的值 \\n\scanf(\if(x<1) y=x; else
if(x>=10) y=3*x-11; else y=2*x-1;
printf(\}
5.从键盘上输入星期号,并显示该日期的英文名字。 【分析与提示】本实例知识点:switch语句。
switch语句的控制流程是:首先计算表达式的值,然后依次与每一个case中的常量值进行比较,一旦发现了某个能够匹配的值,就执行该case后面的语句组,直到遇到break语句为止。如果表达式的值与所有case中的常量都不匹配,则执行default后面的语句组。
参考代码:
main( ) { int xqh; char ywm;
printf(\请输入星期号(1~7):\\n\scanf(\switch(xqh)
{ case 1: printf(\ case 2: printf(\ case 3: printf(\ case 4: printf(\ case 5: printf(\ case 6: printf(\case 7: printf(\ default:printf(\}
}
6.某市不同车牌的出租车3公里的起步价和计费分别为:夏利7元/公里,3公里以外
专业整理 知识分享
完美WORD格式
2.1元/公里;富康8元/公里,3公里以外2.4元/公里;桑塔纳9元,3公里以外2.7元/公里。编程:从键盘输入乘车的车型及行车公里数,输出应付车资。
【分析与提示】可设三个变量,分别表示乘车的车型、行车公里数和应付车资,根据乘车的车型和行车公里数,计算出应付的车资。
参考代码:
main( ) {
int cx; /*定义乘车的车型变量cx */
float gl, cf; /*定义行车公里数变量gl、应付车资变量cf */ printf(\夏利\\n \\t2-富康\\n \\t3-桑塔纳\\n\printf(\请输入车型(1-3): \scanf(\
printf(\请输入行车公里数: \scanf(\switch(cx)
{ case 1: if(gl<=3) cf=7.0;
else cf=7+(gl-3)*2.1 ;break;
case 2: if(gl<=3) cf=8.0;
else cf=8+(gl-3)*2.4 ;break;
case 3: if(gl<=3) cf=9.0;
else cf=9+(gl-3)*2.7 ;
}
printf(\应付车资为%.1f\\n\
}
7.给一个不多于5位的正整数,要求:①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字。如原数为12345,则逆序为54321。
【分析与提示】本题的思路是:设5个变量,分别代表个位、十位、百位、千位和万位。从个位起,依次将各个位取出来,按取出的顺序组合成新的数据,并记录当前取出的数字的个数。
参考代码:
#include \main( ) {
unsigned x,m,n=0,w=0;
unsigned ge=0,shi=0,bai=0,qian=0,wan=0; printf(\请输入一个正整数\scanf(\m=x;
ge=m; m=m/10; w=1; n=ge; if(m)
{shi=m; m=m/10; w=2; n=n*10+shi; if(m)
{bai=m; m=m/10; w=3; n=n*10+bai;
专业整理 知识分享
完美WORD格式
if(m)
{qian=m; m=m/10; w=4; n=n*10+qian; if(m)
{wan=m; w=5; n=n*10+wan;} } } }
printf(\为%u位数\printf(\正整数的原序为:%u\printf(\正整数的逆序为:%u\
}
注:当该程序输入一个较大的5位数时,输出结果就不正确了,思考为什么?动手试一下怎样修改该程序。
第5章 循环结构程序设计
一、填空题
1.下面程序的功能是用“辗转相除法”求两个正整数的最大公约数。请填空。 #include
int r,m,n;
scanf(\,&m,&n); if(m 【分析与提示】辗转相除法:两数相除,若不能整除,则以除数作为被除数,余数作为除数,继续相除,直到余数为0时,当前除数就是最大公约数。 【解答】(1)r=m;m=n;n=r; (2)r=m%n; 二.运行程序写结果 1.下列程序运行的运行结果为 。 #include int y=10; do {y--; }while(--y); printf(\,y--); } 【分析与提示】注意 y-- 与y--的运算顺序。 【解答】 0 专业整理 知识分享 完美WORD格式 2.下列程序运行的运行结果为 。 main() { int x=3,y=6,z=2; while(x++!=(y-=1)) { z+=1; if(y printf(“%d,%d,%d\\n”,x,y,z); } } 【解答】4,5,3 3.下列程序运行的运行结果为 。 main() { int a=1,b=0; for( ;a<3 ;a++) switch(a++) { case 1:b--; case 2:b++; case 3:b+=3;break; } printf(“%d\\n”,b); } 【解答】3 4.下列程序运行的运行结果为 。 main() { int x=10,y=10,i; for(i=0;i<2 ;y=i++) printf(“MM”,x--,y); } 【解答】10 10 9 0 三. 编程题 1.求s=1+2+4+8+…+64的值。 【分析与提示】本题为数学项求和问题,数学项间的关系为:第n项的值为第n-1项的值2倍。参考代码: main( ) { int i,s=0,t=1; while(t<=64) { s=s+t; 专业整理 知识分享