对应教材为谭浩强《C语言程序设计》,清览云题库又给出了其四、五章的课外习题

目录

  • 第四章
    • 第4章小练习1-1 比大小
    • 第4章小练习1-2 求平方根
    • 第4章小练习1-3 函数求解
    • 第4章小练习1-4 计算成绩分数所在等级
    • 第4章小练习1-5 按序输出数字
    • 第4章小练习1-6 求塔建筑高度
    • 第4章小练习1-7 求方程实根
    • 第4章小练习1-8 按序输出数字
    • 第4章小练习1-9 计算反应是当前温度T是否能够自发进行
    • 第4章小练习1-10 计算输入序列是否递减
    • 第4章小练习1-11 输出ISBN中所包含的出版地区的信息
    • 第4章小练习1-12 按代数值由小到大的顺序输出两个数
    • 第4章小练习1-13 将大写字母转换为小写字母
    • 第4章小练习2-1 数字操作(5位数逆序)
    • 第4章小练习2-2 求应发奖金总数
    • 第4章小练习2-3 求小明同学在时间t1,t2内运动的距离
  • 第五章
    • 第5章编程题简单-1 星座
    • 第5章编程题简单-2 九九乘法表
    • 第5章编程题简单-3 近似值
    • 第5章编程题简单-4 找出100-200之间不能被3整除的数
    • 第5章编程题简单-5 找出100-200之间的素数
    • 第5章编程题简单-6 韩信点兵
    • 第5章编程题中等-1 素数计算
    • 第5章编程题中等-2 求两数的最大公约数和最小公倍数
    • 第5章编程题中等-3 计算球在第10次落地时,共经过多少米,第10次反弹多高
    • 第5章编程题中等-4 计算选秀选手的最后得分
    • 第5章编程题中等-5 马克思鸡兔同笼
    • 第5章编程题较难-1 三天打鱼两天晒网
    • 第5章编程题较难-2 捕鱼
    • 第5章编程题较难-3 两面族
    • 第5章编程题较难-4 SIN函数曲线(未完成)

第四章

第4章小练习1-1 比大小

#include#include//比大小//有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#include //求平方根//从键盘输入一个小于1000的正数//要求输出它的平方根(如果平方根不是整数则输出其整数部分)int main(){int i,k;scanf("%d",&i);k=sqrt(i);printf("%d",k);return 0;}

第4章小练习1-3 函数求解

#include#include//函数求解//编写一个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#include//计算成绩分数所在等级//给出一百分制成绩,要求输出成绩等级’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#include//按序输出数字//输入4个整数,要求按由小到大的顺序输出int main(){intt,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#include//输入任意点坐标,求该点的建筑高度//有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1,这四个塔的高度为10米//塔以外无建筑物。输入任意点坐标,求该点的建筑高度(塔外高度为0)int main(){inth=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#include//求方程实根//编写程序,从键盘输入一个二元一次方程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);}elseprintf("无实根!");} 

第4章小练习1-8 按序输出数字

#include#include//按序输出数字//输入三个整数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#include//计算反应在当前温度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");elseprintf("No");} 

第4章小练习1-10 计算输入序列是否递减

#include#include//计算输入序列是否递减//编写一个程序,从键盘依次读入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");elseprintf("No");}

第4章小练习1-11 输出ISBN中所包含的出版地区的信息

#include#include//输出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#include//按代数值由小到大的顺序输出两个数//输入两个实数,按代数值由小到大的顺序输出这两个数(保留两位小数) 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#include//将大写字母转换为小写字母//输入一个字符,判别它是否为大写字母,如果是,转换成小写字母,如果不是,不转换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#include//数字操作//输入一个不多于5位的正整数,要求://求出它是几位数//分别输出每一位数字//按逆序输出各位数字,例如原数为321,应输出123intmain(){int num,indiv,ten,hundred,thousand,ten_thousand,place;scanf("%d",&num);if (num>9999)place=5;elseif (num>999)place=4;elseif (num>99)place=3;elseif (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#include//求应发奖金总数//企业发放的奖金根据利润提成//利润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;elsebonus=bon10+(i-1000000)*0.01;printf("%.2f",bonus);return 0;} 

第4章小练习2-3 求小明同学在时间t1,t2内运动的距离

#include#include//求小明同学在时间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之间且t1int 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;elses=(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;elses=(t2-t1)*50;}printf("%d米",s);} 

第五章

第5章编程题简单-1 星座

