大连理工 程序设计 第5次上机作业

  • 格式:docx
  • 大小:321.55 KB
  • 文档页数:8

下载文档原格式

  / 19
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.

题目描述:数据移位

有n(n<=10)个整数,使前面各数顺序向后移m(m<=n)个位置,最后m个数变成最前面的m个数,如图所示。编写函数shift(a,n,m)实现上述功能,在主函数中输入n个整数并输出调整后的n个数。

题目分析:

主函数输入输出,调用shift函数调序。其中shift函数中运用指针实现数组内容交换。

程序代码:

#include

void main()

{

int shift(int*a,int n,int m);

int a[10],m,n,i;

printf("Input n(n<=10):");

scanf("%d",&n);

printf("Input 10 integers:");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

printf("Output the original:");

for(i=0;i<10;i++)

printf("%d ",a[i]);

printf("\nInput m(m<=10):");

scanf("%d",&m);

printf("Output the shifted:");

shift(a,n,m);

}

shift(int*a,int n,int m)

{

int b[10],i,j;

for(j=n-m,i=0;i

{*(b+i)=*(a+j);}

for(j=0,i=m;i

{*(b+i)=*(a+j);}

for(i=0;i<10;i++)

printf("%d ",b[i]);

return 0;

}

程序截屏:

2.

题目描述:

字符串排序

在主函数中输入10个不等长的字符串放入二维字符数组中,编写函数void sort(char *s[])利用指针数组对其排序(按照字母顺序,例如“abc”要在“acc”前面,建议使用strcmp函数)。在主函数中输出排好序的字符串。

题目分析:主函数输入输出,调用sort函数通过strcmp,strcpy函数进行调换顺序。

程序代码:

#include

#include

main()

{

void sort(char *s[]);

char a[10][100],*s[10];

int i;

printf("please input ten strings:\n");

for(i=0;i<10;i++)

{gets (a[i]);

s[i]=a[i];}

sort(s);

printf("the sorted strings");

for(i=0;i<10;i++)

printf("%s\n",a[i]);

}

void sort(char *s[])

{

char t[100];

int i,j;

for(i=0;i<9;i++)

for(j=0;j<9-i;j++)

if(strcmp(s[j+1],s[j])<0)

{strcpy(t,s[j]);

strcpy(s[j],s[j+1]);

strcpy(s[j+1],t);}

}

程序截屏:

3.

题目描述:学生成绩统计

有一个班级6个学生5门课,编写函数实现下列功能:

(1)函数average()求第指定课目的平均分;

(2)使用函数void findfail()找出有2门以上(含2门)课程不及格的学生,在主程序输出其学号和全部课程成绩及平均成绩;

(3)函数void findgood()找出平均成绩在90分以上或全部课程成绩在85分以上的学生, 在主程序输出其学号和全部课程成绩及平均成绩。

在主函数中输入数据并输出结果。

题目分析:本题较为复杂,须运用多个函数调用,主函数输入输出,调运函数分别进行不同功能。

程序代码:

#include

struct student

{

float score[5];

int num;

int goodflag,failflag;

};

float average(struct student*p)

{

float sum=0,aver;

int i;

for(i=0;i<5;i++)

{

sum+=p->score[i];

}

aver=sum/5;

return aver;

}

int findfail(struct student*p)

{

int i,n,count=0;

for(i=0;i<5;i++)

if(p->score[i]<60)

count++;

if(count>=2)p->failflag=1;

}

int findgood(struct student*p)

{

int i,n,count=0;

for(i=0;i<5;i++)

if(p->score[i]>=85)

count++;

if(count==5||average(p)>=90)p->goodflag=1;

}

void main()

{

int i,j,m,aver,flag=0;