当前位置:   article > 正文

高级语言期末2011级A卷(软件学院)

高级语言期末2011级A卷(软件学院)

1.编写函数,判定正整数m和n(均至少为2)是否满足:数m为数n可分解的最小质因数(数n可分解的最小质因数为整除n的最小质数)
提示:判定m为质数且m是n的最小因数

  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. bool isprime(int m,int n) {
  4. for(int i=0; i<m; i++) {
  5. if(m%i==0||n%i==0)
  6. return false;
  7. }
  8. if(n%m!=0)
  9. return false;
  10. return true;
  11. }

2.编写函数,对给定的整数数组a的前n个元素排序,使得所有正整数均出现在负整数和零之前。
提示:排序结果中,正整数之间的出现顺序不受限制,负整数和0之间的出现顺序不限制。
例如:原数组为-1、4、-3、0、2、1、-9、7,则排序后可以为4、2、1、7、0、-1、-3、-9

  1. #include <stdio.h>
  2. void sort(int *arr,int n) {
  3. for(int i=0; i<n-1; i++)
  4. for(int j=0; j<n-i-1; j++)
  5. if(arr[j]<=0) {
  6. int temp=arr[j];
  7. arr[j]=arr[j+1];
  8. arr[j+1]=temp;
  9. }
  10. for(int i=0; i<n-1; i++)
  11. for(int j=0; j<n-i-1; j++)
  12. if(arr[j]<0) {
  13. int temp=arr[j];
  14. arr[j]=arr[j+1];
  15. arr[j+1]=temp;
  16. }
  17. }
  18. int main() {
  19. int arr[]= {-1,4,-3,0,2,1,-9,7};
  20. sort(arr,8);
  21. for(int i=0; i<8; i++) {
  22. printf("%d ",arr[i]);
  23. }
  24. }

3.编写递归函数,实现按照如下公式计算的功能。其中n为自然数。
提示:如果独立编写阶乘运算函数,可以不考虑存储溢出,默认结果类型为整型。

f(n)=0/(1*2!)+1/(2*3!)+2/(3*4!)+...+n/((n+1)*(n+2)!)

  1. #include <stdio.h>
  2. int fac(int n) {
  3. if(n==0)
  4. return 1;
  5. else
  6. return n*fac(n-1);
  7. }
  8. double func(int n) {
  9. if(n==0)
  10. return 0;
  11. return 1.0*n/((n+1)*fac(n+2))+func(n-1);
  12. }

4.定义一个表示学生的结构体(包含3个字段:姓名、性别、成绩),编写函数,将下图所示的结构体数组s中的前n个学生的信息,存储到当前目录下的output.txt中。
提示:性别可以定义为bool、int、enum等类型均可,存储信息的具体形式不限制

张三李四......赵九
男(true)女(false)男(true)
837697

例如:一个教师的信息为Zhangsan、true、50,另一个教师的信息为Lisi、false、37。

  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. #include <stdlib.h>
  4. typedef struct student {
  5. char name[20];
  6. bool sex;
  7. int score;
  8. } student;
  9. void save(struct student stu[],int n) {
  10. FILE *file;
  11. if((file=fopen("out.txt","w"))==NULL) {
  12. printf("open error");
  13. exit(0);
  14. }
  15. for(int i=0; i<n; i++) {
  16. fprintf(file,"%s %d %d\n",stu[i].name,stu[i].sex,stu[i].score);
  17. }
  18. fclose(file);
  19. }

5.定义一个单链表(每个结点包含2个字段:整数信息、后继指针),如下图所示。编写函数,删除该单链表中所含整数信息等于x的多个重复结点。
例如:若单链表中存储的整数信息依次是1、5、5、0、5、6、0、0、5、1,如果x为5,则得到的单链表中相应信息依次是1、0、6、0、0、1。

  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. #include <stdlib.h>
  4. typedef struct node {
  5. int key;
  6. struct node *next;
  7. } node;
  8. void del(struct node *head,int x) {
  9. struct node *dummyhead=(struct node *)malloc(sizeof(struct node));
  10. dummyhead->next=head;
  11. struct node *p=head,*pre=dummyhead;
  12. while(p!=NULL) {
  13. if(p->key==x)
  14. pre->next=p->next;
  15. else
  16. pre=p;
  17. p=p->next;
  18. }
  19. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/163803
推荐阅读
相关标签
  

闽ICP备14008679号