其他分享
首页 > 其他分享> > 第二周暑假作业

第二周暑假作业

作者:互联网

二级题库
double fun(double  *x)
{ int  i, j;    double  s, av, y[N];
  s=0;
  for(i=0; i<N; i++)  s=s+x[i];
/**********found**********/
  av=s/N;
  for(i=j=0; i<N; i++)
    if( x[i]>av ){
/**********found**********/
      y[j++]=x[i];
      x[i]=-1;}
  for(i=0; i<N; i++)
/**********found**********/
    if( x[i]!= -1) y[j++]=x[i];
  for(i=0; i<N; i++)x[i] = y[i];
  return  av;
}


/*************found**************/
void upfst(char *p)
{
  int k=0;
  for ( ;*p;p++)
     if (k)
        {
         if (*p==' ')  
             k=0;
        }
     else
        {
            if (*p!=' ')  
            {
                k=1;
                *p=toupper(*p);
            }
        }
}


double fun (int w[][N])
{
     int i,j,k=0;
     double sum=0.0;
     for(i=0;i<N;i++)
     for(j=0;j<N;j++)
     if(i==0||i==N-1||j==0||j==N-1)
     {
         sum+=w[i][j];
         k++;
     }
     return sum/k;
}

c语言十题
1.13个人围成一圈,从第一个人开始顺序报数,1,2,3。凡报到3者退出圈子。找出最后留在圈子中的人原来的序号。要求用循环链表处理。
#include <stdio.h>
#include <stdlib.h>
#define N 13
struct per
{
    int number;
    int next;
}link[N+1];
int main(int argc, char *argv[])
{    
    int i;
    for(i=1;i<=N;++i)
    {
        if(i==N)
            link[i].next=1;
        else
            link[i].next=i+1;
            link[i].number=i;
    }
    int j=N;
    i=0;
    int count=0;
    while(count<N-1)
    {
        while(i<3)
        {
                j=link[j].next;
                if(link[j].number)
                {
                    i++;
                }
        }
        if(i==3)
        {
            printf("出圈=%d\n",link[j].number);
            link[j].number=0;
            count++;
            i=0;
        }
    }
    for(i=1;i<=N;i++)
    {
        if(link[i].number)
            printf("%d",link[i].number);
    }
    printf("\n");
    return 0;
}

2.拆分实数的整数与小数部分:要求自定义一个函数void splitfloat(float x, int *intpart, float *fracpart),其中x是被拆分的实数,*intpar
#include<stdio.h>
void splitfloat(float x,int *intpart,float *fracpart);
int main(void)
{
    float x,fracpart;
    int intpart;
    scanf("%f",&x);
    splitfloat(x,&intpart,&fracpart);
    printf("intpart=%d\n",intpart);
    printf("fracpart=%f\n",fracpart);
}
void splitfloat(float x,int *intpart,float *fracpart)
{
    *intpart=(int)x;
    *fracpart=x-*intpart;
}

3.动态内存分配的方法实现冒泡排序
#include<stdio.h>
#include<stdlib.h>
void bubble(int a[], int n)
{
    int i,j,temp;
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if(a[j]>a[j+1])
            {
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
        }
    }
}
int main()
{
    int N,*num,i;
    scanf("%d", &N);
    num=(int*)calloc(N, sizeof(int));
    for(i=0;i<N;i++)
    {
        scanf("%d", &num[i]);
    }
    bubble(num,N);
    for(i=0;i<N;i++)
        printf("%d\t",num[i]);
        printf("\n");
    return 0;
}

4.编写一个函数New,对n个字符开设连续的存储空间,此函数应返回一个指针(地址),指向字符串开始的空间。New(n)表示分配n个字节的内存空间。
#include <stdio.h>
#include <stdlib.h>
char *news(int n);
int main()
{
    int num;
    char *n;
    scanf("%d",&num);
    n=news(num);
    printf("%d\n",*n);
    return 0;
}
char *news(int n)
{
    char *p;
    p=(char *)malloc(n*sizeof(char));
    return p;
}

5.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃年一半,又多吃一个。以后每天早上都吃了前一天剩下的一半多一个。
#include<stdio.h>
int main()
{
    int a=1,b=1,i;
    for(i=9;i>0;i--)
    {   
        a=2*(a+1);
        b+=a;
    }
    printf("第一天一共摘了%d\n",a);
    return 0;
}

6.输入一个任意长(>2)的字符串和一个长度为2 的字符串,用函数编程统计长度为2的字符串在任意长字符串中出现的次数。
#include<stdio.h>
#include<string.h>
int main()
{
    int i,j,k,tl,pl,count=0;
    char t[50],p[10];
    gets(t);
    gets(p);
    tl=strlen(t);
    pl=strlen(p);
    for(i=0;i<=tl-pl;i++)
    {
        for(j=0,k=i;j<pl&&*(p+j)==*(t+k);j++,k++);
            if(j==pl)
                count++;
    }
    printf("子串%s出现次数%d\n",p,count);
}

7.建立简单的静态链表。
#include <stdio.h>
struct  student
{
    long num;
    float score;
    struct student *next;
};
void main(  )
{
     struct student a,b,c,*head,*p;
     a.num=99101;
    a.score=89.5;
    b.num=99102;
    b.score=90;
     c.num=99103;
    c.score=85;
    head=&a;
    a.next=&b;
    b.next=&c;
     c.next=NULL;
    p=head;
     do{
        printf("%ld  %5.1f\n",p->num,p->score);
            p=p->next;
    }while(p!=NULL);
}

8.写递归函数: n+1 m=0 akm= akm(m-1,1)
#include <stdio.h>
int ack(int m,int n)
{
     if(m==0)
           return n+1;
     else
      {
           if(m!=0&&n==0)
               return ack(m-1,1);
           else if(m!=0&&n!=0)
               return ack(m-1,ack(m,n-1));
      }
}
void main()
{
  int a,b;
  scanf("%d%d",&a,&b);
  printf("%d\n",ack(a,b));
}

9.编写程序,求出n1至n2自然数之和。要求使用递归方法。
#include<stdio.h>
he(int n,int m)
{     
    int sum=0;
    if(n==m)     
        return(n);     
    else     
        return(n+he(n+1,m));
}
main()
{     
    int n,m;     
    scanf("%d%d",&n,&m);     
    printf("%d",he(n,m));
}

标签:num,int,第二周,link,printf,return,include,暑假作业
来源: https://blog.csdn.net/qq_53079169/article/details/118724911