该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
1.(20分)请按如下函数原型编写函数,求任意两位数的逆转数(例如:25的逆转数为52)。
int inv(int n);
要求:在主函数中,输出所有两位数的逆转数。
***输入:无
***输出提示信息:"All reverse numbers are \n"
***输出格式:"%02d\n"
#include
#include
int inv(int n);
int main()
{
int n;
scanf("%d",&n);
printf("All reverse numbers are \n");
printf("%02d\n",inv(n));
return 0;
}
int inv(int n)
{
int a,b;
a=n%10;
b=(n-a)/10;
return 10*a+b;
}
2.(20分)按如下函数原型编写函数,计算n名学生的平均分数。
float aver(float score[],int n);
要求:在主函数中从键盘输入n名学生的学号及成绩(最多不超过30人,具体人数n由键盘输入),
调用用函数aver()计算这n名学生的平均成绩返回给主函数,
然后在主函数中输出学生的平均成绩及所有成绩高于平均成绩的学生的学号及成绩。
***输入提示信息:无
***输入格式:输入学生人数:"%d",输入学生学号及成绩:"%ld%f"
***输出提示信息和格式:"Average score is %10.2f\n"
***输出高于平均成绩的学生的学号及成绩的提示信息:"Above aver:\n"
***输出高于平均成绩的学生的学号及成绩::"%ld\t%.0f\n"
注:(1)不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程。
(2)用纯C语言编程,所有变量必须在第一条可执行语句前定义。
#include
#include
#define N 40
float aver(float score[],int n);
int main()
{
int n,i;
scanf("%d",&n);
long num[N];
float score[N];
for(i=0;i
{
scanf("%ld%f",&num[i],&score[i]);
}
printf("Average score is %10.2f\n",aver(score,n));
for(i=0;i
{
if(score[i]>aver(score,n))
{
printf("Above aver:\n");
printf("%ld\t%.0f\n",num[i],score[i]);
}
}
return 0;
}
float aver(float score[],int n)
{
int sum=0,i;
for(i=0;i
{
sum+=score[i];
}
return sum/n;
}
复杂编程题(10分)
1.(10分)按如下函数原型计算n名职工的最高月收入:
void FindMax(float income[],long num[],int n,float *pMaxincome,long *pnum);
在主函数中从键盘输入某单位n名职工的月收入及职工号(最多不超过30人,具体人数n由键盘输入),调用函数FindMax()计算职工的最高月收入及职工号。
**输入提示信息:无
**输入格式:输入职工人数用"%d",输入职工号及月收入用"%ld%f"
**输出提示信息和格式:"Maxincome=%.2f\tMnum=%ld\n"(要求在主函数中输出最高收入和职工号)
注:(1)不能使结构体、共用体、文件、goto、枚举类型进行编程。
(2)用纯C语言编程,所有变量必须在第一条可执行语句前定义。
#include
#include
#define N 30
void FindMax(float income[],long num[],int n,float *pMaxincome,long *pnum);
int main()
{
int n,i;
scanf("%d",&n);
long num[N];
long maxnum;
float income[N],Maxincome;
for(i=0;i
{
scanf("%ld%f",&num[i],&income[i]);
}
FindMax(income,num,n,&Maxincome,&maxnum);
printf("Maxincome=%.2f\tnum=%ld\n",Maxincome,maxnum);
return 0;
}
void FindMax(float income[],long num[],int n,float *pMaxincome,long *pnum)
{
int i;
*pMaxincome=income[0];
*pnum=num[0];
for(i=0;i
{
if(income[i]>*pMaxincome)
{
*pMaxincome=income[i];
*pnum=num[i];
}
}
}
附加改错题(10分)
1.(5分)以下程序是利用欧几里得算法(辗转相除法)求两个正整数的最大公约数。程序有错误请改正,使之能得到正确的运行结果。
#include
int main()
{
int a, b, c;
printf("Input a,b:");
scanf("%d,%d\n", &a, &b);
c = Gcd(a,b);
if (c != -1)
{
printf("Greatest Common Divisor of %d and %d is %d\n", a, b, c);
}
else
{
printf("Input number should be positive!\n");
}
return 0;
}
int Gcd(int a, int b)
{
int r;
if (a < 0 || b < 0)
{
return -1;
}
do{
r = a % b;
a = b;
b = r;
}while (r=0);
return a;
}
注意:
(1)请将修改正确后的完整源程序拷贝粘贴到答题区内。
(2)对于没有错误的语句,请不要修改,修改原本正确的语句也要扣分。
(3)当且仅当错误全部改正,且程序运行结果调试正确,才给加5分。
(4)改错时不能改变程序原有的意图,也不要改变代码的输入输出格式。
#include
int Gcd(int a, int b);
int main()
{
int a, b, c,t;
printf("Input a,b:");
scanf("%d,%d", &a, &b);
if(a
{
t=a;
a=b;
b=t;
c = Gcd(a,b);
if (c != -1)
{
printf("Greatest Common Divisor of %d and %d is %d\n", b, a, c);
}
else
{
printf("Input number should be positive!\n");
}
}
else
{
c = Gcd(a,b);
if (c != -1)
{
printf("Greatest Common Divisor of %d and %d is %d\n", a, b, c);
}
else
{
printf("Input number should be positive!\n");
}
}
return 0;
}
int Gcd(int a, int b)
{
int r;
if (a < 0 || b < 0)
{
return -1;
}
while (r!=0)
{
r = a % b;
a = b;
b = r;
}
return a;
}
2.(5分)请编程实现按奥运会参赛国国名(国家名字可以带空格)在字典中的顺序对其出场顺序进行排序。假设参赛国家不超过150个。
以下程序有错误,请找出并改正。
#include
#define MAX_LEN 10
#define N 150
void SortString(char str[][], int n);
int main()
{
int i, n;
char name[N][MAX_LEN];
printf("How many countries?");
scanf("%d",&n);
printf("Input their names:\n");
for (i=0; i
{
scanf("%s",&name[i]);
}
SortString(name, n);
printf("Sorted results:\n");
for (i=0; i
{
puts(name[i]);
}
return 0;
}
void SortString(char str[][], int n)
{
int i, j;
char temp[MAX_LEN];
for (i=0; i
{
for (j = i+1; j
{
if (str[j]
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
}
}
}
注意:
(1)请将修改正确后的完整源程序拷贝粘贴到答题区内。
(2)对于没有错误的语句,请不要修改,修改原本正确的语句也要扣分。
(3)当且仅当错误全部改正,且程序运行结果调试正确,才给加5分。
(4)改错时不能改变程序原有的意图,也不要改变代码的输入输出格式。
#include
#include
#define MAX_LEN 10
#define N 150
void SortString(char str[][MAX_LEN], int n);
int main()
{
int i, n;
char name[N][MAX_LEN];
printf("How many countries?");
scanf("%d",&n);
getchar();
printf("Input their names:\n");
for (i=0; i
{
gets(name[i]);
}
SortString(name, n);
printf("Sorted results:\n");
for (i=0; i
{
puts(name[i]);
}
return 0;
}
void SortString(char str[][MAX_LEN], int n)
{
int i, j;
char temp[MAX_LEN];
for (i=0; i
{
for (j = i+1; j
{
if (strcmp(str[j],str[i])<0)
{
strcpy(temp,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],temp);
}
}
}
}