C語言第三次博客作業---單層循環結構


一、PTA實驗作業

題目1

專家通過多組情侶研究數據發現,最佳的情侶身高差遵循着一個公式:(女方的身高)×1.09 =(男方的身高)。如果符合,你倆的身高差不管是牽手、擁抱、接吻,都是最和諧的差度。
下面就請你寫個程序,為任意一位用戶計算他/她的情侶的最佳身高。

1.實驗代碼


        int i,n;
	double man,women;
	char sex;
	scanf("%d\n",&n);
	for(i=1;i<=n;i++){
		scanf("%c",&sex);
		if(sex=='M'){
			scanf("%lf\n",&man);
			women=man/1.09;
			printf("%.2f\n",women);
		}
		if(sex=='F'){
			scanf("%lf\n",&women);
			man=women*1.09;
			printf("%.2f\n",man);
		}
	}
	return 0;

2.設計思路

1.定義兩個整型變量i,n,兩個雙精度浮點型變量man,women,一個字符型變量sex,輸入n;
2.當i<n時,執行循環:輸入sex,當sex=M時,輸入男性身高,women=man/1.09,輸出女性身高;當sex=F時,輸入女性身高,man=women*1.09,輸出男性身高;
3.當i>=n,結束循環。

3.本題調試過程碰到問題及解決辦法

剛剛開始for的條件里用的逗號,改為分號后就沒什么問題了。。

4.本題PTA提交列表

題目2

給定兩個均不超過9的正整數a和n,要求編寫程序求a+aa+aaa++⋯+aa⋯a(n個a)之和。

1.實驗代碼

	int a,t,n,i,sum;
	scanf("%d%d",&a,&n);
	sum=0,t=0;
	for(i=1;i<=n;i++){
		t=t*10+a;
		sum=sum+t;
	}
	printf("s = %d",sum);

2.實驗思路

1.定義五個整形變量a,t,n,i,sum,將0賦給sum、t,輸入a,n;
2.當i<=n時,執行循環:t=t*10+a,sum=sum+t;
3.當i>n時,結束循環,輸出sum。

3.本題調試過程碰到問題及解決辦法

本來用的a=a10+a來表示aaa...的,但是發現輸出的數字不對,調試后發現了問題,於是采用了t=t10+a來代替a=a*10+a,問題得到解決。

4.本題提交列表

題目3

本題要求編寫程序,找出給定一系列整數中的最小值

1.實驗代碼

	int n,i,number,min;
	scanf("%d%d",&n,&number);
	min=number;
	for(i=1;i<=n;i++){
		scanf("%d",&number);
		if(min>number)
		min=number;
	}
	printf("min = %d\n",min);

2.實驗思路

1.定義四個整型變量i,n,number,min,輸入n,number的值,min=number;
2.當i<=n,執行循環:輸入一個數值,當min>number,min=number;
3.當i>n,結束循環,輸出min。

3.本題調試過程碰到問題及解決辦法

剛剛看到題目沒什么思路,不知道怎么確定最小值,想了很久用了將更小值賦給min的方法,問題解決。

4.本題提交列表

題目4

猜數字游戲是令游戲機隨機產生一個100以內的正整數,用戶輸入一個數對其進行猜測,需要你編寫程序自動對其與隨機產生的被猜數進行比較,並提示大了(“Too big”),還是小了(“Too small”),相等表示猜到了。如果猜到,則結束程序。程序還要求統計猜的次數,如果1次猜出該數,提示“Bingo!”;如果3次以內猜到該數,則提示“Lucky You!”;如果超過3次但是在N(>3)次以內(包括第N次)猜到該數,則提示“Good Guess!”;如果超過N次都沒有猜到,則提示“Game Over”,並結束程序。如果在到達N次之前,用戶輸入了一個負數,也輸出“Game Over”,並結束程序。

1.實驗代碼

  int N,count,mynumber,yournumber;
    scanf("%d%d",&mynumber,&N);
    count=0;
    do {
       count++;
       scanf("%d",&yournumber);
           if(yournumber<0){
               break;
    }
            else if(yournumber<mynumber){
               printf("Too small\n");
            }
            else if(yournumber>mynumber){
               printf("Too big\n");
    }
            else
               break;
    }
    while(yournumber>=0);
    
    if(yournumber>=0){
        switch(count){ 
            case 1:
               printf("Bingo!");
               break;
            case 2:
            case 3:
               printf("Lucky You!");
               break;
    }
    }
    if (count>3&&count<=N){
        printf("Good Guess!");
    }
        else if(count>N){
            printf("Game Over");
    }   else if(yournumber<0){
            printf("Game Over");
}

2.實驗思路

1.定義四個整型變量N,count,mynumber,yournumber,輸入N和mynumber的值;
2.用do while語句,每輸入一次count加一,用if語句判斷並輸出所猜數與隨機數的比較結果;
3.重復第三步,直至用戶猜數小於0.結束循環;
4.用switch、case語句輸出當count分別等於1,2,3是的判斷結果;
5.當count>3且count<=N時,輸出Good Guess!;
6.當輸入次數大於3小於等於N時,輸出Good Guess!
7.當輸入次數大於N時,輸出Game Over;
8.當用戶猜數小於0時,輸出Game Over。

3.本題調試過程碰到問題及解決辦法

開始覺得跟書上的猜數游戲有點像,可是研究了很久還是沒思路,最后求助同學了。。。

4.本題提交列表

二、截圖本周題目集的PTA最后排名

1.PTA提交列表

2.PTA排名

三、本周學習總結

1.你學會了什么?

學會了for循環語句,學會了break跟continue的不同,還學會了while語句和do while語句,以及兩者的差別,還學會了如何通過調試程序尋出錯誤。

2.你還不會什么?

多個數值的輸入輸出還只能一個一個來,不懂得怎么一次輸入並判斷然后輸出多個數值。
很多題目看了都沒有思路,腦子一團亂,思維不夠靈活。。

3.分支結構上機考試總結

對於絕對值對數等函數記得不清晰;第三題的情況考慮的不夠清楚,將十二點歸於上午了。


免責聲明!

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



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