第二次作业

要求一

作业要求
要求二

==========
pta作业
一,函数

数字金字塔

1.实验代码


void pyramid(int n)
{
  int i, j, k;
	for (i = 1; i <= n; i++)
	{
	  for (j = 1; j <= n - i; j++)		
	  {
	    printf(" ");		
	    
	  }
	  for (k = 1; k <= i; k++)		
	  {
	    printf("%d ", i);		
	    
	  }
	  printf("\n");	
	  }
}


2.解题思路

第一步,输出数字金字塔的行数,每一个数字后换行。
第二步,设置一个循环,输出左边的空格,每行有n-i个空格。
第三步,设置一个循环,输出每行中的数字。

3.流程图

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

错误截图

设置断点


(默认程序执行到最后)

遇到的问题及解决方法。

1,系统无法识别我写的函数。
解决方法:我在函数的接口定义处多加了分号。
2,在金字塔每一层数字前不会加入适当空格。
解决方法:通过询问老师了解到利用一个循环来解决

	for (i = 1; i <= n; i++)
	{	
	  for (j = 1; j <= n - i; j++)		
	  {
	    printf(" ");
	  }

二 数组1

交换最大值和最小值

实验代码

#include<stdio.h>
int main ()
{
	const int N = 10;
	int i, j, c, d, n, min, max;
	int a[N];
	scanf("%d",&n);
    for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	min=max=a[0];
	for(i=0;i<n;i++)
	{
		if(a[i]<=min)
		  {
		  	min=a[i];
		  	j=i;
		  }
	}
	c=a[0];
	a[0]=min;
	a[j]=c;
	for(i=0;i<n;i++)
	{
		if(a[i]>=max)
		  {
		  	max=a[i];
		  	j=i;
		  }
	}
	d=max;
	a[j]=a[n-1];
	a[n-1]=d;
	for(i=0;i<n;i++)
	printf("%d ",a[i]);
	return 0;
 } 

解题思路

第一步,输入一个长度最高为10的数组。
第二步,初始化最大值最小值。
第三步,设置单层循环将初始化的min与数组各个值相比较,如果数组里的值小,则将数值交换min,并记录角标。
第四步,将最小值赋给a[0],将a[0]的值赋给与min交换的数组里某个值的角标。
第五步,设置单层循环将初始化的max与数组各个值相比较,如果数组里的值大,则将数值交换max,并记录角标。
第六步,将最大值赋给a[n-1],将a[n-1]的值赋给与max交换的数组里某个值的角标。
第七步,输出交换后的数组。

流程图

遇到的问题及解决方法

错误截图

设置断点

遇到的问题及解决方法

1,关于一维数组的输入输出方法。
解决方法:询问老师了解到设置单重循环。
2,输出结果远远偏离预期值。
解决方法:给min与max赋值。
3,交换最小值的索引号。
解决方法:

	for(i=0;i<n;i++)
	{
		if(a[i]<=min)
		  {
		  	min=a[i];
		  	j=i;
		  }
	}
	c=a[0];
	a[0]=min;
	a[j]=c;

三,数组二

选择法排序

实验代码

#include<stdio.h>
int main()
{
	int i,j,index,t;
	int a[10];
	for(i=0;i<10;i++)
	{
		scanf("%d",&a[i]);
	}
	for(j=0;j<3;j++)
	{
	index = j;
		for(i=j+1;i<10;i++)
		{
			if(a[i]<a[index])
			{
				index = i;
			} 
		}
		t = a[index];
		a[index] = a[j];
		a[j] = t;
	}
	for(i=0;i<10;i++)
	{
		printf("%5d",a[i]);
	}
	return 0;
}

解题思路

1,算法
第一步,输入一个长度最长为10的数组。
第二步,设置循环,要求排序最多3轮。
第三步,运用选择排序法对数组排序。
第四步,从小到大进行排序。
第五步,输出数组。

流程图

遇到的问题及解决方法

错误截图

设置断点

遇到的问题及解决方法

1,要求排序最多三轮。
解决方法:询问同学设置一个条件具体如下

	for(j=0;j<3;j++)
	{
	index = j;
		for(i=j+1;i<10;i++)
		{
			if(a[i]<a[index])
			{
				index = i;
			} 
		}
		t = a[index];
		a[index] = a[j];
		a[j] = t;
	}

2,选择排序法不太了解。
解决方法:查找书藉,弄明白选择排序法和冒泡排序法的区别。
要求三 个人总结

知识

1,学习了能表达出程序过程的数组,并了解了关于冒泡排序法和选择排序法。
2,学习了函数,什么是形参,什么是实参。
3,更详尽的了解了dev c++的调试过程。
3,加入了在大学中的第二个协会 ACM,在考试时了解了字符串。

困难

1,不太适应pta的作业,总是有很多不懂的地方。有时很迷茫。(目前还没找到解决方法)
2,数组的表达形式学不会,比如一维数组,二维数组。
解决方法:多看教材,多问问题,多敲代码。
3,对自己即将到来的考试极度不自信,感觉自己比别人差了很多。
要求四 点评同学

1,卢泽
2,谢雨欣
3,佟雨轩
表格

posted @ 2018-12-20 20:43  苏欣苏  阅读(187)  评论(9编辑  收藏  举报