2023/1/10号作业复习

    • 进行atoi函数的包装

#include <stdio.h>
int atoi(char *p)
{
    int arr[6];

    for(int i=0;i<7;i++)
    {
        if(*p!='\0')
        {
            arr[i]=(int)*p-48;
            printf("%d\t",arr[i]);
            p++;
        }
    }

}
int main(int argc, const char *argv[])
{
    char arr[]="123456";
    atoi(arr);
    return 0;
}

2.使用多文件编译求数组中完数和素数的和以及素数的个数

    • 主函数

#include "head.h"
int main(int argc, const char *argv[])
{
//    char arr[]="hello";
//    int n=strlen(arr)-1;
//    Rec(arr,n);
    int arr[][4]={6,33,22,28,46,4,6,9,89};
    int line=sizeof(arr)/sizeof(arr[0]);
    int row=sizeof(arr[0])/sizeof(arr[0][0]);

    int n=wanshu(arr,line,row);
    printf("数组中完数的和为%d\n",n);
    int m=shushu(arr,line,row);
    printf("数组中素数的和为%d\n",m);
//    sushu(arr);
}
    • 调用函数

#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
#include<string.h>

// void Rec(char arr[],int len);
int wanshu(int (*p)[4],int line,int row);
int shushu(int (*p)[4],int line,int row);
#endif

3.自定义函数

#include "head.h"
#if 0
void Rec(char arr[], int len)
{
    if(len==0)
    {
        printf("%c  ",arr[len]);
    }
    else if(len>=1)
    {
        printf("%c  ",arr[len]);
        len--;

        Rec(arr,len);
    }




}
#endif
int wanshu(int (*p)[4],int line,int row)
{
    int i=0;int j=0;int k=1;
    int num=0;int num1=0;
    for(i=0;i<line;i++)
    {

        for(j=0;j<row;j++)
        {
            while(k<(*(*(p+i)+j)))
            {
                if(*(*(p+i)+j)%k==0)
                {
                    num=num+k;
                }
                k++;
            }
            if(num==(*(*(p+i)+j)))
            {
                num1+=*(*(p+i)+j);

            }
            k=1;num=0;    
            
        }
    }
    return num1;
}
int shushu(int (*p)[4],int line,int row)
{
    int i=0;int j=0;int k=1;
    int num=0;int num1=0;
    int l=0;
    for(i=0;i<line;i++)
    {

        for(j=0;j<row;j++)
        {
            while(k<=*(*(p+i)+j))
            {
                if(*(*(p+i)+j)%k==0)
                {
                    num+=k;
                }
                k++;
            }
            if(num==*(*(p+i)+j)+1)
            {
                num1+=*(*(p+i)+j);
                l=l+2;
            }
            k=1;
            num=0;
        }
    }
            printf("数组中素数的个数为%d\n",l);
    return num1;
}

3.多个字符串逆置

#include <stdio.h>
#include<string.h>
//1.先对整个整个字符串进行逆置,2.再对单个字符串进行逆置。
void add(char *p,int i,int j)
{
    char temp;
    while(i<j)
    {
        temp=*(p+i);
        *(p+i)=*(p+j);
        *(p+j)=temp;
        i++;
        j--;
    }

}
//完成了对于整个数组的逆置

void bbb(char *p)
{
    int i=0;
    int j=0;
    int k=0;
    while(*(p+i)!='\0')
    {
        while(*(p+j)!=' '&&*(p+j)!='\0')
        {
            j++;
        }
        k=j-1;
        add(p,i,k);
        while(*(p+j)==' ')
        {
            j++;
        }
        i=j;
    }
    printf("%s\n",p);
}    


int main(int argc, const char *argv[])
{
    char arr[]="hello    world    hi";
    int n=strlen(arr);
    add(arr,0,n-1);
    bbb(arr);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值