东北林业大学锐格系统大一(指针与函数)

感觉自己最近都要写博客,看C语言了,因为快考试了,最近压力好大啊!!!!

话不多说,指针与函数,开始吧!!!
[5880](https://222-27-166-246.webvpn.nefu.edu.cn/studentExercise/index?currentClassId=459#4880_exercise_716_在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
int main()
{   float **a,*b,s;
    int n,i,j;
    while(scanf("%d",&n)!=-1)
    {  a=(float *)malloc(sizeof(float *)*n);
       for(i=0;i<n;i++)
         a[i]=(float *)malloc(sizeof(float)*3);
       b=(float *)malloc(sizeof(float )*3);
       for(i=0;i<3;i++)
            b[i]=0;
       for(i=0;i<n;i++)
        for(j=0;j<3;j++)
           scanf("%f",&a[i][j]);
       for(i=0;i<n;i++)
        { s=0;
          for(j=0;j<3;j++)
            {s=s+a[i][j];b[j]=b[j]+a[i][j];}
          printf("%.2f %.2f\n",s,s/3);
        }
       for(i=0;i<3;i++)
        printf("%.2f %.2f\n",b[i],b[i]/n);

    }

    return 0;
}

一道令人头秃的题5881
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>

int main()
{    char a[100];
    char *p;
    int i,j,n,f,l;
    int strat,end;
     int b[100]={0};
     while(~scanf("%d",&n))
     {  for(f=0;f<n;f++)
     {  getchar();
       gets(a);
     p=&a;l=strlen(a);
     for(i=0;i<l;i++)
     {
         b[i]=0;
     }
     for(i=0;i<l;i++)
     {
         if((*(p+i)<='Z'&&*(p+i)>='A')||(*(p+i)<='z'&&*(p+i)>='a'))
            {strat=i;break;}
     }
      for(i=l-1;i>=0;i--)
     {
         if((*(p+i)<='Z'&&*(p+i)>='A')||(*(p+i)<='z'&&*(p+i)>='a'))
           {end=i;break;}
     }
     j=1;
     int num=0;
     for(i=strat;i<=end;i++)
     {if((p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z'))
     {
            printf("%c",p[i]);
            if(i==end)
            {
            num++;printf("\n");break;
            }
            if(!(p[i+1]>='a'&&p[i+1]<='z')||(p[i+1]>='A'&&p[i+1]<='Z'))
            {printf(" ");num++;}
        }

    }
    printf("分出了%d个单词\n",num);
     }
     }
    return 0;
}

这个题算法很重要!!!!!!!

#include <stdio.h>
#include <stdlib.h>

void count(char *p){
    int i,start,end,num=0;
    for(i=0;i<strlen(p);i++)
        if((p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z'))
           {start=i;break;}
    for(i=strlen(p)-1;i>=0;i--)
        if((p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z'))
           {end=i;break;}
    for(i=start;i<=end;i++){
        if((p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z')){
            printf("%c",p[i]);
            if(i==end)
            {
            num++;printf("\n");break;
            }
            if(!(p[i+1]>='a'&&p[i+1]<='z')||(p[i+1]>='A'&&p[i+1]<='Z'))
            {printf(" ");num++;}
        }

    }
    printf("分出了%d个单词\n",num);
}

int main()
{
    int n;
    while(~scanf("%d",&n)){
        while(n--){
            char a[1010];
            char *p=a;
            scanf(" ");
            gets(p);
            count(p);
        }

    }
    return 0;
}


这个用了指针函数,学学习

5882
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>

char *fun(char*p[],int num)
{
     int i,max=0,mi;
     for(i=0;i<num;i++)
        {
        int j,num=0;
        char *temp=p[i];
        for(j=0;j<strlen(p[i]);j++,temp++){
             if(*temp=='*')
                num++;
        }
        if(num>max){
            max=num;mi=i;
        }
     }
     return p[mi];
}

int main()
{
    int n;
    while(~scanf("%d",&n)){
       char a[100][55];
       char *p[100];
       int i;
       for(i=0;i<n;i++){
           scanf("%s",a[i]);
            p[i]=a[i];
       }

       char *ans;
       ans=fun(p,n);
       printf("%s\n",ans);
    }
    return 0;
}

真是从未看懂过的代码

5883
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void sort1(char **pp,int n)
{   int i,j;char temp[51];
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(strcmp(pp[i],pp[j])>0)
              {strcpy(temp,pp[i]);
                strcpy(pp[i],pp[j]);
                strcpy(pp[j],temp);
              }
        }
    }
//补充完成程序
}
void output1(char *p[],int n)
{  int i;
  for(i=0;i<n;i++)
   printf("%s\n",p[i]);

 //补充完成程序
}
int main()
{
    void sort1(char **pp,int n);
    void output1(char *p[],int n);
    char str[50],*cp[20];
    int n,l,i;
    while(scanf("%d\n",&n)!=EOF)
    {  for(i=0;i<n;i++)
          {  gets(str);
             //start
            l=strlen(str);
           cp[i]=(char*)malloc(sizeof(char)*l);
             strcpy(cp[i],str);
              //在此写动态开辟并存储程序
             //end
           }
           sort1(cp,n);
           output1(cp,n);
    }
    return 0;
}

这里特别注意,字符串指针需要进行复制输入

 l=strlen(str);
           cp[i]=(char*)malloc(sizeof(char)*l);
             strcpy(cp[i],str);

5884
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int order;
double initial,x;//x表示精度
double f(int order,double x){
    if(order==1)
        return x*x*x-x*x-1;
    if(order==2)
        return x*x*x*x-3*x+1;
    if(order==3)
        return x-exp(-x);
}
double f2(int order,double x){
    if(order==1)
         return 3*x*x-2*x;
    if(order==2)
         return 4*x*x*x-3;
    if(order==3)
         return 1+exp(-x);
}
int main()
{
    while(~scanf("%d%lf%lf",&order,&initial,&x)){
        double now=initial-f(order,initial)/f2(order,initial);
        double pre=initial;//换个名字,initial太难打了
        while(fabs(now-pre)>x){
            pre=now;
            now=pre-f(order,pre)/f2(order,pre);
        }
        printf("%d %.2e %.5lf\n",order,x,now);
    }
}

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值