第七周作业

要求二

题目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",&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\n",average);
	printf("count = %d\n",count);
	}
	else
	{
	printf("average = %.1f\n",0.0);
	printf("count = %d\n",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=='\n')
    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分钟 三种循环语句

 

折线图

 

 

posted @ 2017-11-13 00:00  句号?  阅读(314)  评论(18编辑  收藏  举报