第一次博客作业

一.思维导图

二.

1.if-else

if (条件)
{
    语句;
}else{
    语句;
}

如果不用{}要注意if和else只能执行后面的第一条语句。

加{}能让别人更容易读懂自己写的代码。

错误使用==和=。

大括号内的语句要缩进一个tab的位置。

2.switch

switch(表达式){
     case 常量表达式 1: 语句段 1; break;
     case 常量表达式 2: 语句段 2; break;
                    ...
     case 常量表达式 n: 语句段 n; break;
     default: 语句段 n+1; break;
}

break可以根据题目来选择要不要加。

switch可以和if-else相互转换。

3.for

for(初始动作;条件;每轮的动作)
{
    语句;
}

for语句可以与while语句可以相互转换。

4.while

while(条件){
    循环体语句;
}

需要加初始化部分。

5.do-while

do{
   循环体语句;
}while(条件);

do-while会比while多执行一次。

6.break以及continue

break; 跳出循环。

continue; 跳过循环这一轮剩下的语句进入下一轮。

三.pta分数截图



四.pta代码分析

1.



#include<stdio.h>
#include<math.h>  
int isPrime(int n){
int i,sign=1;
if(n<2)
	sign=0; 
for(i=2;i<=sqrt(n);i++){
if(n%i==0){
    sign=0;
}
}
 
return sign;
}
 
int main(){
	int sum=0,M,N,i,count=0;
	scanf("%d %d",&M,&N);
	for(i=M;i<=N;i++){
		if(isPrime(i)){
			sum=sum+i;
			count++;
		}	
	}
	printf("%d %d",count,sum);
	return 0;
}

做了三次都是测试点3没过,运行了好多次都没发现错误在哪,而且我对比了之前写对的代码也没有什么不同,就是过不了。后面没办法只能用之前写的代码。

2.



#include <stdio.h>
 
int main()
{
    int number,up ;
    int count = 0;
    int a;
    
    int flag=0;
    scanf("%d %d",&number,&up);
     while(flag==0){
        scanf("%d", &a);
        count++;
        if(a==number){
            flag=1;
        }
        else if ( a > number ) {
            printf("Too big\n");
        } else if ( a < number&&a>=0 ) {
            printf("Too small\n");
        }
        if (count>=a)
           break;
        if(a<0)        
           break;
        }   
    if(flag==1&&count<=up)
    {
            if(count==1)
                printf("Bingo!");
            else if(count<=3)
                printf("Lucky You!");
            
        else 
            printf("Good Guess!");
        while(1)
        {
            scanf("%d",&a);
            if(a<0)
            break;
        }
    }
    else printf("Game Over");    
    return 0;
}

第一次做的时候,运用循环和判断语句都不是很熟悉,使得运行超时,第二次就过了一个测试点,然后通过很多次在编译器执行需找错误在哪里,思路错在哪里。同时也问过别人。后面才写对。

3.



#include <stdio.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    double x=a;
    double y=0;
    if(b==0){
        printf("%.1f %.1f",y,y);
    }else{
    for(int i=1;i<=b;i++){
        y=y+1.5*x;
        x/=2.0;
        
        
    }
    y=y-x;
    printf("%.1f %.1f",y,x);
    }
    return 0;
}

第一次做的时候,就凭自己的脑子在想,没有动笔,关系式没有写得很好,只过了一个测试点。后面用笔在纸上推演过程,然后思路对了,但是没注意数据类型的转换问题。执行结果跟案例差了一点。后面发现了才这个问题。没有注意变量名称要能表达他的意思。

总结:

1.要学会推演过程,这样思路才会清晰。

2.变量名称要能准确表明它的意思,不能随便用一个字母来表示。

3.数据类型转换。

posted @ 2019-10-13 22:28  拒绝平庸*  阅读(203)  评论(0编辑  收藏  举报