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;
}