第五次作业

读入两个字符串s1和s2,将s2中的全部字符复制到字符数组s1中去。要求不使用strcpy函数,并保证字符串末尾的’\0’标识符同时被赋值

#include <stdio.h>
void main()
{
int i;
char s1[30],s2[30];
gets(s1);
gets(s2);
for(i=0;i<30;i++)
{
s1[i]=s2[i];
}
puts(s1);
}

读入两个字符串s1和s2,比较这两个字符串。若s1>s2,输出一个正数;若s1=s2,输出0;若s1<s2,输出一个负数。输出的非零值应该是相比较的两个字符串第一个不相同位置的字符ASCII差值,例如”And”和”Aid”比较,根据第2个字符的比较结果,应输出5。
要求不要使用strcpy和strcmp函数。

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

int main()
{
   char s1[101];
   char s2[101];

   gets(s1);
   gets(s2);

   int long1=strlen(s1);
   int long2=strlen(s2);

   if(long1>long2)
   {
       int x;

       for(int i=0;i<long2;i++)
       {
           if(s1[i]!=s2[i])
           {
               x=abs(s1[i]-s2[i]);
               printf("%d\n",x);
               break;
           }
       }
   }
   else if(long1==long2)
   {
       int x=0;

       printf("%d\n",x);
   }
   else if(long1<long2)
   {
       int x;

       for(int i=0;i<long1;i++)
       {
           if(s1[i]!=s2[i])
           {
               x=-abs(s1[i]-s2[i]);
               printf("%d\n",x);
               break;
           }
       }
   }

    return 0;
}

有一行电文,已经按照如下规则译成了密码:
A->Z a->z
B->Y b->y
C->X c->x
…  …
…  …
即第1个字母变换成第26个字母,第i个字母变换成第(26-i+1)个字母。非字母字符不变。给定一段密码,请将其译成原文并输出。

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

int main()
{
    char s1[101];
    char s2[101];

    gets(s1);

    int longs=strlen(s1);

    for(int i=0;i<longs;i++)
    {
        if(s1[i]>='A'&&s1[i]<='Z')
        {
            s2[i]='A'+'Z'-s1[i];
        }
        else if(s1[i]>='a'&&s1[i]<='z')
        {
            s2[i]='a'+'z'-s1[i];
        }
        else
            s2[i]=s1[i];
    }
    puts(s2);
    return 0;
}

输出如下图案:

* * * * *

 * * * * *

  * * * * *

   * * * * *

    * * * * *

请使用字符数组的方式完成本题。

#include <stdio.h>
#include <stdlib.h>
#define r 15
#define c 15

int main()
{
    char chars[r][c]={ "* * * * *",
                        " * * * * *",
                        "  * * * * *",
                        "   * * * * *",
                        "    * * * * *"};
    for(int i=0;i<r;i++)
    {
        printf("%s\n",chars[i]);
    }

    return 0;
}

给出一篇文章,共有3行文字,每行有最多80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。

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

int main(void)
{
    char sentence1[81];
    char sentence2[81];
    char sentence3[81];
    int x1=0,y1=0,z1=0,n1=0,t1=0;
    int x2=0,y2=0,z2=0,n2=0,t2=0;
    int x3=0,y3=0,z3=0,n3=0,t3=0;
    gets(sentence1);
    gets(sentence2);
    gets(sentence3);

    int L1=strlen(sentence1);
    int L2=strlen(sentence2);
    int L3=strlen(sentence3);

    for(int i=0;i<L1;i++)
    {
        if(sentence1[i]>='A'&&sentence1[i]<='Z')
        {
            x1=x1+1;
        }
        else if(sentence1[i]>='a'&&sentence1[i]<='z')
        {
            y1=y1+1;
        }
        else if(sentence1[i]>='0'&&sentence1[i]<='9')
        {
            z1=z1+1;
        }
        else if(sentence1[i]==' ')
        {
            n1=n1+1;
        }
        else t1=t1+1;
    }

    for(int i=0;i<L2;i++)
    {
        if(sentence2[i]>='A'&&sentence2[i]<='Z')
        {
            x2=x2+1;
        }
        else if(sentence2[i]>='a'&&sentence2[i]<='z')
        {
            y2=y2+1;
        }
        else if(sentence2[i]>='0'&&sentence2[i]<='9')
        {
            z2=z2+1;
        }
        else if(sentence2[i]==' ')
        {
            n2=n2+1;
        }
        else t2=t2+1;
    }

    for(int i=0;i<L3;i++)
    {
        if(sentence3[i]>='A'&&sentence3[i]<='Z')
        {
            x3=x3+1;
        }
        else if(sentence3[i]>='a'&&sentence3[i]<='z')
        {
            y3=y3+1;
        }
        else if(sentence3[i]>='0'&&sentence3[i]<='9')
        {
            z3=z3+1;
        }
        else if(sentence3[i]==' ')
        {
            n3=n3+1;
        }
        else t3=t3+1;
    }

    printf("%d %d %d %d %d",x1+x2+x3,y1+y2+y3,z1+z2+z3,n1+n2+n3,t1+t2+t3);

    return 0;
}

给定15个按从大到小已经有序的整数,将其放在一个数组中。另外输入一个整数,要求使用折半查找法找出该数是数组中的第几个元素的值。如果该数不在数组中,则输出“NO”。

#include <stdio.h>
#include <stdlib.h>
#define N 15

