第二次作业
要求一
作业要求
要求二
==========
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,在考试时了解了字符串。