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

Day8

思维导图

在这里插入图片描述

作业

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

代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	char a[20];
	gets(a);
	int i=0;
	int j=strlen(a);
	int count =0;
	for(i=0;i<j;i++)
	{
		if(a[i]==' ')
			count++;
	}
	printf("%d\n",count);
	return 0;
}
运行结果

在这里插入图片描述

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

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

单词的个数是3

代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	char a[20];
	gets(a);
	int i=0,j=0;
	int len=strlen(a);
	int count =0;
	while(a[i]==' ')
	{
		i++;
		j++;
	}
	while(a[i]!='\0')
	{
		while(a[j]!=' '&&a[j]!='\0')
		{
			j++;
		}
		while(a[j]==' ')
		{
			j++;	
		}
		i=j;
		count+=1;
	}
	printf("%d\n",count);
	return 0;
}
运行结果

在这里插入图片描述
因为单个字母不算单词,还有不能由数字在里面,因此对此代码进行如下修改

修改后的代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	char a[20];
	gets(a);
	int i=0,j=0;
	int len=strlen(a);
	int count =0;
	while(a[i]==' ')
	{
		i++;
		j++;
	}
	while(a[i]!='\0')
	{
		int k=j;
		int flag=0;
		while(a[j]!=' '&&a[j]!='\0')
		{
			j++;
		}
		for(int n=k;n<j;n++)
		{
			if(a[n]<'A'||(a[n]>'Z'&&a[n]<'a')||a[n]>'z')
			{
				flag-=1;
				break;
			}
		}
		if(j-k==1)
			flag-=1;
		while(a[j]==' ')
		{
			j++;	
		}
		if(flag<0)
			count=count;
		else 
			count++;
		i=j;
	}
	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 x,y,z;
	printf("please enter A row&columns:\n");
	scanf("%d%d",&x,&y);//A:x row y columns
	printf("please enter B columns:\n");
	scanf("%d",&z);//B:y row, z columns
	int A[x][y];
	int B[y][z];
	int C[x][z];
	printf("please enter A:\n");
	for(int i=0;i<x;i++)
	{
		for(int j=0;j<y;j++)
		{
			scanf("%d",&A[i][j]);
		}
	}
	printf("please enter B:\n");
	for(int i=0;i<y;i++)
	{
		for(int j=0;j<z;j++)
		{
			scanf("%d",&B[i][j]);
		}
	}
	for(int m=0;m<x;m++)
	{
		for(int n=0;n<z;n++)
		{
			int sum =0;
			for(int i=0;i<y;i++)
			{
				sum+=A[m][i]*B[i][n];
			}
			C[m][n]=sum;
		}
	}
	for(int m=0;m<x;m++)
	{
		for(int n=0;n<z;n++)
		{
			printf("%-4d",C[m][n]);
		}
		puts("");
	}
	return 0;
}
运行结果

在这里插入图片描述

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

参数:二维数组,行,列

代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void Yh_triangle(int row,int col,int arr[][col]);
int main(int argc, const char *argv[])
{
	int n;
	printf("please enter row&&col:");
	scanf("%d",&n);
	int arr[n][n];
	Yh_triangle(n,n,arr);
	return 0;
}
void Yh_triangle(int row,int col,int arr[][col])
{
	for(int i=0;i<col;i++)
	{
		for(int j=0;j<=i;j++)
		{
			if(j==i||j==0)
				arr[i][j]=1;
			else
				arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
		}
	}
	for(int i=0;i<col;i++)
	{
		for(int j=0;j<=i;j++)
		{
			printf("%-4d",arr[i][j]);
		}
		puts("");
	}
}
运行结果

在这里插入图片描述

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

参数:二维数组,行,列

代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void Matrix_transposition(int row,int col,int arr[row][col]);
int main(int argc, const char *argv[])
{
	int a,b;
	printf("please enter row&col:\n");
	scanf("%d%d",&a,&b);
	int arr[a][b];
	printf("please enter arr num:\n");
	for(int i=0;i<a;i++)	
	{
		for(int j=0;j<b;j++)
		{
			scanf("%d",&arr[i][j]);
		}
	}
	Matrix_transposition(a,b,arr);
	return 0;
}

void Matrix_transposition(int row,int col,int arr[row][col])
{
	int brr[col][row];
	for(int i=0;i<col;i++)
	{
		for(int j=0;j<row;j++)
		{
			brr[i][j]=arr[j][i];
		}
	}
	for(int i=0;i<col;i++)
	{
		for(int j=0;j<row;j++)
		{
			printf("%-4d",brr[i][j]);	
		}
		puts("");
	}

}
运行结果

在这里插入图片描述

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

eg:“good good study”

输出:“study good good”

代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	char a[20];
	gets(a);
	int l=strlen(a)-1;
	int j=0;
	for(int i=0,j=l;i<j;i++,j--)
	{
		char t =a[i];
		a[i] = a[j];
		a[j] = t;
	}
	int i=j=0;
	while(a[i]!='\0')
	{
		while(a[j]!='\0'&&a[j]!=' ')
			j++;
		int k=j-1;
		while(i<k)
		{
			char t=a[i];
			a[i]=a[k];
			a[k]=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[])
{
	printf("please enter num:");
	int n;
	scanf("%d",&n);
	char a[n][20];
	for(int i=0;i<n;i++)
	{
		scanf("%s",&a[i]);
	}
	for(int i=0;i<n;i++)
	{
		printf("%s",a[i]);
		puts("");
	}
	return 0;
}
运行结果

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值