int main()
{
    int ints[N];
    int n;

    for(int i=0;i<15;i++)
    {
        scanf("%d",&ints[i]);
    }
/*    for(int i=0;i<15;i++)
    {
        printf("%d ",ints[i]);
    }

    printf("\n");
*/
    scanf("%d",&n);

    if(ints[0]>ints[14])
    {
        if(n>ints[7])
        {
            if(n>ints[3])
            {
                if(n==ints[0])
                {
                    printf("0");
                }
                else if(n==ints[1])
                {
                   printf("1");
                }
                else if(n==ints[2])
                {
                   printf("2");
                }
                else
                {
                    printf("NO");
                }
            }
            else if(n==ints[3])
            {
                printf("3");
            }
            else if(n<ints[3])
            {
                if(n==ints[4])
                {
                    printf("4");
                }
                else if(n==ints[5])
                {
                   printf("5");
                }
                else if(n==ints[6])
                {
                   printf("6");
                }
                else
                {
                    printf("NO");
                }
            }
            else
            {
                printf("NO");
            }
        }
        else if(n<ints[7])
        {
            if(n>ints[11])
            {
                if(n==ints[8])
                {
                    printf("8");
                }
                else if(n==ints[9])
                {
                    printf("9");
                }
                else if(n==ints[10])
                {
                    printf("10");
                }
                else
                {
                    printf("NO");
                }
            }
            else if(n<ints[11])
            {
                if(n==ints[12])
                {
                    printf("12");
                }
                else if(n==ints[13])
                {
                    printf("13");
                }
                else if(n==ints[14])
                {
                    printf("14");
                }
                else
                {
                    printf("NO");
                }
            }
        }
    }
    else if(ints[0]<ints[14])
    {
        if(n<ints[7])
        {
            if(n<ints[3])
            {
                if(n==ints[0])
                {
                    printf("0");
                }
                else if(n==ints[1])
                {
                   printf("1");
                }
                else if(n==ints[2])
                {
                   printf("2");
                }
                else
                {
                    printf("NO");
                }
            }
            else if(n==ints[3])
            {
                printf("3");
            }
            else if(n>ints[3])
            {
                if(n==ints[4])
                {
                    printf("4");
                }
                else if(n==ints[5])
                {
                   printf("5");
                }
                else if(n==ints[6])
                {
                   printf("6");
                }
            }
            else
            {
                printf("NO");
            }
        }
        else if(n>ints[7])
        {
            if(n<ints[11])
            {
                if(n==ints[8])
                {
                    printf("8");
                }
                else if(n==ints[9])
                {
                    printf("9");
                }
                else if(n==ints[10])
                {
                    printf("10");
                }
                else
                {
                    printf("NO");
                }
            }
            else if(n==ints[11])
            {
                printf("11");
            }
            else if(n>ints[11])
            {
                if(n==ints[12])
                {
                    printf("12");
                }
                else if(n==ints[13])
                {
                    printf("13");
                }
                else if(n==ints[14])
                {
                    printf("14");
                }
                else
                {
                    printf("NO");
                }
            }
            else
            {
                printf("NO");
            }
        }

    }

    printf("\n");

    return 0;
}

找出一个二维数组中的所有鞍点,即该位置上的元素在该行中最大但是在该列中最小。需要注意有可能鞍点不存在,此时需要输出“NO”。

#include<stdio.h>

void main()
{
    int i,j,k,m,n,a[50][50],max,maxj;
    scanf("%d %d",&m,&n);
    for(i=0;i<m;i++)
    for(j=0;j<n;j++)
    scanf("%d",&a[i][j]);
    for(i=0;i<m;i++)
    {
        max=a[i][0];
        maxj=0;
        for(j=1;j<n;j++)
        if(max<a[i][j])
        {
            max=a[i][j];
            maxj=j;
        }
        for(k=0;k<m;k++)
        if(max>a[k][maxj])
        break;
        if(k>=m)
        printf("%d %d %d ",max,i,maxj);
    }


}

输出杨辉三角形的前n行。

#include<stdio.h>
#define N 50
int main(void)
{
    int n;
    scanf("%d", &n);

    int ints[N][N] = { 0 };

    for (int i = 0; i < n; i++)
    {
        ints[i][0] = ints[i][i] = 1;
    }
    for (int i=2; i < n; i++)
    {
        for (int j = 1; j < n-1; j++)
        {
            ints[i][j] = ints[i - 1][j] + ints[i - 1][j - 1];
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if(ints[i][j]!=0) printf("%d ", ints[i][j]);
        }
        printf("\n");
    }
}

将一个数组中的值按照原始顺序的逆序重新存放,并输出逆序后的数组。

#include<stdio.h>

void main()
{
    int i,a[50],n,t;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    scanf("%d",&a[i]);
    for(i=0;i<=(n-1)/2;i++)
    {
        t=a[n-1-i];
        a[n-1-i]=a[i];
        a[i]=t;
    }
    for(i=0;i<n;i++)
    printf("%d ",a[i]);


}

给定一个从小到大有序的整数序列,将其保存至数组。另外输入一个整数,将其插入至这个数组中并保持数组有序。

#include<stdio.h>

void main()
{
    int i,a[50],n,m;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    scanf("%d",&a[i]);
    scanf("%d",&m);
    for(i=n-1;i>=0;i--)
    {
        if(m>a[i])
        {
            a[i+1]=m;
            break;
        }
        else
        a[i+1]=a[i];
    }
    if(i<0)
    a[0]=m;
    for(i=0;i<n+1;i++)
    printf("%d ",a[i]);


}

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值