C语言作业的题与答案12(内附详细易懂解析题目与代码充足的大合集)

5.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
第10次落地时,共经过多少米?第10次反弹多高?
理解不同,答案不同:
(1)自己的理解(碰到算一次)
#include <stdio.h>
int main()
{float h=100;//变量最好要有意义 ,便于思考,寻找(HTML中也 一样)
int n=2;
float zlc=100;
printf("第1次时经过的路程为100\n");
do{ h=h/2;printf("第%d次时经过的路程为%f\n",n,h);zlc=zlc+h;
n++;
}//a++等的式子一般要在这位置
//自己演示 一下程序,从而知其错误与知如何做。 心中 把循环语句画一个圈的去想 ,去想一下运行的效果 (方法)
while(n<=10); printf("第10次时经过的总路程为%f\n",zlc);printf("第10次反弹高度为%f\n",h);
}
(2)官方的标准答案理解(碰到且反弹算一次)
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
谭浩强教授版《C程序设计》(第二版)P120 6.9 一球从100米高度自由落下,每次落地后反跳回原高度的一半;
再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
#include<stdio.h>
int main()
{
float h=100,s=0;
int i;
for(i=1;i<=10;i++)
{
s=s+h+h/2;printf("第%d次s=%f\n",i,s);
h=h/2;
}
printf("第10次落地时,共经过%f米。\n",s);
printf("第10次反弹%f米。\n",h);
return 0;
}
《C程序设计题解与上机指导》(第二版):
#include<stdio.h>
int main()
{
float s=100,h=50;
int i;
for(i=2;i<=10;i++)
{
s=s+2*h;printf("第%d次通过的路程为:%f\n",i,s);
h=h/2;
}
printf("%f %f",s,h);
return 0;
}
#include <stdio.h>
int main()
{int age=1;
int n=1 ;
float x;
int he=0;
do{
printf("请输入第%d学生的年龄\n",n);
scanf ("%d",&age) ;
printf("第%d学生的年龄为%d\n",n,age);
he=he+age;
x=he/5 ;//不写
n++;
}
while(n<=5);printf("%d个学生的总年龄为%d\n",(n-1),he);printf("%d个学生的平均年龄为%f\n",(n-1),x);// printf("%d个学生的平均年龄为%f\n",(n-1),he/(n-1));
}
#include <stdio.h>
int main()
{printf("请输入班级总学生人数\n");
int n=1;
int ls;
float zf=0;
scanf ("%d",&ls) ;
if(n>0){
while(n<=ls){
printf("请输入第%d个学生成绩\n",n);
int cj;
scanf ("%d",&cj) ;
printf("第%d个学生成绩为%d\n",n,cj);
zf=zf+cj;
n++;
}
printf("%d个学生的总成绩为%f\n,平均成绩为%f\n",(n-1),zf,zf/(n-1));}
else{printf("学生成绩不为负数") ;
}
}
#include <stdio.h>
int main()
{
int n=1;
int a=80000;
do{
a=a+a*0.25;
n++;
}
while(a<=280000);
printf("第%d年达280000人",n);
}
#include <stdio.h>
int main()
{
int n=1;
int a=3000;
do{
a=a+a*0.05;
n++;
}
while(a<=5000);
printf("第%d年达5000元",n);
}
山上有一口缸可以装50升水,现在有15升水.
老和尚叫小和尚下山挑水,每次可以挑5升.
问:小和尚要挑几次水才可以把水港挑满
#include <stdio.h>
int main()
{
int n=0;
int a=15;
do{
a=a+5;
n++;
}
while(a<=50);
printf("第%d次水才可以把水港挑满",n-1);
}
计算2000年的1月1到2008年的1月1日之间相隔有多少天
#include <stdio.h>
int main()
{
int n=2000;
int a=0;
do{if(n%4==0&&n%100!=0){a=a+365;
}
if(n%400==0){a=a+366;
}
n++;
}
while(n<=2008);
printf("2000年的1月1到2008年的1月1日之间相隔有%d天",a);
}
计算2008年的1月1日,到2008年的9月1日相隔有多少天
#include <stdio.h>
int main()
{
int n=1;
int a=0;
do{if(n==1){a=a+31;
}
else if(n==3){a=a+31;
}else if(n==5){a=a+31;
}else if(n==7){a=a+31;
}else if(n==8){a=a+31;
}else if(n==10){a=a+31;
}else if(n==12){a=a+31;
}else if(n==2){a=a+28;
}
else if(n==2){a=a+28;
}
else if(n==4){a=a+28;
}
else if(n==6){a=a+28;
}
else if(n==9){a=a+28;
}
n++;
}
while(n<=9);
printf("2008年的1月1日,到2008年的9月1日相隔有%d天",a);
}
7、计算2000年的1月1到2008年的1月1日之间相隔有多少天。(提示:平年有365天,润年有366天,循环从2000年到2008年结束)
public class four {
public static void main(String []args){
int a=0;
int sum =0;
for(int i=2000;i<2008;i++){
if(i%400==0||(i%4==0&&i%100==0)){
a=366;
}else{
a=365;
}
sum=sum+a;
}
System.out.println(sum);
}
}
8、计算2008年的1月1日,到2008年的9月1日相隔有多少天。(提示:如果是润年的2月就有29天,
平年的2月有28天。1、3、5、7、8、10、12月都有31天,4、6、9、11月都有30天)
public class four {
public static void main(String []args){
int a=1;
int sum =0;
while(a<9){
switch(a){
case 4:
case 6:
case 9:
case 11:
sum=sum+30;break;
case 2:
sum=sum+29;break;
default:
sum=sum+31;break;
}
a++;
}
System.out.println("2008年的1月1日,到2008年的9月1日相隔有"+sum+"天");
}
}
9、计算2000年的1月1日到2008年的9月1日相隔多少天
public class four {
public static void main(String []args){
int a=1,b=0;
int sum =0;
for(int i=2000;i<2008;i++){
if(i%400==0||(i%4==0&&i%100==0)){
b=366;
}else{
b=365;
}
sum=sum+b;
}
while(a<9){
switch(a){
case 4:
case 6:
case 9:
case 11:
sum=sum+30;break;
case 2:
sum=sum+29;break;
default:
sum=sum+31;break;
}
a++;
}
System.out.println("2000年的1月1日,到2008年的9月1日相隔有"+sum+"天");
}
}
苦练半年,眼看大赛在即,
每彩排一次,就问导演:“结果满意么?”,如果回答“y”
以后就不用彩排了,不满意的话每天都要彩排,
直到现场表现让她满意为止!
#include <stdio.h>
int main()
{char a;
int n;
do{ printf("结果满意么??y满意,以后就不用彩排了 其他字符 不满意,每天都要彩排");
scanf("%c",&a) ;
}
while(a!='y');
printf("满意,以后就不用彩排了");
}
4.让计算机随机产生10个0到2之间的数,
如果产生的是0就输出“生成了一只白猪,我好怕怕”,
如果产生的是1就输出“生成了一只黑猪,我喜欢”
如果产生的是2就输出“生成了一只红猪,有下酒菜了”。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand((int)time(0));
float a,b,c,d,e,f,g,h,i,j;
a=rand()%2;
b=rand()%2;
c=rand()%2;
d=rand()%2;
e=rand()%2;
f=rand()%2;
g=rand()%2;
h=rand()%2;
i=rand()%2;
j=rand()%2;
printf("%f",a);
if(a==0){
printf("生成了一只白猪,我好怕怕 ");}
else if(a==1){
printf("生成了一只黑猪,我喜欢");}
else if(a==2){
printf("生成了一只红猪,有下酒菜了 ");}
printf("%f",b);
if(b==0){
printf("生成了一只白猪,我好怕怕 ");}
else if(b==1){
printf("生成了一只黑猪,我喜欢");}
else if(b==2){
printf("生成了一只红猪,有下酒菜了 ");}
printf("%f",c);
if(c==0){
printf("生成了一只白猪,我好怕怕 ");}
else if(c==1){
printf("生成了一只黑猪,我喜欢");}
else if(c==2){
printf("生成了一只红猪,有下酒菜了 ");}
printf("%f",d);
if(d==0){
printf("生成了一只白猪,我好怕怕 ");}
else if(d==1){
printf("生成了一只黑猪,我喜欢");}
else if(d==2){
printf("生成了一只红猪,有下酒菜了 ");}
printf("%f",e);
if(e==0){
printf("生成了一只白猪,我好怕怕 ");}
else if(e==1){
printf("生成了一只黑猪,我喜欢");}
else if(e==2){
printf("生成了一只红猪,有下酒菜了 ");}
printf("%f",f);
if(f==0){
printf("生成了一只白猪,我好怕怕 ");}
else if(f==1){
printf("生成了一只黑猪,我喜欢");}
else if(f==2){
printf("生成了一只红猪,有下酒菜了 ");}
printf("%f",g);
if(g==0){
printf("生成了一只白猪,我好怕怕 ");}
else if(g==1){
printf("生成了一只黑猪,我喜欢");}
else if(g==2){
printf("生成了一只红猪,有下酒菜了 ");}
printf("%f",h);
if(h==0){
printf("生成了一只白猪,我好怕怕 ");}
else if(h==1){
printf("生成了一只黑猪,我喜欢");}
else if(h==2){
printf("生成了一只红猪,有下酒菜了 ");}
printf("%f",i);
if(i==0){
printf("生成了一只白猪,我好怕怕 ");}
else if(i==1){
printf("生成了一只黑猪,我喜欢");}
else if(i==2){
printf("生成了一只红猪,有下酒菜了 ");}
printf("%f",j);
if(j==0){
printf("生成了一只白猪,我好怕怕 ");}
else if(j==1){
printf("生成了一只黑猪,我喜欢");}
else if(j==2){
printf("生成了一只红猪,有下酒菜了 ");}
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand((int)time(0));
double a;
a=rand()%3+0;
int n=1;
while(n<=10){printf("%f ",a);if(a==0){
printf("生成了一只白猪,我好怕怕 ");}
else if(a==1){
printf("生成了一只黑猪,我喜欢");}
else if(a==2){
printf("生成了一只红猪,有下酒菜了 ");}
n++;
}
}
2(选做)
猴子摘了一堆枣N个,第一天吃了一半,还嫌不过瘾,
又多吃了一个:第二天又吃了剩下的一半零一个:以后每天如此,
到第十天,猴子一看只剩下一个了。问最初有多少个枣子?
#include <stdio.h>
int main()
{
int n=1;
while(n<=10){
n=n+(n+1)/0.5
}
printf("%d",n);
}
3(选做)
百元买百鸡问题:公鸡每只5元,母鸡每只3元,
小鸡每3只1元;一百元要求三种鸡都要买,
有多少种购买组合?
#include <stdio.h>
int main()
{
int a,b,c;
for(a =1;a<= 20;a++)
for(b = 1;b <= 33;b++)
for(c = 3;c <= 92;c++)
if(5*a +3*b+c/3 == 100)
if(a +b+c == 100)
if(c%3==0)
printf("公鸡:%d 母鸡:%d 小鸡:%d\n", a,b,c);}
#include <stdio.h>
int main (){int n;
for(n=1;n<=10;n++) {printf("%d\n",n);
}
}
#include <stdio.h>
int main (){int n;
for(n=1;n<=10;n++) {printf("hello!world!\n");
}
}
srand((int)time(0));
int i=0;
while(i<10){
int num=rand()%2;
switch(num){
case 0:
printf("白猪\n");break;
case 1:
printf("白猪1\n");break;
case 2:
printf("白猪2\n");break;
}
i++;
}
#include <stdio.h>
int main (){int n;int he=0;printf("请输入一个数字");int g;scanf("%d",&g);
for(n=1;n<=5;n++) {
he= g+n;printf("%d+%d=%d\n",n,g,he);
}
}
#include <stdio.h>
int main (){int n;int he=0;printf("请输入一个数字");int g;scanf("%d",&g);
for(n=1;n<=5;n++) { if(n%2==1){
he= g+n;printf("%d+%d=%d\n",n,g,he);}
}
}
#include <stdio.h>
//#include <time.h>
//#include <stdlib.h>
int main()
{
int a,b,c; int num=0;
for(a =1;a<= 20;a++) {
for(b = 1;b <= 33;b++){
for(c = 3;c <= 92;c++){
if(5*a +3*b+c/3 == 100) {
if(a +b+c == 100){
if(c%3==0){
num++;
printf("公鸡:%d 母鸡:%d 小鸡:%d\n ", a,b,c);
}//for,if都要用{},用鼠标点{时,会 有对应} 变红。用文字不易解释出 ,则用视频
}
}
}
}
}printf("共%d种方案",num);
}
#include <stdio.h>
int main (){
for(int n=1;n<=100;n++) { if(n%11==0){
printf("%d\n",n);
}
else if(n>=50){break;}
}
}
#include <stdio.h>
int main (){
for(int n=1;n<=100;n++) { if(n%2==0){
printf("%d\n",n);
}
}
}
#include <stdio.h>
int main (){ printf("输入一个数");int num;scanf("%d",&num);int j=num;
for(int i=0;i<=num;i++){
printf("%d*%d=%d\n",i,j,i+j);j--;}
}
#include <stdio.h>
int main (){ int a,b;
for(int a=1;a<=9;a++){
for(int b=1;b<=a;b++){printf("%d*%d=%d\t",a,b,a*b);}//"for嵌套"如同俄罗斯套娃,条件并集后,循环并集的条件
printf("\n");
}
}
#include <stdio.h>
int main (){ int a;int he=0;
for(int a=1;a<=100;a++){if(a%2==0&&a%3==0||a%10==0) { he=he+a;
}
}
printf("%d",he);
}
//1.使用for循环,将1到100之间的所有能被7整除或者包含7的数都不打印
#include <stdio.h>
int main(){
for(int n=1;n<=100;n++){
if(n%7!=0&&n%10!=7&&n/10!=7){
printf("%d\n",n);}
}
}
//2.使用for循环,将1到100之间的所有能被7整除或者包含7的数都不打印,计算其所有值的和
//如果和大于500,停止循环
#include <stdio.h>
int main(){int he=0;
for(int n=1;n<=100;n++){
if(n%7!=0&&n%10!=7&&n/10!=7){he=he+n;
printf("%d\n",n);if(he>=500) {break;
}
}
}
printf("所有值的和为%d\n",he);
}
#include <stdio.h>
int main(){
for(int n=1;n<=5;n++){
for(int n=1;n<=5;n++){
{
}
printf("*\t\t");}
}
}
#include <stdio.h>
int main (){ int a,b;
for(int a=1;a<=5;a++){
for(int b=1;b<=a;b++){printf("*\t");}//"for嵌套"如同俄罗斯套娃,条件并集后,循环并集的条件
printf("\n");
}
}
#include <stdio.h>
int main (){ int a,b;
for(int a=1;a<=5;a++){
for(int b=1;b<=a;b++){printf("*\t");}//"for嵌套"如同俄罗斯套娃,条件并集后,循环并集的条件
printf("\n");
}
}
#include <stdio.h>
int main(){
for(int a=1;a<=4;a++){printf("*\n");
for(int b=1;b<=a;b++){printf("*");}
{
}
}
}
#include <stdio.h>
int main(){
for(int a=1;a<=5;a++){
for(int b=1;b<=5;b++){printf("你做了第%d个俯卧撑\n",b);
//越里面越先执行
}
printf("恭喜你跑完了第%d圈\n",a);
}
}
#include <stdio.h>
int main(){
for(int a=1;a<=365;a++){
for(int b=0;b<3;b++){switch(b){case 0:printf("吃了早餐\n");break;
case 1:printf("吃了午餐\n");break;
case 2:printf("吃了晚餐\n");break;
}
//越里面越先执行
}
printf("度过了第%d天\n",a);
}
}
#include <stdio.h>
int main()
{int a,he;
he=0;
for(a=1;a<=10;a++) {
if(a%2==1){he=he+a;
}
}
printf("%d",he);
return 0;
}
#include <stdio.h>
int main()
{int a,he;
he=0;
a=1;
while(a<=10) {if(a%2==1)he=he+a;
a++;
}
printf("%d",he);
return 0;
}
#include <stdio.h>
int main()
{int a,he;
he=0;
a=1;
do{if(a%2==1)
he=he+a;
a++;
}
while(a<=10);
printf("%d",he);
return 0;
}
#include <stdio.h>
int main()
{char a;
printf("退出游戏?y退出游戏 其他字符 继续游戏");
do{
scanf("%c",&a) ;printf("退出游戏");
}
while();
printf("继续游戏");
}
//3、声明一个int型的数组,循环接收8个学生的成绩,计算这8个学生的总分及平均分。
#include <stdio.h>
int main (){
int a[8],i;
int he=0;
for(i=0;i<=7;i++){printf("请输录第%d个学生的成绩",i+1);
scanf("%d",&a[i]); he=he+a[i];
}
printf("这8个学生的总分为%d,平均分为%d",he,he/i);
}
//
//4、声明一个int型的数组,循环随机生成13个1到13之间随机数放入到此数组中去,再循环输出。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand((int)time(0));
int a[52];
for(int i=1;i<=13;i++){
a[i]=rand()%13+1;
printf("%d\n",a[i]);
}
}
//
//5、声明一个char型的数组,在此数组的单元格中放入"a,b,c"三个字符,然后使用循环将它反序输出。如"c,b,a"。
#include <stdio.h>
int main()
{
char as[]={'a','b','c'};
for(int i=2;i>=0;i--) {printf("%c",as[i]);
}
}
#include<stdio.h>
int main(){for(int n=100;n<=999;n++){
int a,b,c;
a=n%10;
b=n/10%10;
c=n/100;
if(a*a*a+b*b*b+c*c*c==n){printf("%d\n",n);
}
}}
#include<stdio.h>
int main(){
for(int n=1;n<=100;n++){if(n%3==0){printf("%d\n",n);
}
}}
//1.求1000以内的质数,只能够除以自身和1,除以其他没有余数
(1)官方标准答案:
//#include <stdio.h>
//int main(void)
//{
// /*
// 输出1000以内的质数
// */
//
// int m;
// int n;
// for (n=2;n<=1000;n++)
// {
// for (m = 2; m < n; m++)
// {
// if (n % m == 0)
// {
// break;
// }
// }
//
//
//
// if(m==n)
// {
// printf("%d ",n);
// }
// }
//
// return 0;
//}
(1)自己的答案:
#include <stdio.h>
int main()
{
int a;
int b;
for (a=2;a<=1000;a++)
{
for (b = 2; b <= a-1; b++)
{
if (a % b == 0)
{
break;
}
}
if(a==b)
{
printf("%d ",b);//两个空格时,数字显示为佳
}
}
return 0;
}
//2.求1000以内的完数,
//如果一个数恰好等于它的因子之和,则称该数为“完全数” [1] 。
//各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的和等于它本身的自然数叫做完全数(Perfect number),又称完美数或完备数。
//例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,
//其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,
//除去它本身28外,其余5个数相加,1+2+4+7+14=28。第三个完全数是496,
//有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,
//1+2+4+8+16+31+62+124+248=496。后面的完全数还有8128、33550336等等。
#include <stdio.h>
int main()
{
int n=1000;
int r,j,i;//先声明3个变量
for(i=1;i<=n; i++) { //成对的{}要对齐,便于观察
r = 0;
for(j=1;j<i;j++){
if(i%j == 0){ //j为r的因数
r = r + j;// 此时r为因数和
}
}
if(r == i) { // 因数和=本身数字
printf("%d\n",r);
} // 完数为r或i
}
return 0;
}
//3.声明一个整形数组,提示用户输入10个数字,将其内容进行从小到大进行排序
#include <stdio.h>
int main()
{
int a[10];
int i,fuzhi;//用于赋值 ,fuzhi为交换两个变量的数值的第三个变量
int xiabiao;//xia biao为下标的拼音,这样便于明白定义变量的含义
for(i=0;i<10;i++)
{printf("请输入%d个整数:",i+1);
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)
{
for(xiabiao=0;xiabiao<9-i;xiabiao++)
{
if(a[xiabiao]>a[xiabiao+1])
{
fuzhi=a[xiabiao];//用于赋值 ,fuzhi为交换两个变量的数值的第三个变量
a[xiabiao]=a[xiabiao+1];
a[xiabiao+1]=fuzhi;
}
}
}
printf("从小到大进行排序为:");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}