嵌入式学习-C语言基础-Day8

思维导图

在这里插入图片描述

作业

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

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	char a[20]="";//初始化
	printf("输入一个字符串:");
	gets(a);
	int len=strlen(a);
	printf("字符串长度是:%d\n",len);
	int i=0,j=0;
	int count=0;
	while(a[i]!='\0')
	{
		if(a[i]==' ')
			count++;
		i++;
	}
	printf("空格个数是:%d\n",count);
	return 0;
}

运行结果
在这里插入图片描述

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

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	char a[20]="";
	printf("输入一行字符串:\n");
	gets(a);
	int i=0,j=0,count=0;
	int word=0; //标记位,标记是否在单词内
	while(a[i]!='\0')
	{
		if(a[i]==' ') //检测到空格
		{
			word=0;  //标记位为0
		}else if(word==0)  // 不是空格且标记位为0
		{
			word=1;   //设置标记位为1,在单词内
			count++;  //计单词数
		}
		i++;
	}
	printf("单词个数是%d\n",count);

	return 0;
}


或者
在这里插入图片描述

运行结果
在这里插入图片描述

3、矩阵相乘:

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

原理
在这里插入图片描述

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int a,b,c,d;  //输入矩阵
	printf("数组arr1的行列分别是:");
	scanf("%d%d,",&a,&b);
	printf("数组arr2的行列分别是:");
	scanf("%d%d,",&c,&d);
	if(b!=c)
		printf("error\n");
	int arr1[a][b];
	int arr2[c][d];
	int arr3[a][d];
	printf("输入数组arr1的元素\n");
	for(int i=0;i<a;i++)
	{
		for(int j=0;j<b;j++)
		{
			scanf("%d",&arr1[i][j]);
		}
	}
	printf("输入数组arr2的元素\n");
	for(int i=0;i<c;i++)
	{
		for(int j=0;j<d;j++)
		{
			scanf("%d",&arr2[i][j]);
		}
	}

	for(int i=0;i<a;i++)  //矩阵相乘
	{
		for(int j=0;j<d;j++)
		{
			int sum=0;
			for(int k=0;k<b;k++)
			{
				sum+=arr1[i][k]*arr2[k][j];
			}
			arr3[i][j]=sum;
		}
	}

	printf("相乘后得到;\n"); //循环输出
	for(int i=0;i<a;i++)
	{
		for(int j=0;j<d;j++)
		{
			printf("%d  ",arr3[i][j]);
		}
		puts("");
	}
	return 0;
}

运行结果
在这里插入图片描述

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

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void Yanghui(int n)  //函数在主函数前 可不加分号
{
	int a[n][n];
	int i=0,j=0;
	for(i=0;i<n;i++)
	{
		for(j=0;j<=i;j++)
		{
			if(j==0||i==j)
			{
				a[i][j]=1;
			}else
			{
				a[i][j]=a[i-1][j-1]+a[i-1][j];
			}
			printf("%-4d",a[i][j]);
		}
	puts("");
	}
	

}
int main(int argc, const char *argv[])
{
	int n;
	printf("请输入杨辉三角层数:");
	scanf("%d",&n);
	Yanghui(n);

	return 0;
}

运行结果

在这里插入图片描述

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

参数:二维数组,行,列

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void Rev(int line,int row,int a[line][row]);
int main(int argc, const char *argv[])
{
	int a[][4]={1,2,3,4,12,12,13,13,15,15,15,15};
	int line=sizeof(a)/sizeof(a[0]);
	int row=sizeof(a[0])/sizeof(a[0][0]);
	Rev(line,row,a);
	return 0;
}

void Rev(int line,int row,int a[line][row])
{
	int b[row][line];
	for(int i=0;i<line;i++)
	{
		for(int j=0;j<row;j++)
		{
			b[j][i]=a[i][j];
		}
	}

	for(int i=0;i<row;i++)
	{
		for(int j=0;j<line;j++)
		{
			printf("%-3d",b[i][j]);
		}
		puts("");
	}
}

运行结果
在这里插入图片描述

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

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	char a[30]="";
	printf("请输入字符串:\n");
	gets(a);
	int i=0,j=strlen(a)-1;
	while(i<j)  //交换位置
	{		
		char t=a[i];
		a[i]=a[j];
		a[j]=t;
		i++;
		j--;
	}
	i=0,j=0;
	while(a[i]!='\0')  //外层循环每一个字符
	{
		while(a[j]!=' '&&a[j]!='\0')  //找到空格
		{
			j++;
		}
		int k=j-1;   
		while(i<k)  //空格前的字符进行逆置
		{
			char t=a[k];a[k]=a[i];a[i]=t;
			i++;
			k--;
		}
		while(a[j]==' ')  //跳过空格 
		{
			j++;
		}
		i=j;  
	}
	puts(a);
	return 0;
}

运行结果

在这里插入图片描述

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

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int n;
	printf("请输入字符串个数:");
	scanf("%d",&n);
	char a[n][20];
	getchar();
	for(int i=0;i<n;i++)
	{
		printf("请输入第%d个字符串:",i+1);
		gets(a[i]);
		//scanf("%s",a[i]);
	}

	for(int i=0;i<n;i++)
	{
		printf("第%d个字符串是:%s\n",i+1,a[i]);
	}
	return 0;
}

运行结果

在这里插入图片描述

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值