实验05 指针及其在程序设计中的应用

1.

#include<stdio.h>
int strlen(char *str)
{
    char *p;
    p=str;
    while(*p!='\0')
    {
        p++;
    }
    return p-str;

}
int main(void)
{
    char str[256];
    gets(str);
    printf("%d",strlen(str));
    return 0;
}

 2.

#include <stdio.h>
void count(char *str,int *upper,int *lower,int *space,int *num,int *other);
int strlen(char *p);
int main(void)
{
    char str[255];
    int n;
    gets(str);
    int a=0,b=0,c=0,d=0,e=0;
    count(str,&a,&b,&c,&d,&e);
    printf("%d %d %d %d %d",a,b,c,d,e);
    return 0;
}
void count(char *str,int *upper,int *lower,int *space,int *num,int *other)
{
    int n;
    n=strlen(str);
    while(*str!='\0')
    {
        if((*str>='A')&&(*str<='Z'))
            (*upper)++;
        if((*str>='a')&&(*str<='z'))
            (*lower)++;
        if(*str==' ')
            (*space)++;
        if((*str>='0')&&(*str<='9'))
            (*num)++;
        *other=n-*upper-*lower-*space-*num;
        str++;
    }
}
int strlen(char *p)
{
    char *s;
    s=p;
    while(*s!='\0')
        s++;
    return s-p;
}

 3.

#include <stdio.h>
int main(void)
{
    int a[50][50],b[2500],n,m,i,j,flag=1,tem=0;
    scanf("%d %d",&n,&m);
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
        {
            scanf("%d",*(a+i)+j);
            b[tem]=a[i][j];
            tem++;
        }
    while(flag)
    {
        flag=0;
        for(i=0;i<n*m-1;i++)
        {
            if(*(b+i)>*(b+i+1))
            {
                tem=*(b+i);
                *(b+i)=*(b+i+1);
                *(b+i+1)=tem;
                flag=1;
            }
        }
    }
    tem=0;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            a[i][j]=b[tem];
            tem++;
            if(j!=0)
                printf(" ");
            printf("%d",*(*(a+i)+j));
        }
        printf("\n");
    }
}

 4.

#include <stdio.h>
char *str_delete(char *s,int v,int w);
int strlen(char *s);
int main (void)
{
    char str[500],*p;
    int x,y;
    scanf("%d %d",&x,&y);
    getchar();
    gets(str);
    p=str_delete(str,x,y);
    while(*p!='\0')
        printf("%c",*(p++));
    return 0;
}
char *str_delete(char *s,int v,int w)
{
    char *p,*q;
    int i=0,n;
    n=strlen(s);
    for(i=0;i<n-v;i++)
    {
        p=s+v+i-1;
        q=s+v+w+i-1;
        *p=*q;
    }
    p=s;
    return p;
}
int strlen(char *s)
{
    char *ptr;
    ptr=s;
    while(*ptr!='\0')
        ptr++;
    return ptr-s;
}

 5.

#include <stdio.h>
int strlen(char *s);
int isValid(char *s);
int main(void)
{
    char str[500];
    int n,i,sum=0;
    scanf("%d",&n);
    getchar();
    for(i=0;i<n;i++)
    {
        gets(str);
        sum+=isValid(str);
    }
    printf("Valid:%d\n",sum);
    printf("Invalid:%d",n-sum);
    return 0;
}
int isValid(char *s)
{
    int flag=1,n,i;
    if(*s=='_'||*s>='A'&&*s<='Z'||*s>='a'&&*s<='z');
    else
        flag=0;
    n=strlen(s);
    for(i=1;i<n;i++)
    {
        if(*(s+i)=='_'||*(s+i)>='A'&&*(s+i)<='Z'||*(s+i)>='a'&&*(s+i)<='z'||*(s+i)>='0'&&*(s+i)<='9');
        else
            flag=0;
    }
    return flag;
}
int strlen(char *s)
{
    char *p;
    p=s;
    while(*p!='\0')
        p++;
    return p-s;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值