C语言第三次作业

题目一:

1.实验代码:

	int N,i;/*将用户个数存放在N,循环控制变量存放于i*/
	double H,E;/*将用户身高存放于H,对应情侣身高存放于E*/
	char sex;/*将性别存放于字符型变量sex中*/
	scanf("%d\n%c%lf\n",&N,&sex,&H);/*输入变量*/
	for(i=1;i<=N;i++){
		switch(sex){
			case 'F':
				E=H*1.09;
				printf("%.2f\n",E);
				break;
			case 'M':
				E=H/1.09;
				printf("%.2f\n",E);
				break;
			}
			scanf(" %c%lf",&sex,&H);	
		}

2.设计思路:

  • 1.定义整型变量N,i,浮点型变量H,E,字符型变量sex;
  • 2.输入变量;
  • 3.i=1时,若sex为F,则E=H*1.09;否则E=H/1.09;
  • 4.读入新变量;
  • 5.重复步骤3.4.,直到i>N,退出循环;

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

  • 1.刚开始时发现输入两个变量时只能输出一个值,后来经过调试发现应在循环内再输入一个scanf
    读取下一个变量值;

  • 2.但是问题仍不完全解决,输入两个数是可以输出对应的数值,但当N=3时,依旧只能输出两个,后来发现计算机只能读取后面两位,
    第一位无法读取,不过在PTA上也可以通过,所以有点纳闷,反复调试也找不出原因,希望有人指点迷津;

4.本题PTA提交列表:

题目二:

1.实验代码:

	int a,n,i,s,j,item,sum;      /*将乘数存于a,将a的个数存于n,将循环控制变量存于i,
                                               将所有数的和存于s,将嵌套内的循环控制变量存于j*/
	scanf("%d%d",&a,&n);/**/
	s=0;
	for(i=1;i<=n;i++){
		item=a;
		sum=0;
		for(j=1;j<=i;j++){
		  sum=sum+item;
		  item=a*pow(10,j);
		}
		s=s+sum;
		
	}
	printf("s = %d",s);

2.设计思路:

  • 1.定义整型变量a,n,i,s,j,item,sum;
  • 2.输入变量a,n;
  • 3.i=1,item=a,sum=0;
  • 4j=1时,sum=sum+item, item=a*pow(10,j);
  • 5.重复步骤4.,直到j>i,退出循环,i++,s=s+sum;
  • 6.重复步骤3.4.5.,直至i>n,退出循环;

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

  • 1.一开始第二个for循环中将 item=apow(10,j);写成 item=item10;后来经过调试改成 item=itempow(10,n);,经调试发现还是不对
    最后改成 item=a
    pow(10,j);即正确;
  • 2.刚开始忘记给item,sum赋初值,导致结果错误,后来经调试发现错误,改正过来;

4.本题PTA提交列表:

题目三:

1.实验代码:

#include<stdio.h>
int main()
{
	int n,min,i,number;/*n存放输入个数,min存放最小值,i作为循环控制变量,number存放输入的数值*/
	scanf("%d\n",&n);
	scanf("%d",&number);
	min=number;
	for(i=1;i<n;i++)
	{   scanf("%d",&number);
		if(number<min)
		min=number;
	}
	printf("min = %d",min);
	
	
}

2.设计思路:

  • 1.定义整型变量n,min,i,number;
  • 2.输入数值n,number;
  • 3.用min存放number;
  • 4.i=1;再次输入number,如果number<min,则min=number;
  • 5重复步骤4,直到i<n,退出循环;
  • 6.输出min的值;

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

  • 1.格式错误是因为“=”号前后的数字和字母都要空一行,在PTA的提示下改正(格式错误一般都要检查定义或输出);

4.本题PTA提交列表:

题目四:

1.实验代码:

#include<stdio.h>
int main()
{
	int i,mynumber,yournumber,N;
	scanf("%d%d",&mynumber,&N);
	for(i=1;i>=0;i++)
	{   
		scanf("%d",&yournumber);
		if(yournumber<mynumber&&i<N){
			printf("Too small");
			putchar('\n');
		}
		if(yournumber>mynumber&&i<N){
		    printf("Too big");
		    putchar('\n');
		}
		if(yournumber==mynumber&&i==1){
			printf("Bingo!");
			break;
		}
		if(yournumber==mynumber&&i>3&&i<=N){
			printf("Good Guess!");
		     break;
		}
		if(yournumber==mynumber&&i<=3){
			printf("Lucky You!");
			break;
		}
		if(yournumber!=mynumber&&i==N){
			printf("Game Over");
			 putchar('\n');
			 i=1;
			 }
		if(yournumber==mynumber&&i>N){
		    break;
		    }
		if(yournumber<0){
			break;
		}
		}
	}

2.设计思路:

  • 1.定义循环控制变量 i,程序的数字mynumber,用户的数字yournumber,输入个数N;
  • 2.输入N;
  • 3.输入mynumber;
  • 4.’如果yournumber<mynumber,输出Too small;如果yournumber>mynumber且,输出Too big;如果yournumbermynumber且i1,输出Bingo!;
    如果yournumbermynumber且i>3且i<=N,输出Good Guess!;如果yournumbermynumber&&i<=3,输出Lucky You!;如果yournumber!=mynumber&&iN,
    输出Game Over;如果yournumber
    mynumber且i>N,或如果yournumber<0,跳出循环;
  • 5.重复步骤3.4,直到输入负数为止;

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

  • 1.调试DEV时,条件都能过,但是PTA做出如下提示:

    这个问题还未解决;
  • 2.看题时不够认真,断章取义,题目说“在一行中输出每次猜测相应的结果,直到输出猜对的结果或“Game Over”则结束。”,结果只看了“最后每行给出一个用户的输入,直到出现负数为止。”这句话,以为只要不输入负数,就可以无限输入数值,直到才猜对为止;

4.本题PTA提交列表:


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

三、本周学习总结

1.你学会了什么?

  • 1学会了循环结构及嵌套循环;
  • 2.学会了调试代码;
  • 3.明白了自学能力的重要性;
  • 4.看到大佬们写程序速度飞快,
    他们之所以学得这么好,是因为他们比我们倾注了更多的时间,向他们学习;

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

  • 1.遇到稍微复杂一点的题时,嵌套循环的算法便不会写;
  • 2.不会建工程项目;
    3.分支结构上机考试总结。
    (1)哪些地方错了,为什么?
  • 1.第一题的log3^16不会表示,因为课本里没有这种函数的表示法,只有lnx的表示法,
    后来发现原来只要用数学公式将其互相转换便可以,这里体现了数学里一个重要的转换思想;
  • 2.成绩转换的题发现输入九十几时最后总会输出AB,而不是A,后来发现是break没加;
  • 3.最后一题没来得及提交,第二题没做,做题速度太慢,脑子运行太慢,有待改进;
    (2)后续要怎么找程序错误?
  • 1.当时不会调试程序,以后可以通过调试程序找错误,
    结合人工查错和PTA的错误提示来查错;
    (3)对自己成绩满意么?不满意的话要怎么改进?
  • 1.不满意,提升空间非常大;
  • 2.以后每天都要写代码,锻炼写代码的能力;
  • 3.老师布置的作业要认真完成,绝不能再抱着马马虎虎的态度,必须赋予自己严谨的态度和使命感;
  • 4.自学能力有待加强,有空多学一些有关C语言的书,可以巩固课内知识,同时拓展视野;
posted @ 2017-11-02 19:12  哟呵~  阅读(417)  评论(4编辑  收藏  举报