求C语言高手帮忙编个程序-
随便拷个给你好了~冒泡排序~就是从头到尾两个两个比较一下再交换位置,比较到都对了就好了~你滴明白~
#include
int main()
{
int n,i,j,t;
printf("input n
");
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++){
printf("input a[%d]
",i+1);
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(a[i]>a[j]){
t=a[i],a[i]=a[j],a[j]=t;
}
}
}
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
printf("
");
scanf("%d",&n);
return 0;
}
#include
#include
unsigned char weizhi[10000];
int currentStep = 0;
unsigned char zuoanlang = 32;
unsigned char zuoanyang = 16;
unsigned char zuoanbaicai = 8;
unsigned char youanlang = 4;
unsigned char youanyang = 2;
unsigned char youanbaicai = 1;
unsigned char moveStep[1000]="";
int p=0;
int check1(unsigned char num);
int check2(unsigned char num);
int move();
int main()
{
printf("一个人和一只狼还有一只羊再加上一棵白菜的复杂故事!
");
unsigned char a = 0;
weizhi[0] = a | zuoanlang | zuoanyang | zuoanbaicai;
if (move() == 1)
{
int i;
printf("成功了
");
for(i=--p;i>=0;i--)
{
switch(moveStep[i])
{
case 1:
printf("第%d步:把狼带过去
",p-i+1);
break;
case 2:
printf("第%d步:把羊带过去
",p-i+1);
break;
case 3:
printf("第%d步:把白菜带过去
",p-i+1);
break;
case 4:
printf("第%d步:把狼带回来
",p-i+1);
break;
case 5:
printf("第%d步:把羊带回来
",p-i+1);
break;
case 6:
printf("第%d步:把白菜带回来
",p-i+1);
break;
default:
break;
}
}
printf("打完收工
");
}
else
printf("一万步没送过去,不干了");
while(1);
}
int move()
{
unsigned char currentWeizhi = weizhi[currentStep];
unsigned char a = 0;
if (currentWeizhi == (a | youanlang|youanyang | youanbaicai)) return 1;
if (currentStep >= 10000) return 0;
if ((currentWeizhi & zuoanlang) !=0)
{
if (check1(currentWeizhi - zuoanlang))
if (check2(currentWeizhi - zuoanlang + youanlang))
{
weizhi[++currentStep] = (currentWeizhi - zuoanlang + youanlang);
if (move())
{
moveStep[p++]=1;
//strMoveStep = "把狼带过去 "+ //strMoveStep;
return 1;
}
}
}
if ((currentWeizhi & zuoanyang) > 0)
{
if (check1(currentWeizhi - zuoanyang))
if (check2(currentWeizhi - zuoanyang + youanyang))
{
weizhi[++currentStep] = (currentWeizhi - zuoanyang + youanyang);
if (move())
{
moveStep[p++]=2;
//strMoveStep = "把羊带过去 "+ //strMoveStep;
return 1;
}
}
}
if ((currentWeizhi & zuoanbaicai) > 0)
{
if (check1(currentWeizhi - zuoanbaicai))
if (check2(currentWeizhi - zuoanbaicai + youanbaicai))
{
weizhi[++currentStep] = (currentWeizhi - zuoanbaicai + youanbaicai);
if (move())
{
moveStep[p++]=3;
//strMoveStep = "把白菜带过去 "+ //strMoveStep;
return 1;
}
}
}
if ((currentWeizhi & youanlang) > 0)
{
if (check1(currentWeizhi - youanlang))
if (check2(currentWeizhi - youanlang + zuoanlang))
{
weizhi[++currentStep] = (currentWeizhi - youanlang + zuoanlang);
if (move())
{
moveStep[p++]=4;
//strMoveStep = "把狼带回来 "+ //strMoveStep;
return 1;
}
}
}
if ((currentWeizhi & youanyang) > 0)
{
if (check1(currentWeizhi - youanyang))
if (check2(currentWeizhi - youanyang + zuoanyang))
{
weizhi[++currentStep] = (currentWeizhi - youanyang + zuoanyang);
if (move())
{
moveStep[p++]=5;
//strMoveStep = "把羊带回来 "+ //strMoveStep;
return 1;
}
}
}
if ((currentWeizhi & youanbaicai) > 0)
{
if (check1(currentWeizhi - youanbaicai))
if (check2(currentWeizhi - youanbaicai + zuoanbaicai))
{
weizhi[++currentStep] = (currentWeizhi - youanbaicai + zuoanbaicai);
if (move())
{
moveStep[p++]=6;
//strMoveStep = "把白菜带回来 " + //strMoveStep;
return 1;
}
}
}
return 0;
}
int check1(unsigned char num)
{
if ((num & zuoanlang) != 0 && (num & zuoanyang) != 0) return 0;
if ((num & zuoanyang) != 0 && (num & zuoanbaicai) != 0) return 0;
if ((num & youanlang) != 0 && (num & youanyang) !=0) return 0;
if ((num & youanyang) != 0 && (num & youanbaicai) != 0) return 0;
return 1;
}
int check2(unsigned char num)
{
int i;
for (i = 0; i <= currentStep; i++)
if (num == weizhi[i]) return 0;
return 1;
}
二十一世纪谁最无聊?我!
#include <iostream>
using namespace std;
struct student
{
char name [20];
int score [5];
int sum ;
float average ;
}a [30];
int main(int argc, char *argv[])
{
int i,k,j;
char ch,filename [20];
printf("input the file name \n");
gets(filename);
for(i=0;i<10;i++)
{
printf("input student name \n");
scanf("%s",a[i].name );
printf("input the score \n");
for(k=0;k<3;k++)
scanf("%d",&a[i].score[k]);
}
for(i=0;i<10;i++)
{ for(k=0;k<3;k++)
a[i].sum+=a[i].score[k];
a[i].average=a[i].sum/3; }
for(i=0;i<10;i++)
{ printf("%s \n",a [i].name);
printf("score:");
for(k=0;k<3;k++)
printf("%d ",a[i].score[k]);
printf("\n");
printf("%d \n",a[i].sum);
printf("%f \n",a[i].average);
}
FILE *fp;
if( (fp = fopen (filename,"a") ) == NULL)
{
printf("the file can nor open ");
exit (0);
}
fp = fopen (filename,"a");
for(i=0;i<10;i++)
{
fprintf(fp,"%s \n",a [i].name );
for(k=0;k<3;k++)
fprintf(fp,"%d \n",a [i].score [k]);
fprintf(fp,"%d \n%f \n",a [i].sum,a [i].average);
}
fclose(fp);
system("PAUSE");
return EXIT_SUCCESS;
}
我们也是这个题目 只是有点小变化 但是基本符合你的要求(没写学号还有排名序号) 你看看吧
你参考一下吧
#include <stdio.h>
#include <string.h>
#define STU_NUM 10//学生数
#define SCORE_NUM 3//每个学生的科目数
typedef struct /*定义结构体数组*/
{
char num[20]; /*学号*/
char name[20]; /*姓名*/
float score[SCORE_NUM]; /*成绩*/
float total;//总分
float average;//平均分
} Student;
Student stu[STU_NUM];
//输入学生信息
void input()
{
int i,j;
printf("请输入%d个学生的信息:\n",STU_NUM);
for(i=0;i<STU_NUM;i++)
{
printf("学号:");
scanf("%s",stu[i].num);
printf("姓名:");
scanf("%s",stu[i].name);
for(j=0;j<SCORE_NUM;j++)
{
printf("科目%d的成绩:",j+1);
scanf("%f",&stu[i].score[j]);
}
}
}
//输出学生信息
void output()
{
int i,j;
printf("学生的信息如下:\n");
for(i=0;i<STU_NUM;i++)
{
printf("学号:%s\n",stu[i].num);
printf("姓名:%s\n",stu[i].name);
for(j=0;j<SCORE_NUM;j++)
{
printf("科目%d的成绩:%f\n",j+1,stu[i].score[j]);
}
printf("总分:%f\n",stu[i].total);
printf("平均分:%f\n",stu[i].average);
}
}
//计算总分和平均分
void process()
{
int i,j;
for(i=0;i<STU_NUM;i++)
{
stu[i].total=0;
for(j=0;j<SCORE_NUM;j++)
{
stu[i].total+=stu[i].score[j];
}
stu[i].average=stu[i].total/SCORE_NUM;
}
}
//排序并输出
void sort()
{
Student tStu;
int i,j;
for(i=0;i<STU_NUM;i++)
{
for(j=STU_NUM-1;j>i;j--)
{
if(stu[j].total>stu[j-1].total)
{
tStu=stu[j];
stu[j]=stu[i];
stu[i]=tStu;
}
}
}
}
void main()
{
input();
process();
sort();
output();
}
#include<stdio.h>
#include<string.h>
int count=0;
void p1(struct student temp1[]);//luru
void p2(struct student temp2[]);//xianshi
void p3(struct student temp3[],int);//paixu
void p4(struct student temp4[]);//charu
void p5(struct student temp4[]);//shangchu
struct student
{
int id;
char name[15];
float score[3];
float avg;
};
struct student stu[50];
void main()
{
int a;
do{
printf("0、退出。\n1、录入信息。\n2、显示信息。\n3、按平均成绩排序\n4、插入信息。\n5、删除信息。\n请输选择功能\n");
scanf("%d",&a);
if(a==0)
break;
else
switch(a)
{
case 1:p1(stu);break;
case 2:p2(stu);break;
case 3:p3(stu,count);break;
case 4:p4(stu);p3(stu,count);break;
case 5:p5(stu);break;
}
}while(1);
}
void p1(struct student temp1[])//录入
{
char ch;
ch='y';
do
{
printf("请输入学号");
scanf("%d",&temp1[count].id);
printf("请输入姓名:");
fflush(stdin);
gets(temp1[count].name);
//scanf("%s",temp1[count].name);
printf("请输入分数:\n");
for(int i=0,float sum;i<3;i++)//每次循环初始化为0
{
printf("分数%d ",i+1);
scanf("%f",&temp1[count].score[i]);
sum=sum+temp1[count].score[i];
}
temp1[count].avg=sum/3;
count++;
printf("是否要继续(y/n)?");
fflush(stdin);
ch=getchar();
}while(ch=='y'||ch=='Y');
}
void p2(struct student temp2[])//显示
{
printf("学员信息为:\n");
printf("学号\t姓名\t平均成绩\n");
for(int i=0;i<count;i++)
printf("%d\t%s\t%.2f\n",temp2[i].id,temp2[i].name,temp2[i].avg);
}
void p3(struct student temp3[],int cou)//排序
{
struct student c[30];//结构参数
printf("排序后为:\n");
for(int i=0;i<cou;i++)
{
for(int j=0;j<cou;j++)
if(temp3[j].avg<temp3[j-1].avg)
{
c[j]=temp3[j];
temp3[j]=temp3[j-1];
temp3[j-1]=c[j];
}
}
printf("学号:\t姓名:\t平均成绩\n");
for(int m=0;m<cou;m++)
printf("%d\t%s\t%f\n",temp3[m].id,temp3[m].name,temp3[m].avg);
}
void p4(struct student temp4[])//charu
{
printf("请输入要插入的学员信息:\n");
printf("请输入学号\n");
scanf("%d",&temp4[count].id);
printf("请输入姓名:\n");
scanf("%s",temp4[count].name);
printf("请输入分数:\n");
for(int i=0,float sum=0;i<3;i++)////每次循环初始化为0
{
printf("分数%d ",i+1);
scanf("%f",&temp4[count].score[i]);
sum=sum+temp4[count].score[i];
}
temp4[count].avg=sum/3;
count++;
}
void p5(struct student temp5[])
{
int num,j;
printf("请输入要删除的学员学号:\n");
scanf("%d",&num);
for(int i=0;i<count;i++)
{
if(num==temp5[i].id )
break;
}
for(j=i;j<count-1;j++)
temp5[j]=temp5[j+1];
count--;
}
看看吧