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

Day8

思维导图

嵌入式学习-C语言基础-Day8_第1张图片

作业

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

代码
#include 
#include 
#include 
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;
}
运行结果

嵌入式学习-C语言基础-Day8_第2张图片

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

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

单词的个数是3

代码
#include 
#include 
#include 
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;
}
运行结果

嵌入式学习-C语言基础-Day8_第3张图片
因为单个字母不算单词,还有不能由数字在里面,因此对此代码进行如下修改

修改后的代码
#include 
#include 
#include 
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;
}


运行结果如下图

嵌入式学习-C语言基础-Day8_第4张图片

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

代码
#include 
#include 
#include 
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;
}
运行结果

嵌入式学习-C语言基础-Day8_第5张图片

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

参数:二维数组,行,列

代码
#include 
#include 
#include 
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("");
	}
}
运行结果

嵌入式学习-C语言基础-Day8_第6张图片

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

参数:二维数组,行,列

代码
#include 
#include 
#include 
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("");
	}

}
运行结果

嵌入式学习-C语言基础-Day8_第7张图片

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

eg:“good good study”

输出:“study good good”

代码
#include 
#include 
#include 
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 
#include 
#include 
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;
}
运行结果

嵌入式学习-C语言基础-Day8_第8张图片

你可能感兴趣的:(学习,c语言,算法)