您现在的位置是:首页 > Javascript
当前栏目
【C/C++基础练习题】简单指针与数组使用练习题
2023-04-18 16:16:11 时间
🍉内容专栏:【C/C++要打好基础啊】
🍉本文内容:简单指针与数组练习题(复习之前写过的实验报告)
🍉本文作者:Melon西西
🍉发布时间 :2023.2.12
目录
2.编写一个函数实现数制的转换,不用递归,用数组实现。在主函数中输入一个十进制数,输出相应的十六进制数。
3. 编写字符串反转函数。该函数的功能是将指定字符串中的字符顺序颠倒存放,然后在主函数中进行测试。
4.编写一个程序,判定一个字符串是否是另一个字符串的子串,若是,则返回子串在主串中的位置。要求不能使用系统函数。
5. 编写函数利用数组名作参数计算数组arr[3][4]所有元素的和。
6.定义一个整型指针,为其分配20个整数的空间,然后通过随机函数给这20个整数空间赋值,然后使用选择排序对这20个整数进行降序排列,并输出排序前后的结果。
1.vector![8e40b48d91f242319c539e9ce425c7ab.png](https://img-blog.csdnimg.cn/8e40b48d91f242319c539e9ce425c7ab.png)
#include<iostream>
#include<vector>
using namespace std;
void input(vector<int>& array)//这里参数+&是引用不是地址传递!!!!!
{
int length = 0;
cout << "请输入数组元素个数:";
cout << endl;
cin >> length;//让用户输入数组元素的个数
cout << "请输入每个元素的值:" << endl;
int data;
for (int i = 0; i < length; i++)//用户挨个输入数组元素
{
cin >> data;
array.push_back(data);//把元素存入array数组
}
return;
}
void output(vector<int>& array)//这里参数+&是引用不是地址传递!!!!!
{
cout << "输出数组:" << endl;
for (int i = 0; i < array.size(); i++)//输出数组元素
{
cout << array[i] << " ";
}
}
void paixu(vector<int>& array)
{
for (double p = 0; p < array.size() - 1; p++)//总共排序轮数p= array.size()-1
{
//内层循环对比
for (double j = 0; j < array.size() - p - 1; j++)
{
if (array[j] > array[j + 1])
{
//如果第一个数字大于第二个数字,交换他们
double temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
cout << "排序后";
for (int i = 0; i < array.size(); i++)
{
cout << array[i] << " ";
}
cout << endl;
}
void average(vector<int>& array)
{
double sum = 0;
for (int i = 0; i < array.size(); i++)
{
sum += array[i];
}
double ave = sum / array.size();
cout << "输出数组的平均数:" << ave << endl;
}
void findmax(vector<int>& array)
{
int max = 0, pos = 0;//定义最大值和存储元素位置的变量
for (int i = 0; i < array.size(); i++)
{
if (array[i] > max)
{
max = array[i];
pos = i + 1;
}
size_t pos = array[i];
}
cout << "输出数组的最大值:" << max << endl;
cout << "输出最大值的位置:第" << pos << "个数字" << endl;
}
void search(vector<int>& array)
{
int x, posx = 0;
cout << "输入想要查找位置的数字:" << endl;
cin >> x;
for (int i = 0; i < array.size(); i++)
{
if (array[i] = x)
{
posx = i;
size_t posx = array[i];
}
}
cout << "输出" << x << "的位置:第" << posx << "个数字" << endl;
}
int main()
{
vector<int>array;//定义数组
input(array);//把数组传递给input函数
output(array);//把数组中的数输出
paixu(array);//对数组进行排序
average(array);//求数组数据的平均数
findmax(array);//寻找数组中的最大元素的值和位置
search(array);//查到指定的数字
vector<int>().swap(array);//清除内存
}
2.编写一个函数实现数制的转换,不用递归,用数组实现。在主函数中输入一个十进制数,输出相应的十六进制数。
#include<iostream>
using namespace std;
int zhuan(int num, int arr[])
{
int i;
for (i = 0; num > 0; i++)
{
arr[i] = num % 16;
num /= 16;
}
return i - 1;
}
int main()
{
char shu[] = "0123456789ABCDEF";
int arr[20] = { 0 }, num=0, i=0;
cout << "请输入一个十进制整数:";
cin >> num;
i = zhuan(num, arr);
for (; i >= 0; i--)
cout << shu[arr[i]];
cout << endl;
return 0;
}
3. 编写字符串反转函数。该函数的功能是将指定字符串中的字符顺序颠倒存放,然后在主函数中进行测试。
#include<iostream>
using namespace std;
int fanzhuan(char* aa,int len)
{
int temp = 0;
for (int i = 0;i<len/2;i++)
{
temp = aa[i];
aa[i] = aa[len - i - 1];
aa[len - i - 1] = temp;
}
for (int i = 0;i < len;i ++)
{
cout << aa[i] ;
}
return 0;
}
int main()
{
char a[] = "good morning";
int len = sizeof(a) / sizeof(a[0]);
for (int j = 0;j < len;j++)
{
cout << a[j];
}
cout << endl;
fanzhuan(a,len );//字符串反转函数
}
4.编写一个程序,判定一个字符串是否是另一个字符串的子串,若是,则返回子串在主串中的位置。要求不能使用系统函数。
#include<iostream>
using namespace std;
int match(char a1[], char a2[])
{
int i, j, k;
for (i = 0; a1[i] != '