C语言第三次博客作业---单层循环结构

一、PTA实验作业

题目1

专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)×1.09 =(男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。
下面就请你写个程序,为任意一位用户计算他/她的情侣的最佳身高。

1.实验代码


        int i,n;
	double man,women;
	char sex;
	scanf("%d
",&n);
	for(i=1;i<=n;i++){
		scanf("%c",&sex);
		if(sex=='M'){
			scanf("%lf
",&man);
			women=man/1.09;
			printf("%.2f
",women);
		}
		if(sex=='F'){
			scanf("%lf
",&women);
			man=women*1.09;
			printf("%.2f
",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
",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
");
            }
            else if(yournumber>mynumber){
               printf("Too big
");
    }
            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.分支结构上机考试总结

对于绝对值对数等函数记得不清晰;第三题的情况考虑的不够清楚,将十二点归于上午了。

原文地址:https://www.cnblogs.com/luyongzhi/p/7769258.html