数组部分刷题记录:
文章目录
1. 关于一维数组初始化,下面哪个定义是错误的:
2. 定义了一维 int 型数组 a[10] 后,下面错误的引用是:
3. 若定义int a[2] [3]={1,2,3,4,5,6} ; 则值为4的数组元素是:
4. 下面代码的结果是:(sizeof)
用监视器查看arr内元素:fn+f10、调试、窗口、监视、fn+f10(跑语句)
5. 下面代码的结果是:(sizeof和strlen)
6. 关于一维数组描述不正确的是:
7. 以下能对二维数组a进行正确初始化的语句是:
8. 以下说法正确的是:
9. 交换数组
将数组A中的内容和数组B中的内容进行交换。(数组一样大)
#include <stdio.h>
int main()
{
int a[] = { 1,3,5,7,9 };
int b[] = { 2,4,6,8,10 };
int tmp=0;
//数组名是地址,地址是一个编号,是常量值
int i = 0;
int sz = sizeof(a) / sizeof(a[0]);
for (i - 0; i < sz; i++)
{
int tmp=a[i];
a[i] = b[i];
b[i]=tmp;
}
return 0;
}
10. 数组操作
创建一个整形数组,完成对数组的操作
- 实现函数init() 初始化数组为全0
- 实现print() 打印数组的每个元素
- 实现reverse() 函数完成数组元素的逆置。
要求:自己设计以上函数的参数,返回值。
#include <stdio.h>
void init(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
arr[i] = i+1;//初始化成为1——10
}
}
void print(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
}
void reverse(int arr[], int sz)
{
int left = 0;
int right = sz - 1;
while (left < right)
{
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
}
int main()
{
int arr[10];
//初始化为0
int sz = sizeof(arr) / sizeof(arr[0]);
init(arr, sz);
print(arr,sz);
reverse(arr,sz);
print(arr, sz);
return 0;
}
11. 冒泡排序
实现一个对整形数组的冒泡排序
void bubble_sort(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz - 1; i++)
{
//一趟冒泡排序
int j = 0;
for (j = 0; j < sz - 1 - i; j++)
{
//升序
if (arr[j] > arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
int main()
{
int arr[10] = { 9,8,7,6,5,4,3,2,1,0 };
int sz = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr, sz);
//打印
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
12. 矩阵计算
int main()
{
int n = 0;
int m = 0;
scanf("%d %d",&n,&m);
int i=0;
int k = 0;
int sum = 0;
for (i = 0; i < n; i++)
{
int j = 0;
for (j = 0; j < m; j++)
{
scanf("%d", &k);
if (k > 0)
sum += k;
}
}
printf("%d\n", sum);
return 0;
}
13. 矩阵转置
#include<stdio.h>
int main()
{
int n = 0;
int m = 0;
scanf("%d %d",&n,&m);
int arr[n][m];//C99
int arr[10][10];//VS
int i = 0;
int j = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
scanf("%d", &arr[i][j]);
}
}
//转置
for (j = 0; j < m; j++)
{
for (i = 0; i < n; i++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}