C语言简单程序

C语言

题目

1、在二维数组中找出一个特殊的点,该点满足如下条件:该点是所在行上的最大值且是所在列上的最小值;若没有则输出:“无法找到满足条件的点”。(二维数组至少3*3,手动输入数组内容,最后输出该点在数组中的位置下标以及此点的值)

2、利用数组从键盘输入一个长度为10的字符串,将字符串中的字母大小写互换,并去掉字符串中不是字母的字符。例如:输入abcd012EFG,则输出ABCDefg。请使用gets()函数输入字符串。

3、通过键盘键入的方式对二维数组a[4][3]进行初始化,输入k的值,找出第k个位置的数并输出其下标,其中 k>=0&&k<=12。要求:算法要有一定的健壮性,输入错误数据也可以重新继续运行。(数组位置计算为行优先,例如a[0][0]为第1个位置,a[1][0]为第4个位置)

解答

下面展示一些 内联代码片

// A code block
var foo = 'bar';
#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int i, j;
	int arr[3][3] = { 0 };
	int max = 0;
	int flag = 0;//如果找到了鞍点给它赋值 1 
	//输入一个二维数组
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			scanf("%d", &arr[i][j]);
		}
	}
	//找鞍点
	for (i = 0; i < 3; i++)
	{
		//让max等于二维数组第 i 行的第一个元素
		max = arr[i][0];

		//记录最大值所在的列
		int t = 0;

		//找出一行中的最大值并把值赋给 max
		for (j = 1; j < 3; j++)
		{
			if (arr[i][j] > max)
			{
				max = arr[i][j];
				t = j;
			}
		}

		//判断 max 是否为该列上最小的元素
		for (j = 0; j < 3; j++)
		{
			//上边的 t 记录了 max 所在的列
			//所以用 max 与该列的元素比较,看 max 是否为该列上最小的元素
			if (max > arr[j][t])
			{
				//如果大于就跳出
				break;

			}
		}
		//如果全部比较完(也就是j==3的时候)说明 max 为当列最小,max为鞍点

		if (j == 3)
		{
			printf("找到了鞍点在:%d行%d列,为%d\n", i, j, arr[i][t]);
			flag = 1;
			break;//因为只有一个鞍点,所以找到了就退出循环
		}
	}

	if (flag != 1)
	{
		printf("没有找到鞍点 \n");
	}
	return 0;
}

// A code block
var foo = 'bar';
#include <stdio.h>
#include <string.h>
int main()
{
	char str1[100] = { 0 };
	int c=0;
	gets(str1);
	for (int i = 0; str1[i] != '\0'; i++) { c++; }//A求字符长度
	for (int i = 0; i < c; i++)
	{
		if (str1[i] >= 97 && str1[i] <= 122)//大写转换小写
		{
			str1[i] -= 32;
		}
		else if (str1[i] >= 65 && str1[i] <= 90)
		{
			str1[i] += 32;
		}
	}
	for (int i = 0; i < strlen(str1); i++)
	{
		if (str1[i] >= 'A' && str1[i] <= 'Z' || str1[i] >= 'a' && str1[i] <= 'z')
			printf("%c", str1[i]);
	}
	return 0;
}

// A code block
var foo = 'bar';
#include <stdio.h>
int main()
{
	int flag = 1;
	int k = 0;
	int a[3][4] = { 0 };
	for (int i = 0; i <= 2; i++)
	{
		for (int j = 0; j <= 3; j++)
		{
			scanf("%d", &a[i][j]);
		}
	}
	printf("请输入K,k>=0且k<=12");
	while (flag)
	{
		scanf("%d", &k);
		if (k <= 12 && k >= 0)
		{
			flag = 0;
		}
		else
		{
			printf("输入错误请重新输入");
		}
	}
	for (int i = 0; i <= 2; i++)
	{
		for (int j = 0; j <= 3; j++)
		{
			int p = 0;
			p = 4 * i + j + 1;
			if (k ==p)
			{
				printf("%d  第%d行,%d列", a[i][j],i+1,j+1);
				int flag = 0;
			}
		}
		if (flag==0)
		{
			break;
		}
	}
return 0;
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值