题目1 序列中删除指定数字
分析:本题要求我们来删除一个序列中指定的数字,这里大家要注意我们要删除的数字可能不止出现一次,所以我们需要用两个变量来进行处理,一个变量来遍历数组,一个变量来存储数组的位置,大家来看下面的代码;
#include<stdio.h>
int main()
{
int a = 0;
int i = 0;
int key = 0;
int j = 0;
int arr[50] = { 0 };
scanf("%d", &a);
for (i = 0; i < a; i++)
{
scanf("%d", &arr[i]);
}
scanf("%d", &key);
for (i = 0; i < a; i++)
{
if (arr[i] != key)
{
arr[j++] = arr[i];
}
}
for (i = 0; i < j; i++)
{
printf("%d ",arr[i]);
}
return 0;
}
当数组的值不等于我们要删除的值时,我们就将它存起来,然后让j变量和i变量分别往后遍历,最终就可以实现删除指定位置数据的效果。
题目2 序列中整数去重
分析:本题要求我们对序列中的整数进行去重操作,那么我们要对数组进行遍历,然后依次比较每个数后面的所有数,遇到相同的进行去重。
#include<stdio.h>
int main()
{
int n = 0;
int arr[5000] = { 0 };
int i = 0;
int j = 0;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
for (i = 0; i < n; i++)
{
for (j = i + 1; j < n; j++)
{
//先找到相同元素
if (arr[i] == arr[j])
{
int k = 0;
for (k = j; k < n - 1; k++)
{
arr[k] = arr[k + 1];//去重
}
n--;//去重一个,元素个数少1
j--;
}
}
}
for (i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
题目3 矩阵交换
分析:本题要求我们来进行矩阵的交换操作,分别有行交换和列交换;那么对于不同的输入,我们需要执行不同的变换操作,很显然本题需要利用数组来进行操作;
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);
int arr[10][10] = { 0 };
int i = 0;
int j = 0;
for (i = 0; i < a; i++)
{
for (j = 0; j < b; j++)
{
scanf("%d", &arr[i][j]);
}
}
int k = 0;
scanf("%d", &k);
char t = 0;
int c = 0;
int d = 0;
for (i = 0; i < k; i++)
{
scanf(" %c %d %d", &t, &c, &d);
if (t == 'r')//行变换
{
for (j = 0; j < b; j++)
{
int tmp = arr[c - 1][j];
arr[c - 1][j] = arr[d - 1][j];
arr[d - 1][j] = tmp;
}
}
if (t == 'c')//列变换
{
for (j = 0; j < a; j++)
{
int tmp = arr[j][c - 1];
arr[j][c - 1] = arr[j][d - 1];
arr[j][d - 1] = tmp;
}
}
}
for (i = 0; i < a; i++)
{
for (j = 0; j < b; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
大家注意在进行变换时,数组的下标与我们输入的行列数存在一定的对应关系。
题目4 杨辉三角
分析:关于杨辉三角,想必大家都了解过,本题让我们将其打印出来,其实我们通过循环就可以实现,这里大家要知道杨辉三角的运算规则;
#include<stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
int arr[30][30] = { 0 };
int i = 0;
int j = 0;
for (i = 0; i < a; i++)
{
for (j = 0; j < a; j++)
{
if (i == j)
{
arr[i][j] = 1;
}
if (j == 0)
{
arr[i][j] = 1;
}
if (i >= 2 && j >= 1)
{
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
}
for (i = 0; i < a; i++)
{
for (j = 0; j <= i; j++)
{
printf("%5d", arr[i][j]);
}
printf("\n");
}
return 0;
}