第四章
第4章小练习1-1 比大小
#include<stdio.h> #include<stdlib.h> //比大小 //有3个整数a,b,c,由键盘输入,输出其中最大的数(使用if-else语句) #include "stdio.h" int main(){ int a,b,c,temp,max; scanf("%d %d %d",&a,&b,&c); temp=(a>b)?a:b; max=(temp>c)?temp:c; printf("%d",max); return 0; }
第4章小练习1-2 求平方根
#include<stdio.h> #include<stdlib.h> //求平方根 //从键盘输入一个小于1000的正数 //要求输出它的平方根(如果平方根不是整数则输出其整数部分) int main(){ int i,k; scanf("%d",&i); k=sqrt(i); printf("%d",k); return 0; }
第4章小练习1-3 函数求解
#include<stdio.h> #include<stdlib.h> //函数求解 //编写一个C程序,输入x的值,输出y相应的值 int main(){ int x,y; scanf("%d",&x); y=0; if(x>0) y=1; else if(x <0) y=-1; printf("y=%d",y); return 0; }
第4章小练习1-4 计算成绩分数所在等级
#include<stdio.h> #include<stdlib.h> //计算成绩分数所在等级 //给出一百分制成绩,要求输出成绩等级’A’、’B’、’C’、’D’、’E’ //90分以上为‘A’,80~89为‘B’,70~79为‘C’,60~69为‘D’, 60分以下为‘E’ int main(){ float score; char grade; 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'; } printf("%c ",grade); return 0; }
第4章小练习1-5 按序输出数字
#include<stdio.h> #include<stdlib.h> //按序输出数字 //输入4个整数,要求按由小到大的顺序输出 int main(){ int t,a,b,c,d; scanf("%d %d %d %d",&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; d=t; } if (c>d) { t=c; c=d; d=t; } printf("%d %d %d %d",a,b,c,d); return 0; }
第4章小练习1-6 求塔建筑高度
#include<stdio.h> #include<stdlib.h> //输入任意点坐标,求该点的建筑高度 //有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1,这四个塔的高度为10米 //塔以外无建筑物。输入任意点坐标,求该点的建筑高度(塔外高度为0) int 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; 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-x2)+(y-y2)*(y-y2); d4=(x-x3)*(x-x3)+(y-y3)*(y-y3); if (d1>1 && d2>1 && d3>1 && d4>1) h=0; printf("%d",h); return 0; }
第4章小练习1-7 求方程实根
#include<stdio.h> #include<stdlib.h> //求方程实根 //编写程序,从键盘输入一个二元一次方程ax2+bx+c=0的三个参数a、b、c(均为整数) //求此方程的实根。如果方程有实根,则输出实根(精确到小数点后2位,较大实根在前) //如果没有实根,则输出没有实根的信息 int main(){ int a,b,c; double p,x1,x2; scanf("%d %d %d",&a,&b,&c); p=1.0*b*b-4.0*a*c; if(p>=0){ x1=(-b+sqrt(p))/2/a; x2=(-b-sqrt(p))/2/a; printf("实根为%.2lf,%.2lf",x1,x2); } else printf("无实根!"); }
第4章小练习1-8 按序输出数字
#include<stdio.h> #include<stdlib.h> //按序输出数字 //输入三个整数a,b,c,从小到大排列依次存入a,b,c中并输出 int main(){ int a,b,c,t; scanf("%d %d %d",&a,&b,&c); if(a>b){ t=a; a=b; b=t; } if(b>c){ t=b; b=c; c=t; } if(a>b){ t=a; a=b; b=t; } printf("%d %d %d",a,b,c); }
第4章小练习1-9 计算反应是当前温度T是否能够自发进行
#include<stdio.h> #include<stdlib.h> //计算反应在当前温度T下是否能够自发进行 //一个反应的吉布斯自由能变能够告诉我们该反应在当前温度T下是否能够自发进行。其计算公式为: int main(){ double g,h,t,s; scanf("%lf %lf %lf",&h,&t,&s); g=h-t*s; if(g<0) printf("Yes"); else printf("No"); }
第4章小练习1-10 计算输入序列是否递减
#include<stdio.h> #include<stdlib.h> //计算输入序列是否递减 //编写一个程序,从键盘依次读入5个实数,如果整个输入序列不递减,则输出YES,否则输出NO //(所谓输入序列不递减,指对于序列中连续的两个数n1和n2,满足n1<=n2) int main(){ double n1,n2,n3,n4,n5; scanf("%lf %lf %lf %lf %lf",&n1,&n2,&n3,&n4,&n5); if(n1<=n2||n2<=n3||n3<=n4||n4<=n5) printf("Yes"); else printf("No"); }
第4章小练习1-11 输出ISBN中所包含的出版地区的信息
#include<stdio.h> #include<stdlib.h> //输出ISBN中所包含的出版地区的信息 //每本书的封底都有一串号码,比如978-7-111-34081-2,它叫做"国际标准书号"(International Standard Book Number,缩写为ISBN)。它是全世界图书的编码,用来唯一代表一本书。目前ISBN是13位。从组成上看,13位的ISBN可以分为5个区: //第一区 EAN-UCC前缀 、第二区 组区号、第三区 出版者号、第四区 出版序号、第五区 校验码。 //其中第二区 组区号从第4位数字开始。这部分表明这本书是哪个国家或地区出版的。0或1表示英语国家,2表示法语国家,3表示德语国家,4表示日本,5表示俄语国家,6表示伊朗,7表示中国大陆,89表示韩国,957和986表示台湾,962和988表示香港,99936表示不丹。 //输入一个13位ISBN。输入格式:978-7-111-34081-2 //输入之后,输出ISBN中所包含的出版地区的信息。 //比如:组区号为7,则输出” China”。 //这里我们最低要求识别的地区包括: //0 English Region //1 English Region //2 French Region //4 Japan //7 China //89 South Korea //957 Taiwan //986 Taiwan //962 Hong Kong //988 Hong Kong int main(){ int i1,i2,i3,i4,i5; scanf("%d-%d-%d-%d-%d",&i1,&i2,&i3,&i4,&i5); switch(i2){ case 0:printf("English Region");break; case 1:printf("English Region");break; case 2:printf("French Region");break; case 4:printf("Japan");break; case 7:printf("China");break; case 89:printf("South Korea");break; case 957:printf("Taiwan");break; case 986:printf("Taiwan");break; case 962:printf("Hong Kong");break; case 988:printf("Hong Kong");break; } }
第4章小练习1-12 按代数值由小到大的顺序输出两个数
//按代数值由小到大的顺序输出两个数 //输入两个实数,按代数值由小到大的顺序输出这两个数(保留两位小数) #include<stdio.h> #include<stdlib.h> //按代数值由小到大的顺序输出两个数 //输入两个实数,按代数值由小到大的顺序输出这两个数(保留两位小数) int main(){ float a,b,t; scanf("%f %f",&a,&b); if(a>b) { t=a; a=b; b=t; } printf("%.2f %.2f",a,b); return 0; }
第4章小练习1-13 将大写字母转换为小写字母
#include<stdio.h> #include<stdlib.h> //将大写字母转换为小写字母 //输入一个字符,判别它是否为大写字母,如果是,转换成小写字母,如果不是,不转换 int main(){ char ch; scanf("%c",&ch); ch=(ch>='A' && ch <='Z') ? (ch+32) : ch; printf("%c",ch); return 0; }
第4章小练习2-1 数字操作(5位数逆序)
#include<stdio.h> #include<stdlib.h> //数字操作 //输入一个不多于5位的正整数,要求: //求出它是几位数 //分别输出每一位数字 //按逆序输出各位数字,例如原数为321,应输出123 int main(){ int num,indiv,ten,hundred,thousand,ten_thousand,place; 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",indiv); break; } return 0; }
第4章小练习2-2 求应发奖金总数
#include<stdio.h> #include<stdlib.h> //求应发奖金总数 //企业发放的奖金根据利润提成 //利润I低于或等于100000元的,奖金可提成10%;利润高与100000元,低于200000元(100000≤I ≤200000)时,低于100000元的部分按10%提成 //高于100000的部分,可提成7.5%;200000< I ≤400000时,低于200000元的部分仍按上述办法提成(下同) //高于200000元的部分按5%提成;400000< I ≤600000元时,高于400000元的部分按3%提成;600000< I ≤1000000时,高于600000元的部分按1.5%提成 //I>1000000时,超过1000000元的部分按1%提成。从键盘输入当月利润I,求应发奖金总数,保留两位小数 //用if语句编写程序 int main(){ int 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; scanf("%d",&i); if (i <=100000) bonus=i*0.1; else if (i <=200000) bonus=bon1+(i-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("%.2f",bonus); return 0; }
第4章小练习2-3 求小明同学在时间t1,t2内运动的距离
#include<stdio.h> #include<stdlib.h> //求小明同学在时间t1,t2内运动的距离 //大学里上午上课时间是八点钟。小明同学7点30分在食堂吃完饭后,以100m/min的速度步行去教室 //但是走了10分钟后小明一看手表发现手表上已经7点55分了(其实是手表坏了),小明感到很着急马上开始跑步,小明跑步的速度是150m/min //小明跑了10分钟后,听到手机在响,原来这是他设置的闹钟,现在才7点50!而距离教室也只有500m的距离了,所以小明又放慢脚步,以50m/min的速度刚好在8点到达教室,开始上课 //现在输入时间点t1、t2(t1、t2在7:30到8:00之间且t1 int main(){ int t1,t2,s; scanf("%*c%*c%d %*c%*c%d",&t1,&t2); if(t2==0) t2=60; if(t2 <=40) s=(t2-t1)*100; else if(t2 <=50){ if (t1 <=40) s=(40-t1)*100+(t2-40)*150; else s=(t2-t1)*150; } else if(t2 <=60){ if (t1 <=40) s=(40-t1)*100+1500+(t2-50)*50; else if(t1 <=50) s=(50-t1)*150+(t2-50)*50; else s=(t2-t1)*50; } printf("%d米",s); }