C语言基础:DAY6

文章介绍了C语言程序,分别实现了计算二维数组每行和每列的和,提取数组四角和对角线和,查找并输出最大值和第二大值,以及字符串处理如删除连续空格和逆序功能。

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

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int m=0;int n=0;
	printf("请输入行数和列数:\n");
	scanf("%d %d",&m,&n);
	int s[m][n];
	bzero(s,sizeof(s));
	int line=sizeof(s)/sizeof(s[0]);
	int row=sizeof(s[0])/sizeof(s[0][0]);
	int sum=0;
	for(int i=0;i<line;i++){
		for(int j=0;j<row;j++){
			printf("请输入数组中第%d行第%d列的元素:",i+1,j+1);
			scanf("%d",&s[i][j]);
		}
	}

	for(int i=0;i<line;i++){
		sum=0;
		for(int j=0;j<row;j++){
			sum+=s[i][j];
		}
		printf("第%d行的和为:%d  ",i+1,sum);
	}
	putchar(10);
	for(int i=0;i<row;i++){
		sum=0;
		for(int j=0;j<line;j++){
			sum+=s[j][i];
		}
		printf("第%d列的和为:%d  ",i+1,sum);
	}
	putchar(10);
	return 0;
}

2.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int m=0,n=0;
	printf("请输入二位数组的行与列:");
	scanf("%d %d",&m,&n);
	int s[m][n];
	bzero(s,sizeof(s));

	for(int i=0;i<m;i++){
		for(int j=0;j<n;j++){
			printf("请输入第%d行第%d列的数值:",i+1,j+1);
			scanf("%d",&s[i][j]);
		}
	}
	
	//四角的和
	int four_sum=s[0][0]+s[0][n-1]+s[m-1][0]+s[m-1][n-1];

	
	//printf("%d\n",four_sum);
	
	//对角线的和
	int line_sum=0;
	for(int i=0;i<m;i++){
		for(int j=0;j<n;j++){
			if(j==i){
				line_sum+=s[i][j];
			}
		}
	}

	printf("四角的和%d减去对角线的和%d的值为:%d",four_sum,line_sum,four_sum-line_sum);
	putchar(10);
	return 0;
}

3.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int line=0,row=0;
	printf("请输入二位数组的行与列:");
	scanf("%d %d",&line,&row);
	int s[line][row];
	bzero(s,sizeof(s));
	
	int max=s[0][0];
	for(int i=0;i<line;i++){
		for(int j=0;j<row;j++){
			printf("请输入第%d行第%d列的数值:",i+1,j+1);
			scanf("%d",&s[i][j]);
			if(s[i][j]>max)
				max=s[i][j];
		}
	}
	
	int sec_max=0;
	for(int i=0;i<line;i++){
		for(int j=0;j<row;j++){
			if(s[i][j]==max)
				continue;
			if(s[i][j]>sec_max)
				sec_max=s[i][j];
		}
	}

	printf("第二大值为:%d",sec_max);
	putchar(10);
	return 0;
}

4.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int line=0,row=0;
	printf("请输入二位数组的行与列:");
	scanf("%d %d",&line,&row);
	int s[line][row];
	bzero(s,sizeof(s));

	for(int i=0;i<line;i++){
		for(int j=0;j<row;j++){
			printf("请输入第%d行第%d列的数值:",i+1,j+1);
			scanf("%d",&s[i][j]);
		}
	}

	printf("改变前:\n");
	for(int i=0;i<line;i++){
		for(int j=0;j<row;j++){
			printf("%d  ",s[i][j]);
		}
		putchar(10);
	}
	int a[row][line];
	bzero(a,sizeof(a));
	for(int i=0;i<line;i++){
		for(int j=0;j<row;j++){
			a[j][i]=s[i][j];
		}
	}
	printf("改变后:\n");
	for(int i=0;i<row;i++){
		for(int j=0;j<line;j++){
			printf("%d  ",a[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[64]="";
	printf("请输入字符串:");
	gets(str);
	putchar(10);
	for(int i=0;i<strlen(str);i++){
		if(str[i]==' '){
			for(int j=i;j<strlen(str);j++){
				str[j]=str[j+1];
			}
			//i--为了回退一位,防止连着的空格
			i--;
		}
	}
		

	puts(str);
	return 0;
}

6.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	char s[32]="good  good  study";
	int i=0;int j=strlen(s)-1;
	while(i<j){
		int temp=s[i];
		s[i]=s[j];
		s[j]=temp;
		i++;j--;
	}//实现全字符串逆置 


	i=0;j=0;
    int index=0;int blank=0;
	while(s[index]!='\0'){
		blank=index;
		while(s[blank]==' '){//用于寻找每个单词的首地址下标
			blank++;
		}
		j=blank;//i 记录每个单词首地址
		while(s[j]!=' ' && s[j]!='\0'){
			j++;           //寻找空格
		}
		
		index=j;
		j--;
		while(blank<j){
			int temp=s[blank];
			s[blank]=s[j];
			s[j]=temp;
			blank++;j--;
		}
		
	}
	puts(s);
	return 0;
}
ubunt

7.思维导图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值