PTA实验作业

题目1

1.实验代码

   #include <stdio.h>  
int main () {  
    int N;  
    char sex;  
    float high;  
    scanf("%d", &N);  
    getchar(); //接受一个换行符
    while ( N-- ) { //当N为0时跳出循环  
        scanf("%c %f", &sex, &high);  
        getchar();  
        if ( sex == 'F' )   
            printf("%.2f\n", high * 1.09);  
        else  
            printf("%.2f\n", high / 1.09);  
    }   
    return 0;  
}  

2.设计思路

  • 1:定义一个整数变量N代表人数。定义一个单精度浮点变量high。定义字符型变量sex
  • 2:输入N的值,并用getchar()吸收换行符
  • 3:进入while ( N-- )循环,输入sex high的值,判断sex是否等于F,若是执行4
  • 4:printf("%.2f\n", high * 1.09); 否则执行5
  • 5: printf("%.2f\n", high / 1.09);
  • 6:判断N的值若为0跳出循环,否则执行3.

3.本题调试过程中碰到问题及解决办法

遇到的问题:
1.主要问题是不知道如何换行输入值。
2.还有就是用while语句时如何界定次数
解决方法:
1.运用一个gechar()吸收一个符号达到输入时换行
2.看MOOC后发现了这个while ( N-- )语句简便快捷。

4.本题PTA提交列表

题目2

1.实验代码

#include<stdio.h>
int main(){
    int a,k,s,n,i;
      s=0;
	  k=0;
    scanf("%d%d",&a,&n);
	for (i=0;i<n;i++)
	{
    	k=k*10+a;
    	s=s+k;  
    }		printf("s = %d\n",s);
    return 0;}


2.设计思路

  • 1:定义a,k,s,n,i 5个整数变量,
  • 2:s=0;k=0;
  • 3:输入a,n的值
  • 4:进入for循环for(i=1;i<=n;i++)
  • 5: k=k*10+a; s=s+k;
  • 6:判断是否i<=n若是则执行4,否则执行7.
  • 7:输出s的值

3.本题调试过程中碰到问题及解决办法

遇到的问题:

这题比较简单,没有遇到问题主要是格式及粗心的语法错误

4.本题PTA提交列表

题目3

1.实验代码

#include<stdio.h>
int main( )
{
 int n,i,l,min;
 scanf("%d",&n);
 scanf("%d",&l);
 min=l;//先定义一个min来做为参考并将l赋值于min 
 for(i=1;i<n;i++){
  scanf("%d",&l);
  if(min>l)//在循环中比较min的值,并将小的赋值于min中
  min=l;
 } 
 printf("min = %d",min);
 return 0;
}

2.设计思路

  • 1:定义n,i,l,min 3个整数变量
  • 2:输入n与l的值
  • 3: min=l
  • 4:进入for循环 for(i=1;i<n;i++),输入l的值
  • 5:判断min>l是否为真若是真的则 min=l;
  • 6:判断i是否小于n若是则跳出循环执行下一步,否则执行4
  • 7:输出min的值

3.本题调试过程中碰到问题及解决办法

遇到的问题:
1.遇到的问题主要是思路的问题,不知道在循环中如何比较大小

解决办法:
1. 后来询问舍友后,知道先定义一个参考值来做比较,就是定义一个min来作参考量

4.本题PTA提交列表.

题目4

1.实验代码

#include <stdio.h>  
  
int main()   
{  
    int number, n;  
    int count = 0;  //做为计数,应该先赋值为0
    int value;  
    scanf("%d%d", &number, &n);  
    while(count <= n) {  
        scanf("%d", &value);  
        if(value < 0) {  
            printf("Game Over\n");  
            break;  
        }  
        count++;  
        if(value > number)  
            printf("Too big\n");  
        else if(value < number)  
            printf("Too small\n");  
        else {  
            if(count == 1) //判断猜对的次数
                printf("Bingo!\n");  
            else if(count <= 3)  
                printf("Lucky You!\n");  
            else if(count <= n)  
                printf("Good Guess!\n");  
            break;  

        }  
    }  
      
    if(count > n)  //判断输入的次数,应该放在循环外
        printf("Game Over\n");  
      
    return 0;  
}  

2.设计思路

  • 1:定义 number, n value count = 0 4个整数变量
  • 2: 输入number, n的值
  • 3:进入while循环while(count <= n)
  • 4:进入while循环while (d--)
  • 5:输入value的值
  • 6:判断value > number是否为真若是真的则输出Game Over\n并且跳出循环,否则继续循环
  • 7: count++;
  • 8:判断value > number是否为真若是真的则输出Too big\n,分支判断value < number若是输出Too small\n
  • 9:继续判断剩余的情况,如果count == 1输出Bingo!\n如果count <= 3输出Lucky You!\n如果count <= n输出Good Guess!\n 并且跳出循环
  • 10:判断count > n若是输出Game Over\n

3.本题调试过程中碰到问题及解决办法

遇到的问题:
1.这题其实设计算法并不难但是在写程序是太多的分支,导致输出结果总是错误
2.输出时总是有的没法输出,甚至有的在运行时进入死循环,pta是运行超时

解决办法:
1.花了很多时间,慢慢理清程序,确保条件都有输入,千万不能急躁
2.检查后发现主要是break没输,以及循环条件的不充分在使用调试工具后发现问题并解决,调试确实有很大的作用

4.本题PTA提交列表.

二、截图本周题目集的PTA最后排名。

三、本周学习总结

1.你学会了什么?

**1. **我学会了用调试来修改程序,因为以前没用过,而且电脑也一直不能用,所以没试过这个功能,
所以每次程序错的时候都要找好久,找出来确实一个小错误,现在会使用调试功能后程序的错误
都可以根据值的变化来判断效率高了好多

2. 使用了for while来使用循环 我发现while比较简便。

3.明白了嵌套循环的原理,花了好长时间才明白,是通过用笔一步一步推出来的,感觉工程量好大,
不过对于一些问题确实很方便。

4.上次作业中没有规定的变量名这次也有改正,例如分子分母特地去百度了它的英文做为变量。

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

循环的语法内容是可以掌握,但是当循环遇上实际问题就很难解决,所以希望可以锻炼一下自己的
解题思路及逻辑能力

 posted on 2017-11-02 17:10  陈张鑫  阅读(241)  评论(6编辑  收藏  举报