• 第七周作业


    要求二

    题目7-3 求交错序列前N项和

    一,实验代码

    #include<stdio.h>
    int main(){
      int i,N,flag=1;
      double sum;
      scanf("%d",&N);
      sum=0;
      for(i=1;i<=N;i++){
        sum=sum+flag*i*1.0/(2*i-1);
        flag=-flag;
      }
      printf("%.3f",sum);
      return 0;
    }
    

    二,设计思路

    1.根据题意定义变量,分别是整型变量i,N(输入数据的个数),flag(需初始化),浮点型变量sum(前N项和)。

    2.理解题意,需要用循环结构,并确定循环体的计算公式:sum=sum+flag*i*1.0/(2*i-1);flag=-flag。

    3.输入数据,先进行判断,若i<=N,就执行sum=sum+flag*i*1.0/(2*i-1);flag=-flag循环。例如:输入5,就循环5次。

    4.输出计算结果。
    三,流程图

    四,遇到的问题及解决方法

    (本图为课件截图)

    此题老师上课讲过同类型的,所以课下再做没有遇到大问题

    五,运行结果截图

     

     六,提交列表

     (答案错误是由于flag没有初始化)

    题目7-5统计学生平均成绩及及格人数

    一,实验代码

    #include<stdio.h>
    int main()
    {
    	int n,i,a,count=0;
    	float sum=0,average;
    	scanf("%d
    ",&n);
    	if(n!=0) {
    	for(i=1;i<=n;i++)
    	{
    		scanf("%d",&a);
    		sum+=a;
    		if(a>=60)
    	count++;
    	}
    	average=sum/n;
    	printf("average = %.1f
    ",average);
    	printf("count = %d
    ",count);
    	}
    	else
    	{
    	printf("average = %.1f
    ",0.0);
    	printf("count = %d
    ",0);
    	} 
    	return 0;
    }
    

    二,设计思路

    1.根据题意定义变量,分别是整型变量n(学生人数),i,a(学生成绩),count(及格人数);浮点型变量sum(成绩总和),average(平均成绩)。

    2.理解题意,需用到判断和循环两种结构,即if-else结构和for语句,并确定循环体scanf("%d",&a);sum+=a;if(a>=60),count++;和其他计算公式:average=sum/n。

    3.输入数据n,和相应个数的学生成绩,进行判断:若n不等于0,且i<=n,则执行sum+=a,在进行判断,若a>=60,则执行count++,然后进行循环,循环结束后计算出平均成绩;若n=0,则输出平均值等于0,及格

        人 数等于0。

    4.输出最终计算结果。

    三,流程图

     

    四,遇到的问题及解决方法

    遇到的问题:在编译器中编译没有任何问题,但在pta上提交就一直是答案错误。

    错误截图

    解决方法:在dev-c++中调试并没有发现错误,就私下问老师,得知程序中没有考虑到n=0的情况,加上这一条件后答案就正确了。

    五,运行结果截图

     

    六,提交列表

     (错误原因是由于没有考虑到n=0和a<60这两种情况)

    附加题:

    7-2 统计字符

    一:实验代码

    #include<stdio.h>
    int main(){
      char a;
      int i,letter=0,blank=0,digit=0,other=0;
      for(i=1;i<=10;i++){
        scanf("%c",&a);
        if(65<=a&&a<=90||97<=a&&a<=122)
        letter++;
        if(a==' '||a=='
    ')
        blank++;
        if(48<=a&&a<=57)
        digit++;
      }
      other=10-(letter+blank+digit);
      printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other);
      return 0;
    }
    

    二:设计思路

    a,根据题意定义变量,分别是字符型变量c,整型变量letter,blank,digit,other,i.

    b,理解题意,本题需要用到判断和循环两种境结构,而且本题使用for循环更好,程序比较简洁;然后确定相应的判断条件和循环体语句,例如:

    for(i=1;i<=10;i++){
        scanf("%c",&a);
        if(65<=a&&a<=90||97<=a&&a<=122)
        letter++;

    c,输入字符和数字,在不同的判断条件下逐一进行判断,然后循环,直到所有输入的内容都运行结束。

    d,输出统计结果。

    三:遇到的问题及解决方法

    遇到的问题:提交时总是遇到答案错误这种情况。

    错误截图

    解决方法:先根据错误提示自行修改,然而只改对了一部分,就问做对的同学,将所有的情况都考虑进去,将字符用ASSC码代替,再提交就成功了。

    四:提交列表

    五:运行结果图

    7-2 求给定精度的简单交错序列部分和

    一:实验代码

    #include<stdio.h>
    int main(){
      int i,N,flag=1;
      double sum;
      scanf("%d",&N);
      sum=0;
      for(i=1;i<=N;i++){
        sum=sum+flag*i*1.0/(3*i-2);
        flag=-flag;
      }
      printf("sum = %.6f",sum);
      return 0;
    }
    

    二:设计思路

    a,根据题意定义变量,分别是整型变量i,N,flag;浮点型变量sum.

    b,理解题意确定要用的结构类型为循环结构中的for循环,并确定相应的循环体

        sum=sum+flag*i*1.0/(3*i-2);
        flag=-flag;

    c,输入数值,先进行判断,再根据计算公式进行计算,最后进行循环,直到结束运行。

    d,输出运算结果sum。

    三:遇到的问题及解决方法

    遇到的问题:编译并没有错误,但是输出的结果与题目要求的并不符合。

    错误截图

    解决方法:自己看程序并没有找到错误,进行单步调试也没发现有什么错,于是就从网上找了答案,然后再对答案进行分析。

    四:流程图

    五:提交列表

    7-3 单词长度

    一:实验代码

    #include<stdio.h>
    int main (void)
    { 
        char c;
        int count=0;
        int flag=0;
        scanf("%c",&c);
        while(c != '.'){
            if(c==' '){
                if(count !=0){
                    if(flag)
                        printf(" %d",count);
                    else{
                        printf("%d",count);
                        flag=1;
                    }
                    
                }
                count=0;
                }
            else{
                count++;
            }   
            scanf("%c",&c);
        }
        if(count!=0 && c=='.') 
            if(flag==0)
                printf("%d",count);
            else{
                printf(" %d",count);
                flag=1;
            }
                
        return 0; 
    }

    二:流程图

    三:提交列表

    要求三

    上传文件截图

     

    GIT地址:https://git.coding.net/Hunjunxian/juhao.git

                     https://git.coding.net/Hunjunxian/zuoye.git

    要求四

    个人总结

    1.本周主要学习了循环结构,其中包括三种语句,分别是:while,do-while,for。三者的区别在于while语句是先判断在执行;do-while语句是先执行一次再判断,即至少执行一次循环语句;for语句最为灵活简洁,一般可以取代while语句。

    2.学习难点就是循环体运算公式的确定和如何控制循环的结束。

    3.不明白的知识点:对于如何控制循环结束这一块不是很明白,老师讲的例子就没怎么听懂

     

    4.本周作业中出现的主要问题是对于for循环语句的使用不熟练,在确定循环体时会出现各种错误。

    要求五

    学习进度与互评

    我评价的博客

    何宗彦:http://www.cnblogs.com/hezongyan/

    陈雨秋:http://www.cnblogs.com/cyq66992152/

    姚爽:http://www.cnblogs.com/yaoshuang/

    学习进度条

    日期 代码行数 时间1 博客字数 时间2 知识点
    2017.11.13 135 共6小时左右 约400 45分钟 三种循环语句

    折线图

     

  • 相关阅读:
    Java && Eclipse使用中的问题
    Java使用的扩展
    Java的基本使用之多线程
    Java的基本使用之反射
    Java的基本使用之IO
    Java的基本使用之异常处理
    CSS中的line-height和vertical-height
    Java的基本使用之多线程
    跟进记录
    将文件从已Root Android手机中copy出来的几个cmd窗口命令
  • 原文地址:https://www.cnblogs.com/123456hjx/p/7823616.html
Copyright © 2020-2023  润新知