DAY8 函数和二维数组

1.输入一个字符串,计算空格的个数

#include <stdio.h>
  2 int main(int argc, const char *argv[])
  3 {
  4     char a[20];
  5     gets(a);
  6     int i;
  7     unsigned long count =0;
        //for(   i<strlen(arr)-1)
  8     for(i=0;a[i]!='\0';i++)
  9     {
 10         if(a[i]==32)
 11         {
 12             count++;                                                        
 13         }
 14     }
 15 
 16     printf("空格有%ld\n个",count);
 17     return 0;
 18 }

2.输入一个字符串,计算单词的个数

eg: “good good study”(空格的格式可能是多个)

单词的个数是3,

  1 #include <stdio.h>
  2 int main(int argc, const char *argv[])
  3 {
  4     //good good  study 
  5     char arr[20];
        //有空格,不能用scanf
  6     gets(arr);
  7     int i;
  8     int flag =0;
  9     unsigned long count =0;
 10     for(i=0;arr[i]!='\0';i++)
 11     {
 12         if(arr[i]==32)
 13         {
 14             flag = 0;
 15         }
 16         if(arr[i]!=32&&flag==0)
 17         {
 18             flag =1;
 19             count++;
 20         }
 21     }
 22 
 23     printf("有%ld\n个单词",count);                                          
 24     return 0;
 25 }

3.矩阵相乘:前提条件A矩阵的列数需要和B矩阵的行数相同

#include <stdio.h>                                       
  2 int main(int argc, const char *argv[])
  3 {
  4     int i,j,k;
  5     int a[2][3];
  6     int b[3][2];
  7     int c[2][2];
  8     for(i=0;i<2;i++)
  9     {
 10         for(j=0;j<3;j++)
 11         {
 12             scanf("%d",&a[i][j]);
 13         }
 14     }
 15 
 16     for(i=0;i<3;i++)
 17     {
 18         for(j=0;j<2;j++)
 19         {
 20             scanf("%d",&b[i][j]);
 21         }
 22     }
 23     int sum;
 24 
 25     for(i=0;i<2;i++)
 26     {
 27         
 28         for(j=0;j<2;j++)
 29         {
 30          sum=0;
 31          for(k=0;k<3;k++)
 32          {
 33             sum+=a[i][k]*b[k][j];
 34          }
 35         c[i][j]=sum;
 36         }
 37     }
 38     for(i=0;i<2;i++)
 39     {
 40         for(j=0;j<2;j++)
 41         {
 42             printf("%d",c[i][j]);
       
 44         }
 45         puts(" ");
 46     }
 47 
 48     return 0;
 49 }

4.定义有参无返函数实现杨慧三角

参数:二维数组,行,列

  1   1 #include <stdio.h>
  2 #include<string.h>
  3 void Yanghui(int n,int arr[n][n]);
  4 int main(int argc, const char *argv[])
  5 {
  6     //int line,row;
  7     
  8     int n=0;
  9     scanf("%d",&n);
 10     int arr[n][n];
 11 //  line =sizeof(arr)/sizeof(arr[0]);
 12 //  row = sizeof(arr[0])/sizeof(arr[0][0]);
 13     Yanghui(n,arr);
 14 
 15 
 16     return 0;
 17 }
 18 
 19 void Yanghui(int n,int arr[n][n])
 20 {
 21     int i,j;
 22     for(i=0;i<n;i++)
 23     {
 24         for(j=0;j<=i;j++)                                                   
 25         {
 26             if(j==0||i==j)
 27             {
 28                 arr[i][j]=1;
 29             }
 30             else
 31             {
 32                 arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
 33             }
 34 
 35             printf("%d",arr[i][j]);
 36         }
 37         puts(" ");
 38     }
 39 }
~               

5.定义有参无返函数实现二维数组转置?

参数:二维数组,行,列

 #include <stdio.h>
  2 #include<string.h>
  3 void Erwei(int line,int row, int a[line][row]);
  4 int main(int argc, const char *argv[])
  5 {
  6     /*int n;
  7     scanf("%d",&n);*/
  8     int a[2][3]={1,2,3,4,5,6};
  9     int line = sizeof(a)/sizeof(a[0]);
 10     int row = sizeof(a[0])/sizeof(a[0][0]);
 11     Erwei(line,row,a);
 12     return 0;
 13 }
 14 
 15 void Erwei(int line,int row,int a[line][row])
 16 {
 17     int b[row][line];
 18 
 19     int i,j;
 20     for(i=0;i<line;i++)
 21     {
 22         for(j=0;j<row;j++)
 23         {
 24             b[j][i]=a[i][j];
 25         }
 26     }
 27     for(i=0;i<row;i++)
 28     {
 29         for(j=0;j<line;j++)
 30         {
 31             printf("%d",b[i][j]);
 32         }
 33         puts("");
 34     }
 35 
 36 }           

6.输入一个字符串实现单词的逆置

eg:"good good study"

输出:“study good good”

 #include <stdio.h>
  2 #include<string.h>
  3 int main(int argc, const char *argv[])
  4 {
  5     // study good good
  6     int i,j,k;
  7     char a[20]="";
  8     gets(a);
  9     printf("原字符串是%s\n",a);
 10     //1.整体逆置
 11     i =0;
 12     j = strlen(a)-1;
 13     while(i<j)
 14     {
 15         char t =a[i];
 16         a[i]=a[j];
 17         a[j]=t;
 18         i++;
 19         j--;
 20     }
 21 
 22     //doog doog  yduts
 23     //2.单词逆置
 24     i=j=0;
 25     while(a[i]!='\0')
 26     {
 27         while(a[j]!=' '&&a[j]!='\0')
 28         {
 29             j++;
 30         }
 31         k=j-1;
 32         while(i<k)
 33         {
 34             char s =a[i];
 35             a[i]=a[k];
 36             a[k]=s;
 37             i++;
 38             k--;                                                            
 39         }
 40         while(a[j]==' ')
 41         {
 42 
 43             j++;
        }
 45         i=j;
 46 
 47     }
 48 
 49     puts(a);
 50     return 0;
 51 }

7.输入n个字符串每个字符串20字节,并实现输出

  1 #include <stdio.h>
  2 
  3 
  4 int main(int argc, const char *argv[])
  5 {
  6     int n;
  7     int i;
  8     char arr[n][20];
  9     scanf("%d",&n);
 10     for(i=0;i<n;i++)
 11     {
 12         scanf("%s",&arr[i][0]);
 13     }
 14 
 15     for(i=0;i<20;i++)
 16     {
 17         printf("%s",arr[i]);                                                
 18     }
 19     
 20     return 0;
 21 }
~              

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值