我有一个C语言问题,谁能帮帮我,我是刚刚学C语言,自己做了好久但是总是出错,求高手指教。 10
步骤、方法与要求1.定义一个数组a[11],用以存放学生的成绩。2.从键盘输入10个学生成绩。3.采用冒泡法,将学生成绩按照从高到低进行排序。4.再输入一个学生的成绩,将...
步骤、方法与要求
1. 定义一个数组a[11],用以存放学生的成绩。
2. 从键盘输入10个学生成绩。
3. 采用冒泡法,将学生成绩按照从高到低进行排序。
4. 再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组。
5. 将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列。
6. 将以上每一步骤的结果均打印输出,验证程序是否正确实现题目要求。
7. 在项目报告中说明程序设计的算法,附主要程序段。
8. 在项目报告中说明知识点。
9. 在项目报告中说明程序设计过程中的难点、解决办法及编程小结或体会。
#include<stdio.h>
#define N 4
main()
{ int i,j,temp,a[N],end=0;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(j=1;j<=N-1&&!end;j++)
{end=1;
for(i=0;i<N-j;i++)
if(a[i]<a[i+j])
{temp=a[i];
a[i+j]=temp;
end=0;
}
}
for(i=0;i<N;i++)
printf("%3d",a[i]);
}这是冒泡排序的程序,怎么才能达到上面的要求??? 展开
1. 定义一个数组a[11],用以存放学生的成绩。
2. 从键盘输入10个学生成绩。
3. 采用冒泡法,将学生成绩按照从高到低进行排序。
4. 再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组。
5. 将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列。
6. 将以上每一步骤的结果均打印输出,验证程序是否正确实现题目要求。
7. 在项目报告中说明程序设计的算法,附主要程序段。
8. 在项目报告中说明知识点。
9. 在项目报告中说明程序设计过程中的难点、解决办法及编程小结或体会。
#include<stdio.h>
#define N 4
main()
{ int i,j,temp,a[N],end=0;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(j=1;j<=N-1&&!end;j++)
{end=1;
for(i=0;i<N-j;i++)
if(a[i]<a[i+j])
{temp=a[i];
a[i+j]=temp;
end=0;
}
}
for(i=0;i<N;i++)
printf("%3d",a[i]);
}这是冒泡排序的程序,怎么才能达到上面的要求??? 展开
展开全部
你好,我也是C语言初学者,我来试试帮你解答。
我要说的是“插入排序法”,我不会把答案全给你,我把方法全交给你,你自己把他们综合起来。
插入排序:用函数编程实现一个按升序排序的数组中查找x应插入的位置,将x插入数字中,使数组仍按升序排列。
参考答案:
#include<stdio.h>
#define N 10
void Insert(int a[],int n,int x);
int main()
{
int a[N+1];
int x,i,n;
scanf(%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i];
}
scanf("%d",&x);
Insert(a,n,x);
printf("%d\n",x);
for(i=0;i<n+1;i++)
{
printf("%4d",a[i]);
}
printf("\n");
return 0;
}
void Insert(int a[],int n,int x)
{
int i=0,pos;
while(i<n&&x>a[i])
{
i++;
}
pos=i;
for(i=n-1;i>=pos;i--)
{
a[i+1]=a[i];
}
a[pos]=x;
}
我要说的是“插入排序法”,我不会把答案全给你,我把方法全交给你,你自己把他们综合起来。
插入排序:用函数编程实现一个按升序排序的数组中查找x应插入的位置,将x插入数字中,使数组仍按升序排列。
参考答案:
#include<stdio.h>
#define N 10
void Insert(int a[],int n,int x);
int main()
{
int a[N+1];
int x,i,n;
scanf(%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i];
}
scanf("%d",&x);
Insert(a,n,x);
printf("%d\n",x);
for(i=0;i<n+1;i++)
{
printf("%4d",a[i]);
}
printf("\n");
return 0;
}
void Insert(int a[],int n,int x)
{
int i=0,pos;
while(i<n&&x>a[i])
{
i++;
}
pos=i;
for(i=n-1;i>=pos;i--)
{
a[i+1]=a[i];
}
a[pos]=x;
}
追问
恩恩十分谢谢你,授人以鱼不如授人以渔,恩恩,我去理解下,能留下你的联系方式吗?在以后的学习中方便继续向您请教。
追答
我qq742679930,我们下周要考C语言,我这两周一直在复习,有时间一起研究交流一下啊
展开全部
最好自己做做,然后让别人帮你改,这样有提高的!
追问
#include
#define N 10
main()
{ int i,j,temp,a[N],end=0;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(j=1;j<=N-1&&!end;j++)
{end=1;
for(i=0;i<N-j;i++)
if(a[i]<a[i+j])
{temp=a[i];
a[i+j]=temp;
end=0;
}
}
for(i=0;i<N;i++)
printf("%3d",a[i]);
}这个是冒泡排序的程序,但是怎么编写能达到上面的要求??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一看就知道,嵌套循环有问题。缺少一对大括号
追问
不是,看好要求。上面的程序只是冒泡排序,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把你代码贴上来
追问
没有代码啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
联系方式我发给你
追问
发给你了啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询