题目:
1. 有3个整数a,b,c,由键盘输入,输出其中最大的数。
5.从键盘输入一个小于1000的正数,要求输出它的平方根(如平方根不是整数,则取整数部分)。要求在输入数据后先对其进行检查是否为小于1000的正数。若不是要求重新输入。
解:(1)提醒一次
(2)提醒多次
6.有一个函数
X (x<1)
Y= 2x-1 (1<=x<10)
3x-11 (x>=100)
写程序,输出x的值,输出y对应的值。
7.分析以下程序
-1 (x<0)
y= 0 (x=0)
1 (x>0)
8.给出一百分制成绩,要求分出‘A’、‘B’、‘C’、‘D’、‘E’。90以上为‘A’,80~89为‘B’,70~79为’C’,60~69为‘D’,60以下为‘E’。
9.给一个不多于5位的正整数,要求:
①求出它是几位数;
②分别输出每一位数字;
③按逆序输出各位数字,例如原数为321,应输出123.
10.企业发放的奖金根据利润提成。利润 I低于或等于 100 000 元的,奖金可提成 10%;利润高于 100 000 元,低于 200 000 元(100 000<1≤200 000)时,低于 100 000 元的部分按10%
提成,高于 100 000 元的部分,可提成7.5%;200 000<1≤400 000 时,低于 200 000 元的部分仍按上述办法提成(下同)。高于 200 000 元的部分按 5%提成;400 000<1≤600 000 元时,高于400 000 元的部分按 3%提成;600 000<1≤1 000 000 时,高于 600 000 元的部分按 1.5%提成;
I>1 000 000 时,超过 1 000 000 元的部分按 1%提成。从键盘输人当月利润 I,求应发奖金总数。
要求:
(1)用if 语句编程序。
(2)用 switch 语句编程序。
11.输入4个整数,要求有小到大的顺序输出。
12.有4个塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆的半径为1,这四个塔的高度为10米,塔外无建筑物。今输入一点的坐标,求该点的建筑物高度(塔外的高度为零)
代码:
1. 方法一:
#include <stdio.h>
int main()
{int a,b,c;
printf("请输入3个整数:");
scanf("%d,%d%,d",&a,&b,&c);
if(a<b)
if(b<c)
printf("max=%d,\n",c);
else
printf("max=%d\n",b);
else if(a<c)
printf("max=%d\n",c);
else
printf("max=%d",a);
return 0;
}
方法二:
#include <stdio.h>
int main()
{int a,b,c,temp,max;
printf("请输入3个整数:");
scanf("%d,%d%,d",&a,&b,&c);
temp=(a>b)? a:b; //将a,b中的大者存入temp中
max=(temp>c)? temp:c; //将a和b中的大者与c比较,取最大者
printf("三个整数的最大数是%d",max);
return 0;
}
5. 解:
(1)提醒一次
#include <stdio.h>
#include <math.h>
#define M 1000
int main()
{int i,k;
printf("请输入一个小于%d的整数 i:",M);
scanf("%d",&i);
if (i>M)
{printf("输入的数据不符合要求,请重新输入一个小于%d的整数i:",M);
scanf("%d",&i);
}
k=sqrt(i);
printf("%d的平方根的整数部分是%d\n",i,k);
return 0;
}
(2)多次提醒
#include <stdio.h>
#include <math.h>
#define M 1000
int main()
{int i,k;
printf("请输入一个小于%d的整数 i:",M);
scanf("%d",&i);
while (i>M)
{printf("输入的数据不符合要求,请重新输入一个小于%d的整数i:",M);
scanf("%d",&i);
}
k=sqrt(i);
printf("%d的平方根的整数部分是%d\n",i,k);
return 0;
}
6.
#include <stdio.h>
int main()
{int x,y;
printf("输入x:");
scanf("%d",&x);
if (x<1) //x<1
{
y=x;
printf("x=%d,y=x=%d\n",x,y);
}
else if(x<10) //1=<x<10
{y=2*x-1;
printf("x=%d,y=2*x-1=%d\n",x,y);
}
else //x>=10
{ y=3*x-11;
printf("x=%d,y=3*x-11=%d\n",x,y);
}
return 0;
}
X=-1;
X=20;
7.分析以下程序
-1 (x<0)
y= 0 (x=0)
1 (x>0)
(1)
#include <stdio.h>
int main()
{
int x,y;
printf("enter x:");
scanf("%d",&x);
y=-1;
if(x!=0)
if(x>0)
y=1;
else
y=0;
printf("x=%d,y=%d\n",x,y);
return 0;
}
上面程序不能实现题目要求。如果x<0,则输出y=0.而题目要求x<0,y=-1。Else与if配对关系中第9行if语句配对,而不与第8行语句配对。
(2)
#include <stdio.h>
int main()
{
int x,y;
printf("enter x:");
scanf("%d",&x);
y=0;
if(x>=0)
if(x>0)
y=1;
else
y=-1;
printf("x=%d,y=%d\n",x,y);
return 0;
}
上面程序不能实现题目要求。如果x<0,则y=0。Else语句和第9行内嵌的if语句配对,而不是第8行的if语句配对。
8.
#include <stdio.h>
int main()
{float score;
char grade;
printf("请输入学生成绩:");
scanf("%f",&score);
while (score>100||score<0)
{printf("\n 输入有误,请重输");
scanf("%f",&score);
}
switch((int)(score/10))
{case 10:
case 9:grade='A';break;
case 8:grade='B';break;
case 7:grade='C';break;
case 6:grade='D';break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:grade='E';break;
}
printf("成绩是%5.1f,相应的等级是%c\n",score,grade);
return 0;
}
9.
#include <stdio.h>
#include <math.h>
int main()
{
int num,indiv,ten,hundred,thousand,ten_thousand,place;
//分别代表个位、十位、百位、千位、万位和位数
printf("请输入一个整数(0~99999):");
scanf("%d",&num);
if (num>9999)
place=5;
else if (num>999)
place=4;
else if (num>99)
place=3;
else if (num>9)
place=2;
else
place=1;
printf("位数:%d\n",place);
printf("每位数字是:");
ten_thousand=num/10000;
thousand=(int)(num-ten_thousand*10000)/1000;
hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;
ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;
indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);
switch(place)
{case 5:printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);
printf("\n反序数字为:");
printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);
break;
case 4:printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);
printf("\n反序数字为:");
printf("%d%d%d%d\n",indiv,ten,hundred,thousand);
break;
case 3:printf("%d,%d,%d",hundred,ten,indiv);
printf("\n反序数字为:");
printf("%d%d%d\n",indiv,ten,hundred);
break;
case 2:printf("%d,%d",ten,indiv);
printf("\n反序数字为:");
printf("%d%d\n",indiv,ten);
break;
case 1:printf("%d",indiv);
printf("\n反序数字为:");
printf("%d\n",indiv);
break;
}
return 0;
}
10. (1)解:
#include <stdio.h>
int main()
{
int i;
double bonus,bon1,bon2,bon4,bon6,bon10;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+100000*0.05;
bon6=bon4+100000*0.03;
bon10=bon6+400000*0.015;
printf("请输入利润i:");
scanf("%d",&i);
if (i<=100000)
bonus=i*0.1;
else if(i<=200000)
bonus=bon1+(1-100000)*0.075;
else if(i<=400000)
bonus=bon2+(i-200000)*0.05;
else if(i<=600000)
bonus=bon4+(i-400000)*0.03;
else if(i<=1000000)
bonus=bon6+(i-600000)*0.015;
else
bonus=bon10+(i-1000000)*0.01;
printf("奖金是:%10.2f\n",bonus);
return 0;
}
②用if语句
#include <stdio.h>
int main()
{
int i;
double bonus,bon1,bon2,bon4,bon6,bon10;
int branch;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+100000*0.05;
bon6=bon4+100000*0.03;
bon10=bon6+400000*0.015;
printf("请输入利润i:");
scanf("%d",&i);
branch=i/100000;
if (branch>10) branch=10;
switch(branch)
{case 0:bonus=i*0.1;break;
case 1:bonus=bon1+(i-100000)*0.075;break;
case 2:
case 3:bonus=bon2+(i-200000)*0.05;break;
case 4:
case 5:bonus=bon4+(i-400000)*0.03;break;
case 6:
case 7:
case 8:
case 9:bonus=bon6+(i-600000)*0.015;break;
case 10:bonus=bon10+(i-1000000)*0.01;
}
printf("奖金是%10.2f\n",bonus);
return 0;
}
11.输入4个整数,要求有小到大的顺序输出。
解:
#include <stdio.h>
int main()
{
int t,a,b,c,d;
printf("请输入4个数:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(a>d)
{t=a;a=d;d=t;}
if(b>c)
{t=b;b=c;c=t;}
if(b>d)
{t=b;b=d;c=t;}
if(c>d)
{t=c;d=c;c=t;}
printf("排列结果如下: \n");
printf("%d %d %d %d \n" ,a,b,c,d);
return 0;
}
12.
#include <stdio.h>
int main()
{
int h;
float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;
printf("请输入一个点的坐标(x,y):");
scanf("%f,%f",&x,&y);
d1=(x-x4)*(x-x4)+(y-y4)*(y-y4); //求该点到各中心点距离
d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);
d3=(x-x2)*(x-x4)+(y-y4)*(y-y4);
d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);
if(d1>1 && d2>1 && d3>1 && d4>1) h=0; //判断该点是否在塔外
printf("该点的高度为%d\n",h);
return 0;
}