//1.6 编写一个程序,输入a、b、c三个值,输出其中最大值.
#include <stdio.h>
void main ()
{
int a,b,c,max;
printf ("Please input a,b,c:");
scanf ("%d,%d,%d",&a,&b,&c);
max=a;
if (b>max)
max=b;
if (c>max)
max=c;
printf ("%d\n",max);
}
/*
4.8设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积.
用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字.请编程序.
*/
#include <stdio.h>
void main()
{
double r,h,Cy,Sy,Sq,Vq,Vz;
r=1.5;
h=3;
Cy=2*3.14*r;
Sy=3.14*r*r;
Sq=4*Sy;
Vq=(4*3.14*r*r*r)/3;
Vz=Sq*h;
printf ("\nCy=%.2lf\nSy=%.2lf\nSq=%.2lf\nVq=%.2lf\nVz=%.2lf",Cy,Sy,Sq,Vq,Vz);
}
/*
4.9输入一个华氏温度,要求输出摄氏温度.公式为
c=5(F-32)/9
输出要求有文字说明,取位2小数.
*/
#include <stdio.h>
void main ()
{
double C,F;
printf("请输入华氏温度:");
scanf ("%lf",&F);
C=5*(F-32)/9;
printf ("输出摄氏温度:%.2lf",C);
}
/*
5.6 给一个百分制成绩,要求输出等级’A’、’B’、’C’、’D’、’E’.90分以上为’A’,80~90分为’B’,
70~79分为’C’,60分以下为’D’.
*/
#include <stdio.h>
void main ()
{
float score;
char grade;
printf("请输入一个分数:\n");
scanf("%f",&score);
if (score<=0||score>=100)
{
printf("请重新输入!");
scanf ("%f",&score);
}
switch (int(score/10))
{
case 9: grade='A';break;
case 8: grade='B';break;
case 7: grade='C';break;
case 6: grade='D';break;
case 5: grade='E';break;
case 4:
case 3:
case 2:
case 1:
case 0: grade='E';break;
}
printf("成绩是%5.1f,相应的等级是%c.\n",score,grade);
}
/*5.7 给定一个不多于5位的正整数,要求:① 求它是几位数;② 分别打印出每一位数字;③ 按逆序打印出各位数字.
例如原数为321,应输出123.
*/
#include <stdio.h>
main ()
{
int indiv,ten,hundred,thousant,ten_thousant,place;
long int i;
printf("请输入一个数(0~9999)");
scanf("%ld",&i);
if (i>9999) place=5;
else if (i>999) place=4;
else if (i>99) place=3;
else if (i>9) place=2;
else place=1;
printf("place=%d\n",place);
ten_thousant=i/10000;
thousant=i/1000%10;
hundred=i/100%10;
ten=i%100/10;
indiv=i%10;
switch (place)
{
case 5:
printf("%d,%d,%d,%d,%d\n",ten_thousant,thousant,hundred,ten,indiv);
printf("反序列为:\n");
printf("%d,%d,%d,%d,%d\n",indiv,ten,hundred,thousant,ten_thousant);
break;
case 4:
printf("%d,%d,%d,%d\n",thousant,hundred,ten,indiv);
printf("反序列为:\n");
printf("%d,%d,%d,%d\n",indiv,ten,hundred,thousant);
break;
case 3:
printf("%d,%d,%d\n",hundred,ten,indiv);
printf("反序列为:\n");
printf("%d,%d,%d\n",indiv,ten,hundred);
break;
case 2:
printf("%d,%d\n",ten,indiv);
printf("反序列为:\n");
printf("%d,%d\n",indiv,ten);
break;
case 1:
printf("%d\n",indiv);
printf("反序列为:\n");
printf("%d\n",indiv);
break;
}
}
/*
5.8 企业发放的奖金根据利润提成.利润I低于或等于10万元时,奖金可提成10% ;
利润高于10万元,低于20万元(100000<I≤200000)时,其中10万元按10%提成,高于10万元的部分,可提成7.5% ;
200000<I≤400000时,其中20万元仍按上述办法提成(下同),高于20万元的部分按5%提成;
400000<I≤600000时,高于40万元的部分按3%提成;600000〈I≤1000000时,高于60万的部分按1.5%提成;
I>1000000时,超过100万元的部分按1%提成.从键盘输入当月利润I,求应发放奖金总数.
要求:(1)用if语句编程序;(2)用switch语句编程序.
*/
#include <stdio.h>
void main ()
{
long i;
double bonus,bon1,bon2,bon4,bon6,bon10;
bon1=100000*0.1; //利润为10万元时所发放的奖金
bon2=bon1+100000*0.075; //利润为20万元时所发放的奖金
bon4=bon2+200000*0.05; //利润为40万元时所发放的奖金
bon6=bon4+200000*0.03; //利润为60万元时所发放的奖金
bon10=bon6+400000*0.015; //利润为100万元时所发放的奖金
printf("请输入当月利润i:");
scanf("%ld",&i);
if (i<=100000)
bonus=bon1*0.1; //利润在10万元以内按0.1提成奖金
else if (i<=200000)
bonus=bon1+(i-100000)*0.75; //利润在20万元以内按0.075提成奖金
else if (i<=400000)
bonus=bon2+(i-200000)*0.05; //利润在40万元以内按0.05提成奖金
else if (i<=600000)
bonus=bon4+(i-400000)*0.03; //利润在60万元以内按0.03提成奖金
else if (i<=1000000)
bonus=bon6+(i-600000)*0.015; //利润在100万元以内按0.015提成奖金
else if(i>1000000)
bonus=bon10+(i-1000000)*0.01; //利润在100万元以上按0.01提成奖金
printf("bonus=%10.2f",bonus);
getchar();
getchar();
}
方法2
#include <stdio.h>
void main ()
{
int branch;
long i;
double bonus,bon1,bon2,bon4,bon6,bon10;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
printf("输入当月利润i\n");
scanf("%ld",&i);
branch=(i/100000);
switch (branch)
{
case 0:
bonus=i*0.1;
break; //利润在10万元以内时的奖金
case 1:
bonus=bon1+(i-100000)*0.075;
break; //利润在10万元到20万元之间时的奖金
case 2:
case 3:
bonus=bon2+(i-200000)*0.05;
break; //利润在20万元到40万元之间时的奖金
case 4:
case 5:
bonus=bon4+(i-200000)*0.03;
break; //利润在40万元到60万元之间时的奖金
case 6:
case 7:
case 8:
case 9:
bonus=bon6+(i-400000)*0.015;
break; //利润在60万元到100万元之间时的奖金
case 10:
bonus=bon10+(i-1000000)*0.01;
break; //利润在100万元以上时的奖金
default:
printf("-------------%d----------\n",branch);
}
printf("奖金为: %.2f",bonus);
getchar();
getchar();
}
/*
5.10 有4个圆塔,圆心分别为(2,2)、(-2,2)、(2,-2)、(-2,-2),圆半径为1.这4个塔的高度分别为10m.
塔以外无建筑物.今输入任一点的坐标,求该点的建筑高度(塔外的高度为零).
*/
#include <stdio.h>
void main ()
{
int h=10;
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-x1)*(x-x1)+(y-y1)*(y-y1);
d2=(x+x2)*(x+x2)+(y-y2)*(y-y2);
d3=(x+x3)*(x+x3)+(y+y3)*(y+y3);
d4=(x-x4)*(x-x4)+(y+y4)*(y+y4);
if (d1>1&&d2>1&&d3>1&&d4>1) h=0;
else h=10;
printf("建筑物的高度为%d\n",h);
}
//6.1输入两个正整数m和n,求其最大公约数和最小公倍数.
#include <stdio.h>
void main ()
{
int m,n,m_cup,n_cup,rest;
printf("Please input two integer:\n");
scanf("%d,%d",&m,&n);
if (m>0&&n>0)
{
m_cup=m;
n_cup=n;
rest=m_cup%n_cup;
if (rest!=0)
{
m_cup=n_cup;
n_cup=rest;
rest=m_cup%n_cup;
}
printf ("Output greatest common divisor:%d\n",n_cup);
printf ("Output lease common multiple:%d\n",m*n/n_cup);
}
else printf ("Error!\n");
// getchar();
// getchar();
// scanf("%d",&n);
}
//6.2输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数.
#include <stdio.h>
void main ()
{
char c;
int letter=0,space=0,digit=0,others=0,s=0;
printf("请输入一行字符:");
scanf ("%c",&c);
while ((c=getchar())!='\n')
{
if (c>'a'&&c<'z'||c>'A'&&c<'Z')
letter++;
else if (c==' ')
space++;
else if (c>'0'&&c<'9')
digit++;
else
others++;
}
printf("letter=%d,space=%d,digit=%d,others=%d",letter,space,digit,others);
}
//6.4 求 ,(即求1!+2!+3!+4!+5!+…+20!)
#include <stdio.h>
void main ()
{
int n,i=1;
long sum=0,s=1;
printf ("Please input a integer:");
scanf("%d",&n);
while(i<=n)
{
s=s*i;
sum=sum+s;
i++;
}
printf("sum=%ld\n",sum);
}
//6.6打印出所有"水仙花数<