#include #include//计算星座////编写程序输入月份和日期,给出对应的星座。下面是星座计算表。//3.21-4.20 白羊4.21-5.20 金牛5.21-6.20 双子//6.21-7.22 巨蟹7.23-8.22 狮子8.23-9.22 处女//9.23-10.22天秤10.23-11.22 天蝎11.23-12.22 人马//12.23-1.20摩羯1.21-2.20 宝瓶2.21-3.20 双鱼int main(){int m=0,d=0,t=0;printf("计算星座,输入月份和日期\n"); scanf("%d%d",&m,&d); //输入月份和日期 printf("%d月%日的对应星座为",m,d);exchange(m,d);return 0;}void exchange(int m,int d){int t=0;t=m<7?21:23; //7月前为21,7月后为23if(d>=t) m++; // 在一个月的t号之后月份加一switch(m){case 2:printf("水瓶");break;case 3:printf("双鱼");break;case 4:printf("白羊");break;case 5:printf("金牛");break;case 6:printf("双子");break;case 7:printf("巨蟹");break;case 8:printf("狮子");break;case 9:printf("处女");break;case 10:printf("天秤");break;case 11:printf("天蝎");break;case 12:printf("人马");break;default:printf("摩羯"); //13月,与1月相同处理}return 0;}

第5章编程题简单-2 九九乘法表

#includeint main(){int i,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf("%d*%d=%d ",i,j,i*j);printf("\n");}return 0;}

第5章编程题简单-3 近似值

#include#include//近似值//编写程序利用公式计算下面公式的近似值,直到括号中最后一项的绝对值小于10-6次方为止int main(){int s=1;double pi=0,n=1,t=1;while (fabs(t)>1e-6)pi=pi+t, n=n+2, s=-s, t=s/n;pi=pi*4;printf("%lf\n",pi);return 0;} 

第5章编程题简单-4 找出100-200之间不能被3整除的数

#include//找出100-200之间的不能被3整除的数 int main(){int i;for(i=100;i<=200;i++){if(i%3!=0){printf("%d ",i);}}return 0;} 

第5章编程题简单-5 找出100-200之间的素数

#include#include//求100-200之间的全部素数 int main(){int n,k,i,m=0;for(n=101;n<=200;n=n+2){k=sqrt(n);for(i=2;i<=k;i++)if(n%i==0) break;if(i>=k+1){printf("%d ",n);m=m+1;}if(m%10==0) printf("\n");}printf("\n");return 0;} 

第5章编程题简单-6 韩信点兵

#include#include//韩信点兵//韩信有一队兵,他想知道有多少人,便让士兵排队报数://按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;//按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10//编程求韩信至少有多少兵?int main() {int i;for(i=1;; i++) {if(i%5==1&&i%6==5&&i%7==4&&i%11==10) {printf("%d",i);break;}}}

第5章编程题中等-1 素数计算

#include#include#include//素数计算//编写程序计算某区间内素数的个数cnt,并按所求素数的值从大到小的顺序,//再计算其间隔减、加之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数……的值sumint main(){int s=0,cnt=0,f=1,i,j,a,b;scanf("%d %d",&a,&b);for(i=b;i>=a;i--){ for(j=2;j<=sqrt(i);j++)if(i%j==0) break; if(j>sqrt(i)){cnt++;s=s+f*i;f=-f; }}printf("%d %d",cnt,s);return 0;}

第5章编程题中等-2 求两数的最大公约数和最小公倍数

#include#include //求两数的最大公约数和最小公倍数//输入两个正整数m和n,求其最大公约数和最小公倍数int main(){int p,r,n,m,temp;scanf("%d %d",&n,&m);if (n<m) {temp=n;n=m;m=temp;}p=n*m;while(m!=0) {r=n%m;n=m;m=r;}printf("最大公约数:%d\n",n);printf("最小公倍数:%d",p/n);return 0;}

第5章编程题中等-3 计算球在第10次落地时,共经过多少米,第10次反弹多高

#include#include //计算球在第10次落地时,共经过多少米,第10次反弹多高//一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹//求它在第10次落地时,共经过多少米,第10次反弹多高int main(){double sn=100,hn=sn/2;int n;for (n=2; n <=10; n++) {sn=sn+2*hn; hn=hn/2;}printf("第10次落地时共经过%.6lf米\n",sn);printf("第10次反弹%.6lf米\n",hn);return 0;}

第5章编程题中等-4 计算选秀选手的最后得分

