例9.6从键盘中任意输入两个整数,编程实现将其交换后再重新输出
#include <stdio.h>
void Swap(int *x,int *y);
int main()
{
int a,b;
printf("Please enter a,b:");
scanf("%d,%d",&a,&b);
printf("Before swap:a=%d,b=%d\n",a,b);
Swap(&a,&b);
printf("After swap:a=%d,b=%d\n",a,b);
return 0;
}
void Swap(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
例9.7从键盘输入某班同学某门课的成绩(每班人数最多不超过40人,具体人数有键盘输入),编程实现计算并输出最高分及相应学生的学号。
#include <stdio.h>
#define N 40
void FindMax(int score[],long num[],int *pmaxScore,long *pmaxNum,int n);
int main()
{
int score[N],maxScore,n,i;
long num[N],maxNum;
printf("How many sudents?");
scanf("%d",&n);
printf("Input student'ID and score:\n");
for(i=0;i<n;i++)
{
scanf("%ld%d",&num[i],&score[i]);
}
FindMax(score,num,&maxScore,&maxNum,n);
printf("maxScore=%d,maxNum=%ld\n",maxScore,maxNum);
return 0;
}
void FindMax(int score[],long num[],int *pmaxScore,long *pmaxNum,int n)
{
int i;
*pmaxScore=score[0];
*pmaxNum=num[0];
for(i=0;i<n-1;i++)
{
if(score[i]>*pmaxScore)
{
*pmaxScore=score[i];
*pmaxNum=num[i];
}
}
}
从键盘中输入某班学生某门课的成绩(每班人数最多不超过40人),当输入为负值时表示输入结束,试编程将分数进行排序输出。排序函数要实现升序与降序排序功能。
#include <stdio.h>
#define N 40
int ReadScore(int score[]);
void PrintScore(int score[],int n);
void Swap(int *x,int *y);
int Ascending(int a,int b);
int Descending(int a,int b);
void SelectionSort(int a[],int n,int (*compare)(int a,int b));
int main()
{
int score[N],n;
int order;
n=ReadScore(score);
printf("Total studentd is %d\n",n);
printf("Enter 1 to sort in ascending order,\n");
printf("Enter 2 to sort in descending order:");
scanf("%d",&order);
printf("Data items in original order\n");
PrintScore(score,n);
if(order==1)
{
SelectionSort(score,n,Ascending);
printf("Data items in ascending order\n");
}
else
{
SelectionSort(score,n,Descending);
printf("Data items in Descending order\n");
}
PrintScore(score,n);
return 0;
}
int ReadScore(int score[])
{
int i=-1;
do{
i++;
printf("Input score:");
scanf("%d",&score[i]);
}while(score[i]>=0);
return i;
}
void PrintScore(int score[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%4d\n",score[i]);
}
}
void SelectionSort(int a[],int n,int (*compare)(int a,int b))
{
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if((*compare)(a[j],a[k])) k=j;
}
if(k!=i) Swap(&a[k],&a[i]);
}
}
int Ascending(int a,int b)
{
return a<b;
}
int Descending(int a,int b)
{
return a>b;
}
void Swap(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}