1、二维数组:
自定义一个二维数组,然后输出最大值和对应索引值,
思路:
1、采用宏定义,确定一个二维数组的行和列;
2、使用双重for循环进行遍历;
3、初始化最值的行和列的索引值;
#define M 3
#define N 3
代码示例(仅供参考);
int main()
{
int i;
int j;
int max = 0;
int index_max_i = 0;
int index_max_j = 0;
int arr[N][M] = {23,46,646,66,656,6,6,454,56};
for ( i = 0; i < N; ++i)
{
for ( j = 0; j < M; ++j)
{
if(max < arr[i][j])
{
max = arr[i][j];
index_max_i = i;
index_max_j = j;
}
}
}
printf("arr_max=%d\n",max);
printf("arr[%d][%d]\n",index_max_i,index_max_j);
return 0;
}
2、把一个二维数组倒转显示。 1 2 3 4 5 6 7 8 ==> 5 1 10 00 6 2 11 01 7 3 12 02 8 4 13 03
思路:
注意题目,是倒转显示,并不是吧数组到=倒转,因此只要打印出格式就行了;
1、定义行和列为M,N,用宏定义确定数组长度
2、根据题目信息,需要先遍历列,再遍历行;
3、遍历过程中列不会发生变化,由:5 1 10 00 ->00 10 可以看出0变1,1变0,即在循环中可以用1-j表示
代码示例:(仅供参考):
#define M 2
#define N 4
int main(){
int temp;
int i;
int j;
int arr[M][N] = {1,2,3,4,5,6,7,8,};
for (i = 0; i < N; ++i)
{
for (j = 0; j < M; ++j)
{
printf("%4d ",arr[1-j][i]);
}
printf("\n");
}
return 0;
}
2、符串数组
1、键盘输入一个字符串,判定是否为回文字符串;
思路:
1)使用gets函数输入一个字符串数组
2)用宏定义确定一个数组长度
#define MAX 20
3)采用while循环得到字符串的长度,得到 int len
4)定义一个flag作为条件判定
5)采用for循环,比较第i个字符和第len-1-i个
代码示例:(仅供参考)
int main()
{
char string[MAX];
gets(string);
int len = 0;
int i = 0;
int flag = 0; //shi
while (string[i] != '\0')
{
len++;
i++;
}
printf("size=%d\n", strlen(string) );
for (i = 0; i < len/2 ; ++i)
{
if(string[i] != string[len-1-i])
{
flag = 1;
break;
}
}
if(0 == flag)
{
printf("字符串是回文字符串\n");
}
else
{
printf("不是回文字符串,,\n");
}
}
2、把一个字符串倒序输出。例:abcdef -->fedcba
思路:
1)采用gets函数输入一个字符串,用宏定义输入字符串数组长度
#define MAX 20
2)采用while循环得到字符串的长度,得到 int len
3)仅仅为反向输出,因此只要反向遍历字符串中的单个字符一一输出即可;
int main()
{
char str[MAX];
int i = 0;
int len = 0;
printf("请输入字符串:\n");
gets(str);
while (str[i] != '\0')
{
len++;
i++;
}
for (int i = len-1; i >= 0; --i) {
printf("%c",str[i]);
}
return 0;
}
注:代码仅供参考,学习过程还是需要自己思考为主;