#include#include//计算选秀选手的最后得分//在选秀节目中有10个评委为参赛选手打分,分数为1到100分,选手最后的得分为去掉一个最高分和去掉一个最低分后其余8个分数的平均分//编写程序,输入10个分数,输出选手的最后得分int main(){int i=1,x,min=100,max=0,s=0;while(i<=10){scanf("%d",&x);min=x<min?x:min;max=x>max?x:max;s=s+x;i++;}printf("%.2lf",(s-min-max)/8.0);}

第5章编程题中等-5 马克思鸡兔同笼

#include#include//趣味数学题//马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令//问男人、女人和小孩各有几人?输出所有的可能结果int main(){int man,woman;for(man=1; man <=17; man++)for(woman=1; woman <=25; woman++) {if(50 == man*3 + woman*2 +(30-man-woman) )printf("man:%d,woman:%d,child:%d\n",man,woman,30-man-woman);}}

第5章编程题较难-1 三天打鱼两天晒网

#include#includeint main(){int y,m,d,days=0;scanf("%d/%d/%d",&y,&m,&d);days=365*(y-2000);//计算整年的天数int i=0; for (i=2000;i <y;i++)//修正闰年的366天if((i%400==0)||((i%100!=0)&&(i%4==0)))days++;for (i=1;i <m;i++){//计算整月的天数switch (i){case 1:case 3:case 5:case 7:case 8:case 10:case 12:days=days+31;break;case 4:case 6:case 9:case 11:days=days+30;break;case 2:days=days+28;if((y%400==0)||((y%100!=0)&&(y%4==0))) days++;break;}}days=days+d;//计算当月已经过去的天数if (days%5==1||days%5==2||days%5==3)printf("fishing\n");elseprintf("sleeping\n");return 0;} 

第5章编程题较难-2 捕鱼

#include#include//捕鱼//A、B、C、D、E五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉//到了早上,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份//B第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份//C、D、E依次醒来,也按同样的方法拿走鱼。编写程序求他们合伙至少捕了多少条鱼?int main(){int s1,s2,s3,s4,s5;for (s5=16;;s5=s5+5){int cnt=0;s4=(s5-1)*4/5;if ((s4-1)%5==0) {s3=(s4-1)*4/5;cnt++;}else continue;if ((s3-1)%5==0){s2=(s3-1)*4/5;cnt++;} else continue;if ((s2-1)%5==0) {s1=(s2-1)*4/5;cnt++;}else continue;if ((s1-1)%5==0) {cnt++;}else continue;if (cnt==4) {printf("%d\n",s5);break;}}return 0;}

第5章编程题较难-3 两面族

#include#include //两面族//两面族是荒岛上的一个新民族,他们的特点是说话真一句假一句且真假交替//如果第一句为真,则第二句是假的;如果第一句为假的,则第二句就是真的,但是第一句是真是假没有规律。迷语博士遇到三个人,知道他们分别来自三个不同的民族:诚实族、说谎族和两面族//三人并肩站在博士前面,博士问左边的人:“中间的人是什么族的?”,左边的人回答:“诚实族的”。博士问中间的人:“你是什么族的?”,中间的人回答:“两面族的”。博士问右边的人:“中间的人究竟是什么族的?”,右边的人回答:“说谎族的”//编写程序判断这三个人是哪个民族的?int main(){int s1,s2,s3,flag=0;//0-诚实族、1-说谎族和2-两面族for (s1=0;s1<=2;s1++){for (s2=0;s2 <=2;s2++){for (s3=0;s3 <=2;s3++){int ss1=s1,ss2=s2,ss3=s3;if (ss1==0) ss2=0;if ((ss1==1)&&(ss2==0)) ss3=1;if (ss3==0) ss2=1;if(ss1!=ss2&&ss2!=ss3&&ss1!=ss3){printf("%d %d %d",ss1,ss2,ss3);flag=1;break;}}if (flag==1) break;}if (flag==1) break;}return 0;}

第5章编程题较难-4 SIN函数曲线(未完成)

#include#include //SIN函数曲线//编写程序在屏幕上打印如下的SIN函数曲线int main(){printf("**********************************************************\n");int i=0;for (i=0;i <=330;i=i+15){double t=sin(2*3.1415926*i/360);printf("sin(%3d)=%+.4lf",i,t);if (t>0){for (i=0;i <24;i++)printf(" ");printf("*");for (i=0;i <t*16;i++)printf(" ");printf("*");}if (t <0){for (i=0;i <24+t*16;i++)printf(" ");printf("*");for (i=0;i <-t*16-2;i++)printf(" ");printf("*");}if (t==0) {for (i=0;i <24;i++)printf(" ");printf("*");}printf("\n");}return 0;}