我爱学习,我爱C语言。
题目:7-4 交换最小值和最大值
1.实验代码:
#include<stdio.h>
int main () {
int i,a[10]={0},n,t,min,max,m;
scanf("%d",&n);
for(i=0;i<n;i=i+1){
scanf("%d",&a[i]);
}
int x=a[0];
for(i=0;i<n;i=i+1){
if(a[i]<x){
x=a[i];
min=i;
}
else{
x=x;
min=min;
}
}
if(x!=a[0]){
t=a[0];
a[0]=a[min];
a[min]=t;}
int d=a[n-1];
for(i=0;i<n;i=i+1){
if(a[i]>d){
d=a[i];
max=i;
}
else{
d=d;
max=max;
}
}
if(d!=a[n-1]){
m=a[n-1];
a[n-1]=a[max];
a[max]=m;}
for(i=0;i<n;i=i+1){
printf("%d ",a[i]);
}
return 0;
}
2.设计思路:
第一步:定义 变量i,n,m,t,max,min;定义数组a[10]。
第二步:定义数组a[i]的外层循环,定义内层循环。
第三步:在内层循环中用if,else区分各种情况。
第四步:输出交换后的序列。
(2)流程图:
3.本题调试过程碰到问题及解决办法:
①本题在pta中未提交,提交pta之前没想到用内外两个循环,也是第二天上课才想到可以运用内外两个循环。在最初构思中都是采取将所有情况一一列出,而就是在这种情况下,编译器多次无法通过导致我放弃这道题。
②在内循环中多次将i=i+1错误编译为i=i++导致编译超时。回想可能出现超时的情况,发现了i++的错误。
7-5 冒泡法排序
1.实验代码:
#include<stdio.h>
int main()
{
int n,i,m,b,c;
scanf("%d %d",&n,&c);
int a[n+1];
for(i=1;i<=n;i++)
{
scanf("%d ",&a[i]);
}
for(m=1;m<=c;m++)
{
for(i=1;i<=n-m;i++)
{
if(a[i]>a[i+1]){b=a[i];a[i]=a[i+1];a[i+1]=b;}
}
}
printf("%d",a[1]);
for(i=2;i<=n;i++)
{
printf(" %d",a[i]);
}
return 0;
}
2.设计思路:
第一步:定义 变量i,n,m,b,c;定义数组a[n+1]。
第二步:输入n和c。
第三步:将数据存入数组a[i]。
第四步:用for内外循环。
第五步:输出按照格式输出数组。
(2)流程图:
3.本题调试过程碰到问题及解决办法:
①for循环最初就是搞不懂谁应该在外面谁应该在里面,多次尝试后才确定下来。应该就是没有顺清思路导致出现的这个问题。
要求三:
代码托管:https://coding.net/u/zxb0419/p/zuoye/git/tree/master/
四:个人总结
(1)本周你学习了哪些内容?收获了什么?
学习了冒泡循环,一维数组,二维数组。掌握了循环的知识,学会了数组。
(2)本周所学内容中你觉得哪些是难点?有哪些知识点还不明白?
冒泡循环,多种循环在一起的嵌套。嵌套循环不能熟练掌握。
五:互评和学习进度
1、点评3个同学的本周作业,并邀请3名同学点评你的作业。
周天:http://www.cnblogs.com/zt123/p/7967080.html
曹琦:http://www.cnblogs.com/blueblog6/p/7886541.html
郑鑫:http://www.cnblogs.com/blueblog6/p/7886541.html
2、表格和折线图: