一道C语言编程题 求解答!!

编写一个程序 输入三个整数a、b、c 要求输出结果按从小到大排列。

/************************************************************************/
/* 测试环境:vc6.0 语言:c 思想:交换 */
/************************************************************************/
#include<stdio.h>
int main()
{
int a,b,c;
int temp;
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
if(a>b) //交换,下面同
{
temp =a;
a = b;
b = temp;
}
if(a>c)
{
temp =a;
a =c;
c =temp;
}
if (b>c)
{
temp =b;
b = c;
c = temp;
}
printf("%d %d %d",a,b,c);

return 0;
}

//if any question, call me back!!!追问

可不可以做成一个if-else的嵌套?

追答

用if else的意思是将情况给细化了。但是具体要考虑的情况要很多,因为后面的ifelse是前面的if的其他,这里我用if是没有将其他考虑在内,如果可能的话,您可以试着使用一下switch,但其实我觉得都一样。

if any question , call me back!!!

追问

哦哦 谢啦~!看过之后还是直接用if 交换比较简单 嘿。

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-26

VC+Win2000下调试通过,今天刚做的。有点长,慢慢读吧。

/*
1)课程按本科生课(或研究生课)、适用年级、所属院系和所属专业等四各属性
进行设置,请建立课程的数据结构;
2)以C语言提供的文件方式,进行“课程数据库”的设计,请按定义的课程数据
结构描述文件的格式,以及文件与课程数据结构的关系;
3)开发课程的“查询系统”,要求以人机对话的方式直接输入本科生课(或研究生课
)、适用年级、所属院系和所属专业等四各属性的“代码”后,显示全部课程
4)开发“课程修改系统”,要求给定课程名称后,查出该课程,并能修改该课程的
所属院系和所属专业的属性。
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct courses
{
char name[20];
int isgraduate;
long grade;
char academy[50];
char department[50];
}course[2000];

void Show(int n, int *index);
int Add();
void Delete(int n, int *index);
int Search(courses info, int *index);
void Initcourse(courses& info);
void SaveData();
void OpenData();
void main()
{
int nSel,n,i,index[2000];
char IsSure;
courses info;
for(i=0;i<2000;i++)
{
Initcourse(course[i]);
index[i]=-1;
}

do{
printf("\t\t\tThe Course Information Maneger\n");
printf("\t1.Insert a new information.\t2.Delete an information.\n");
printf("\t3.Search an information.\t4.Modify an information.\n");
printf("\t5.Show all information.\t\t6.Save current all information.\n");
printf("\t7.Open data file.\t\t8.Clean Screen.\n");
printf("\t9.Qite system.\n");
printf("What are you going to want:");
cin>>nSel;

switch(nSel)
{
case 1:
Add();
break;
case 2:
printf("The course you want to delete is :");
Initcourse(info);
gets(info.name);
n=Search(info,index);
if(n)
{
printf("%d course is found. Are you sure to delete?(Y/N):\n",n);
scanf("%c",&IsSure);
if(IsSure=='y' || IsSure=='Y')
{
Delete(n,index);
printf("The information is deleted.\n");
}
}
else printf("The information isn't found.\n");
break;
case 3:
printf("The course you want to search is :\n");
Initcourse(info);
printf("Course name:"); gets(info.name);
printf("Course grade:"); scanf("%d",&info.grade);
printf("Is this graduate student's course(Y/N):");
scanf("%c",&IsSure);
info.isgraduate=(IsSure=='y'||IsSure=='Y');
printf("Academy:"); gets(info.academy);
printf("Department:"); gets(info.department);
n=Search(info,index);
if(n) Show(n,index);
else printf("The information isn't found.\n");
break;
case 4:
printf("The course you want to modify is :");
Initcourse(info);
gets(info.name);
n=Search(info,index);
if(n)
{
for(i=0;i<n;i++)
{
Show(1,&index[i]);
printf("Course name:"); gets(course[index[i]].name);
printf("Course grade:"); scanf("%d",&course[index[i]].grade);
printf("Is this graduate student's course(Y/N):");
scanf("%c",&IsSure);
course[index[i]].isgraduate=(IsSure=='y'||IsSure=='Y');
printf("Academy:"); gets(course[index[i]].academy);
printf("Department:"); gets(course[index[i]].department);
}
}
else printf("The information isn't found.\n");
break;
case 5:
Show(0,NULL);
break;
case 6:
SaveData();
break;
case 7:
OpenData();
break;
case 8:
system("cls");
break;
case 9:
return;
}
}while(nSel!=9);
}

int Add()
{
char IsOther;
int i;
for(i=0;i<2000;i++) if(course[i].grade<0) break;
if(i==2000)
{
printf("Course is full!\n");
return -1;
}
printf("Input courses infomation:\n");
do
{
printf("Course name:"); gets(course[i].name);
printf("Course grade:"); scanf("%d",&course[i].grade);
printf("Is this graduate student's course(Y/N):");
scanf("%c",&IsOther);
course[i].isgraduate=(IsOther=='y'||IsOther=='Y');
printf("Academy:"); gets(course[i].academy);
printf("Department:"); gets(course[i].department);
printf("Do you input other?(Y/N):");
scanf("%c",&IsOther);
}while(IsOther=='y'||IsOther=='Y');
return i;
}

void Show(int n, int *index)
{
printf("Course\t\tGrade\tType\tAcademy\t\tDepartment\n");
if(n>0)
{
for(int i=0;i<n;i++)
{
printf("%s\t\t",course[index[i]].name);
printf("%d\t",course[index[i]].grade);
if(course[n].isgraduate) printf("Graduate\t");
else printf("Under\t");
printf("%s\t\t",course[index[i]].academy);
printf("%s\n",course[index[i]].department);
}
}
else
{
while(course[n].grade>0)
{
printf("%s\t\t",course[n].name);
printf("%d\t",course[n].grade);
if(course[n].isgraduate) printf("Graduate\t");
else printf("Under\t");
printf("%s\t\t",course[n].academy);
printf("%s\n",course[n].department);
n++;
}
}
}

void Delete(int n,int *index)
{
int i;
for(i=0;i<n;i++)
{
memset(course[index[i]].academy,0,20);
memset(course[index[i]].department,0,20);
memset(course[index[i]].name,0,20);
course[index[i]].grade=-1;
course[index[i]].isgraduate=-1;
}
}

int Search(courses info, int *index)
{
int i,j=0,k[5];
k[0]=(info.grade!=-1);
k[1]=(info.isgraduate!=-1);
k[2]=(info.name[0]!=0);
k[3]=(info.academy[0]!=0);
k[4]=(info.department[0]!=0);

for(i=0;i<2000;i++)
{
if(k[0]&&course[i].grade==info.grade) index[j]=i;
if(k[1]&&course[i].isgraduate==info.isgraduate) index[j]=i;
if(k[2]&&!strcmp(info.name,course[i].name)) index[j]=i;
if(k[3]&&!strcmp(info.academy,course[i].academy)) index[j]=i;
if(k[4]&&!strcmp(info.department,course[i].department)) index[j]=i;
if(index[j]>=0) j++;
}
return j;
}

void SaveData()
{
FILE *fp;
int i=0;
if((fp=fopen("C:\\Courses.dat","w+"))==NULL)
{
printf("Save Fault!\n");
return;
}

for(i=0;i<2000;i++)
{
if(course[i].grade>0) fwrite(&course[i],sizeof(courses),1,fp);
}
fclose(fp);
printf("Save Success!\n");
}

void OpenData()
{
FILE *fp;
int status,i=0;
if((fp=fopen("C:\\Courses.dat","r+"))==NULL)
while(!feof(fp))
{
status=fread(&course[i],sizeof(courses),1,fp);
if(status) i++;
else
{
course[i].grade=-1;
i--;
}
}
fclose(fp);
printf("Read Success!\n");
}

void Initcourse(courses& info)
{
info.academy[0]=0;
info.department[0]=0;
info.grade=-1;
info.isgraduate=-1;
info.name[0]=0;
}
相似回答
大家正在搜