欢迎光临散文网 会员登陆 & 注册

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

2019-10-29 20:36 作者:诗书画唱  | 我要投稿

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;

}


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

分享到微博请遵守国家法律