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

一、PTA实验作业

题目1:最佳情侣身高差

1.实验代码

#include <stdio.h>
int main()
{
	double high,High;//high为用户身高,High为情侣身高
	int i,num;//num为用户数
	char ch;
	i=1;
	scanf("%d",&num);
	for(i=1;i<=num;i++){
		ch=getchar();
		ch=getchar();
	scanf("%lf",&high);
	switch(ch){
	    case 'M':High=high/1.09;
		printf("%.2f\n",High);
		break;
	    case 'F':High=high*1.09;
		printf("%.2f\n",High);
		break;
	}
}
	return 0;
}

2 设计思路

  • 第一步:定义浮点型变量high为用户身高,High为情侣身高,整型变量i,num为输入用户数,定义字符型变量
  • 第二步:输入用户数num
  • 第三步:使用字符型变量ch=getchar,输入选择M或F
  • 第四步:若输入M,High=high/1.09
  • 第五步:若输入F,High=high*1.09
  • 第六步:输出结果

3.本题调试过程碰到问题及解决办法

(1):一开始以为是像题目那样可以一次性输两个数据,后面感觉很奇怪,所以就先把自己的代码提交了,发现是正确的。

4.本题PTA提交列表

题目2: 特殊a串数列求和

1.实验代码

#include <stdio.h>
int main()
{
	int a,n,i,s,x;//a为输入运算数字,n为输入数字的最大位数,s为和,x为a的初始数字
	scanf("%d%d",&a,&n);
	s=0;
	x=a;
	if(a<=9&&n<=9){
	for(i=1;i<=n;i++){
		s=s+a;
		a=a*10+x; 
	}
	}
	printf("s = %d",s);
  return 0;
}

2 设计思路

  • 第一步:定义整型变量a,n,i,s,x
  • 第二步:输入变量a,n
  • 第三步:将s初始化为0,x初始化为a
  • 第四步:for(i=1;i<=n;i++)
    s=s+a
    a=a*10+x
  • 第五步:输出s

3.本题调试过程碰到问题及解决办法


一开始看例子所给的a为2,随后一直将a=a*pow10+2带入,虽然根据所给的例子是对的,但对于其他情况却都是错的了

4.本题PTA提交列表

题目3: 找出最小值

1.实验代码

include <stdio.h>
int main()
{
	int n,num,i,min;//n为数字个数,min为最小值,num为输入数字
    scanf("%d",&n);
    scanf("%d",&num);
    min=num;
    for(i=1;i<=n-1;i++){
    	scanf("%d",&num);
    	if(min<num){
    		min=min;
		}
		else{
			min=num;
		}
	}
	printf("min = %d",min);
    return 0;
}

2 设计思路

  • 第一步:定义整型变量n为给出正整数,num为给出整数,i,min为最小值
  • 第二步:输入n和第一个整数num,将min初始化为num
  • 第三步:scanf("%d",&num)
  • 第四步:if(min<num),min=min;
  • 第五步:else,min=num;
  • 第六步:i=1;i++,当;i<=n-1返回第三步
  • 第七步:输出min

3.本题调试过程碰到问题及解决办法

在调试中没有发现具体哪里错误了,因为根据例子的情况都是正确的,后面经过舍友提醒找出了要先输出一个num给min初始化

4.本题PTA提交列表

题目4: 猜数字游戏

#include<stdio.h>
int main()
{
	int number,i,N,yours//number为被猜数字,N为最多猜数次数,yours为用户输入数字
	scanf("%d%d",&number,&N);
	for(i=1;i<=N;i++){
		scanf("%d",&yours);
		if(yours<0) {printf("Game Over");
		 break;
		}
		else if(yours>number) printf("Too big\n");
		else if(yours<number) printf("Too small\n");
		else if(yours==number&&i==1) {printf("Bingo!");
		 break;
		}
		else if(yours==number&&i>1&&i<=3) {printf("Lucky You!");
		 break;
		}
		else if(yours==number&&i>3) {printf("Good Guess!");
		 break;
		}
	}
	if(yours!=number&&i>N) printf("Game Over");
	return 0;
}

2 设计思路

  • 第一步:定义整型变量number为被猜数字,N为猜数次数最大限制,yours为用户猜数
  • 第二步:输入number和N
  • 第三步:输入用户猜数
  • 第四步:scanf("%d",&yours)
    if(yours<0) {printf("Game Over");
    break;
    }
    else if(yours>number) printf("Too big\n");
    else if(yours<number) printf("Too small\n");
    else if(yoursnumber&&i1) {printf("Bingo!");
    break;
  • 第五步:else if(yours==number&&i>1&&i<=3) {printf("Lucky You!")
  • 第六步:else if(yours==number&&i>3) {printf("Good Guess!")
  • 第七步:if(yours!=number&&i>N) printf("Game Over");

3.本题调试过程碰到问题及解决办法


对待本题,还是觉得很迷惑,在问舍友时才发现自己的设计并不完美,而且没有换行

4.本题PTA提交列表

二、截图本周题目集的PTA最后排名

三、本周学习总结

1.你学会了什么?

在本周我学会了熟练地使用字符型变量和switch语句,还学习了while个do-while语句,二者的不同点在于do-while是先直接进行一个循环体,而while需要判断条件才可以进行循环体,当条件满足时对于二者是相同的,只有当第一个条件就不满足时,do-while将会先做一个循环体,而while就没有了。

2.本周的内容,你还不会什么?

在本周中嵌套循环让我感觉有点慌,在一周周的学习中感觉学习难度越来越大,我需要花更多的时间去多编程,多学习。

3.分支结构上机考试总结。

虽然这次上机考试我是满分,但是在做最后一题是由于字符型变量的用法不太熟悉,我在那边花了许多的时间去想,这让我认识到我的不足,我需要花更多时间来多打代码,争取在下一次上机考试做的更好。

posted on 2017-11-02 20:07  ifcan  阅读(514)  评论(5编辑  收藏  举报

导航