美文网首页
嵌入式第七天:数组习题

嵌入式第七天:数组习题

作者: 水枂 | 来源:发表于2019-10-08 22:03 被阅读0次

    今天来讲解一下数组相关的习题,巩固昨天的知识
    欢迎加入嵌入式学习群:559601187

    1.对于二维数组首地址偏移。
    二维数组数组名偏移一个数,地址偏移一行,针对这个问题后面会做一个详细的讲解

    #include <stdio.h>
    int main()
    {
      int str[3][3]={1,2,3,4,5,6,7,8,9};
      int i=0,j=0;
      for(i=0;i<3;i++)
      {
        for(j=0;j<3;j++)
        {
            printf("str[%d][%d]=%p\n",i,j,&str[i][j]);
        }
      }
      printf("%p\n",(str+1)[0]);//4地址--偏移一行
      printf("%d\n",(str[0]+1)[0]);//数字2--偏移一个元素
      return 0;
    }
    

    2、利用数组实现斐波那契数列的前30项,并要求格式化对齐,每行值输出5个数
    (斐波那契数列:1 1 2 3 5 8 13 21……)

    #include <stdio.h>
    int main()
    {
      int str[30]={1,1},i=0,sum=0;
     
      for(i=2;i<30;i++)
      {
        str[i]=str[i-1]+str[i-2];
      }
      for(i=0;i<30;i++)
      {   
        printf("%-8d",str[i]);    
        if((i+1)%5==0)
        {
            printf("\n"); 
        }
      }
      return 0;
    }  
    

    3、要用用二维数组实现:求一个34的矩阵的转置矩阵
    (将原来矩阵的行变成新矩阵的列,原来矩阵的列变成新矩阵的行)。
    *

    #include <stdio.h>
    int main()
    {
      int str[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},i=0,j=0;
      int str2[4][3]={0};
      for(i=0;i<3;i++)
      {
        for(j=0;j<4;j++)
        {
            str2[j][i]=str[i][j];
        }
      }
      for(i=0;i<4;i++)
      {
        for(j=0;j<3;j++)
        {
            printf("%-4d",str2[i][j]);
        }
        printf("\n");
      }
      return 0;
    }
    

    4、输入一行字符串,统计其中大写字母的个数,并将所有的大写字母转化成小写字母后输出。scanf(“%s”,数组名)

    #include <stdio.h>
    #include <string.h>
    int main()
    {
      char str[100]={0};
      int i=0,len=0,count=0;
      scanf("%s",str);
      len=strlen(str);
      for(i=0;i<len;i++)
      {
        if(str[i]>='A'&&str[i]<='Z')
        {
            count++;
            str[i]+=32;
        }
      }
      printf("count=%d,%s\n",count,str);
      return 0;
    }
    

    5、输入一个字符串,判断是否是回文。(回文:这个字符串顺读和反读是一样的。
    如“abcba”和”123321”都是回文

    #include <stdio.h>
    #include <string.h>
    int main()
    {
      char str[100]={0};
      int i=0,len=0;
      scanf("%s",str);
      len=strlen(str);
      for(i=0;i<len/2;i++)
      {
        if(str[i]==str[len-i-1])
        {
            //count++;
            break;
        }
      }
      if(i==len/2)
      {
        printf("yes\n");
      }
      else
      {
        printf("no\n");
      }
      return 0;
    }
    

    6、按以下输出格式打印杨辉三角的前10行
    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1
    1 5 10 10 5 1

    #include <stdio.h>
    #include <string.h>
    int main()
    {
      int str[10][10]={0};
      int i=0,j=0;
      for(i=0;i<10;i++)
      {
        str[i][0]=1;
        str[i][i]=1;
      }
      for(i=2;i<10;i++)
      {
        for(j=1;j<10;j++)
        {
            str[i][j]=str[i-1][j]+str[i-1][j-1];
        }
      }
      for(i=0;i<10;i++)
      {
        for(j=0;j<=i;j++)
        {
            printf("%-5d",str[i][j]);
        }
        printf("\n");
      }
      return 0;
    }
    

    9、假设有10个数已经按照从小到大的顺序存放在数组中,要求向从键盘输入一个整数,
    插入这10个数中,使数组仍是从小到大的顺序排列

    #include <stdio.h>
    #include <string.h>
    int main()
    {
      int str[11]={1,2,3,4,5,6,7,8,9,10};
      int i=0,j=0,num=0,temp=0;
      scanf("%d",&num);
      for(i=0;i<10;i++)
      {
        if(num<str[i])
        {
            temp=i;
            break;
        }
      }
      if(num>str[9])
      {
        temp=10;
      }
      for(i=10;i>temp;i--)
      {
        str[i]=str[i-1];
      }
      str[temp]=num;
      for(i=0;i<11;i++)
      {
        printf("%d\n",str[i]);
      }
      return 0;
    }
    

    10、输入10进制数转换为二进制进行输出

    #include <stdio.h>
    #include <string.h>
    int main()
    {
      int str[100]={0};
      int count=0,num=0,i=0;
      scanf("%d",&num);
      while(num)
      {
        str[count++]=num%2;
        num/=2;
      }
      for(i=count-1;i>=0;i--)
      {
        printf("%-2d",str[i]);
      }
      printf("\n");
      return 0;
    }
    

    本文章仅供学习交流用禁止用作商业用途,文中内容来水枂编辑,如需转载请告知,谢谢合作

    微信公众号:zhjj0729

    微博:文艺to青年

    相关文章

      网友评论

          本文标题:嵌入式第七天:数组习题

          本文链接:https://www.haomeiwen.com/subject/mkbipctx.html