C语言第三次博客作业---单层循环结构

一、PTA实验作业

1.

1.代码

   int num, i;
   double hight ,perfect;
   char sex; /*hight为用户的身高,num为要测试用户的数量,perfect为测试用户的情侣最佳身高,sex为用户性别*/
   i=1;
   scanf("%d",&num);
   getchar();
   while(i<=num){
       scanf("%c%lf",&sex,&hight);
       getchar();
       if(sex=='M'){
       perfect=hight/1.09;
       printf("%.2f\n",perfect);}
      else{
      perfect=hight*1.09; 
      printf("%.2f\n",perfect);
   } 
   i++;
   }

2.设计思路

  • (1)定义用户数量为num,每一个用户身高为hight,用户情侣最佳身高为perfect,用户性别为sex,第某个用户为i
  • (2)输入num,并输入一个字符以确保满足题意输入要求。
  • (3)输入某个用户性别和身高并输入一个字符以确保输入不受影响。
  • (4)如果sex=M则perfect=hight/1.09并输出perfect。
  • (5)如果sex=F则perfect=hight*1.09并输出perfect。
  • (6)i=i+1,控制循环。
  • (7)当i<=num,重复步骤3.

3.调试问题


这个程序的问题就时F无法进入自己的分支反而去了M的分支,而sex[N]好像变成了一个定值,目前还未解决希望到数组那边可以解决。

4.PTA提交列表

2.

1.代码

int a,n,i=1,s=0,c;/*a为1个a,2个a...n个a的值,n为要求n个a的和的宽度,s为累加和*/
scanf("%d%d",&a,&n);
 c=a;
for(i=1;i<=n;i++){
	s= a+s;
	a=a+c*pow(10,i);	
	
}
printf("s = %d",s);
return 0;

2.设计思路

  • (1)根据题目要求定义n和a和累加和为s并赋予s初值为s=0,定义c保存a的数值。
  • (2)输入a和n。
  • (3)将a的值赋予c。i=1。
  • (4)s=a+s进行s的累加累加。
  • (5)改变a的值即将原本的a加上c(储存a的初始值)的i次方得到新的值,并i++控制循环。
  • (6)当i<=n时重复步骤4。
  • (7)根据题目要求输出累加结果。

3.调试问题

无错误

4.PTA提交列表

3.

1.代码

  int n,i=1;
   double min=0,s;
   scanf("%d",&n);/*n为n个数量的数据,min为n个数据中的最小值,s为每一个数据。*/
   getchar();
   scanf("%lf",&s);
   getchar();
   min=s ;
   for(i=1;i<n;i++){
        if(min>s){
   	min=s;}
	scanf("%lf",&s);
	getchar();
   }
   printf("min = %.0f",min);

2.设计思路

  • (1)定义输入的数字个数为n最小值为min并赋予初值为0,每一个数值为s,和控制循环变量为i
  • (2)输入n,getchar()在这里可有可无,输入一个量,并另min=s,i=1
  • (3)当min>s时,将s的值赋予min.
  • (4)输入一个s同样后面的getchar()可以省略,i++控制循环。
  • (5)当i<n时重复步骤3
  • (6)根据题目要求输出。

3.调试问题


我已经将s赋值了第一个-2可s 的值还是0

4.PTA提交列表

4.

1.代码

 int N,yournumber,i=1,number;/*N为可以猜测的次数,yournumber为你所猜的数,number为所要猜的数*/
  scanf("%d%d",&number,&N);
  getchar();
  while(N>=i){
   scanf("%d",&yournumber); 
   getchar();
   if(yournumber>number){
          printf("Too big\n");
   }
   else if(yournumber==number){
      if(i==1){
          printf("Bingo!\n"); break;}
      else if(i>=4){
          printf("Good Guess!\n");break; }
      else {
          printf("Lucky You!\n");break
             ;} 
                                                } 
     
   else if (yournumber<=0){
          printf("Game Over\n");break;
   }
   else {printf("Too small\n");}
   i++;
   }
   if(yournumber>=0&&yournumber!=number)printf("Game Over\n");

2.设计思路

  • (1)定义可输入的次数为N,你猜的数字为yournumber,循环控制变量为i并赋初值为1,要猜的数字为number。
  • (2)输入要猜的数字为number,能猜的次数。getchar可省略
  • (3)输入一个你猜的数字。getchar可省略。当所猜的数字为负数时,输出Game over直接跳出程序.
  • (4)当yournumber>mynumber时,输出Too big并转行
  • (5)当yournumber等于mynumber时进入次分支,当i等于1时输出Bingo!并转行,同时跳出程序,当i>=4时输出Good Guess!并转行,同时跳出程序,当4>i>=1时输出Lucky You!并转行,同时跳出程序。
  • (6)当yournumber<mynumber时,输出Too smal并转行。
  • (7)i++,控制循环。
  • (8)当N>=i时重复步骤3.
  • (9)当yournumber>=0同时yournumber不等于mynumber时输出Game over。

3.调试问题


提示时显示直接跳出错误自己在Dev上尝试会有两个Game over 后来发现在if中添加一个条件可以避免这种情况。这题我并未调试。

4.PTA提交列表

二、截图本周题目集的PTA提交列表及最后排名。

PTA排名

三、本周学习总结

1.你学会了什么?

学习到了循环语句的使用和循环语句的嵌套使用也学会了调试,这对我程序的错误的纠正非常有意义,而且本周也把if-else语句的使用进行了牢固总结,是一个重大突破。
现在对getchar的理解是当有字符型数据的时候进行考虑没有的时候可以不用使用。

2.本周的内容,你还不会什么?

大部分会就不太懂getchar()的使用要在什么时候,还有就是后面所学的数组也是很迷糊,希望在未来能够在学习到数组时可以改正。

posted @ 2017-10-25 19:25  这个人有毒啊  阅读(346)  评论(8编辑  收藏  举报