0407_C基础6

练习1:

输入m行n列得二维数组,输出每一行的和,以及每一列的和

程序:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int m,n;
	printf("请输入行数:");
	scanf("%d",&m);
	printf("请输入列数:");
	scanf("%d",&n);
	int arr[m][n];
	int i,j;
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			printf("请输入第%d行第%d列元素:",i+1,j+1);
			scanf("%d",&arr[i][j]);
		}
	}
	printf("arr数组元素为:\n");
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			printf("%-4d ",arr[i][j]);
		}
		putchar(10);
	}
	unsigned sumline=0;
	unsigned sumrow=0;
	for(i=0;i<m;i++)
	{
		sumline=0;
		for(j=0;j<n;j++)
		{
			sumline+=arr[i][j];
		}
		printf("第%d行sum=%u\n",i+1,sumline);
	}
	for(i=0;i<n;i++)
	{
		sumrow=0;
		for(j=0;j<m;j++)
		{
			sumrow+=arr[j][i];
		}
		printf("第%d列sum=%u\n",i+1,sumrow);
	}
	return 0;
}

练习2:

输入n行n列得二维数组 ,计算四边的和减去正对角线的和得结果

程序:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int n;
	printf("请输入正方形二维数组的边长:");
	scanf("%d",&n);
	int arr[n][n];
	int i,j;
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			printf("请输入第%d行第%d列的值:",i+1,j+1);
			scanf("%d",&arr[i][j]);
		}
	}
	printf("数组元素为:\n");
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			printf("%-4d ",arr[i][j]);
		}
		putchar(10);
	}
	int zsum=0;
	int fsum=0;
	for(i=0;i<n;i++)
	{
		zsum+=arr[i][i];
		fsum+=arr[n-1-i][n-1-i];
	}
	int lsum1=0;
	int lsum2=0;
	int rsum1=0;
	int rsum2=0;
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			if(i==0)
			{
				lsum1+=arr[i][j];
				rsum1+=arr[j][i];
			}
			if(i==n-1)
			{
				lsum2+=arr[i][j];
				rsum2+=arr[j][i];
			}
		}
	}
	printf("结果为:%d\n",(lsum1+lsum2+rsum1+rsum2)-zsum-fsum);
	return 0;
}

练习3:

输入m行n列得二维数组,计算二维数组得最大值

程序:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int m,n;
	printf("输入行数:");
	scanf("%d",&m);
	printf("输入列数:");
	scanf("%d",&n);
	int arr[m][n];
	int i,j;
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			printf("请输入第%d行第%d列的值:",i+1,j+1);
			scanf("%d",&arr[i][j]);
		}
	}
	printf("数组元素为:\n");
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			printf("%-4d ",arr[i][j]);
		}
		putchar(10);
	}
	int max=arr[0][0];
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			if(max<arr[i][j])
			{
				max=arr[i][j];
			}
		}
	}
	printf("二维数组最大值=%d\n",max);
	return 0;
}

练习4: 

编程实现二维数组转置

程序:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int m,n;
	printf("请输入行数:");
	scanf("%d",&m);
	printf("请输入列数:");
	scanf("%d",&n);
	int arr[m][n];
	int arr2[n][m];
	bzero(arr,sizeof(arr));
	bzero(arr2,sizeof(arr2));
	int i,j;
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			printf("请输入第%d行第%d列:",i+1,j+1);
			scanf("%d",&arr[i][j]);
		}
	}
	printf("arr数组元素为:\n");
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			printf("%-4d",arr[i][j]);
		}
		putchar(10);
	}
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			arr2[j][i]=arr[i][j];
		}
	}
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{
			printf("%d ",arr2[i][j]);
		}
		putchar(10);
	}

	return 0;
}

 

 练习5:

输入一个字符串,删除字符串中的空格

程序:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	char str[20]="";
	gets(str);
	int i;
	int j;
	int n=strlen(str);
	for(i=0;i<n+1;i++)
	{
		if(' '==str[i])
		{
			for(j=i;j<n+1;j++)
			{
				str[j]=str[j+1];
			}
			n--;
			i--;
		}
	}
	puts(str);
	return 0;
}

 

练习6: 

输入一个字符串,实现单词逆转

程序:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	char str[100]="";
	gets(str);
	int n=strlen(str);
	int i;
	int temp;
	for(i=0;i<n/2;i++)
	{
		temp=str[n-i-1];
		str[n-i-1]=str[i];
		str[i]=temp;
	}
	int j=0;
	int nn;
	int mm;
	for(i=0;i<=n;i++)
	{
		if(' '==str[i]||i==n)
		{
			nn=i;
			mm=0;
			while(j<nn)
			{
				temp=str[i-1-mm];
				str[i-1-mm]=str[j];
				str[j]=temp;
				j++;
				nn--;
				mm++;
			}
			j=i+1;
		}
	}
	puts(str);
	return 0;
}

 思维导图

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值