第七周作業


要求二

題目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分鍾 三種循環語句

 

折線圖

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM