【c++面向过程实验5】数组

    技术2025-06-19  8

    【c++面向过程实验5】数组 实验目的:

    掌握一维数组和二维数组的定义、赋值和输入输出的使用方法。掌握与数组有关的算法。

    实验内容:

    #include <iostream> using namespace std; int main() { cout << "1、输入n及n个整数(n<20),然后按奇数升序、偶数降序排列输出:" << endl; int N; cout << "n="; cin >> N; if (N >= 20) N = 19; int n[19]; for (int i = 0; i < N; i++) { cout << "n" << i + 1 << "="; cin >> n[i]; } int odd[19] = { 0 };//奇数升序 int even[19] = { 0 };//偶数降序 int oddnumber = 0, evennumber = 0;//当前奇数和偶数个数都为0 for (int i = 0; i < N; i++)//遍历输入的这个数组 { if (n[i] % 2 == 1)//奇数的情况 { odd[oddnumber] = n[i]; oddnumber++; } if (n[i] % 2 == 0)//偶数的情况 { even[evennumber] = n[i]; evennumber++; } } for (int i = 0; odd[i] || even[i]; i++)//当奇数数组或偶数数组中的第i个元素存在时:可以保证输出完所有的元素 { for (int j = i + 1; odd[j]; j++) if (odd[i] > odd[j]) swap(odd[i], odd[j]);//冒泡 for (int j = i + 1; even[j]; j++) if (even[i] < even[j]) swap(even[i], even[j]);//冒泡 } cout << "odd="; for (int i = 0; odd[i]; i++) cout << odd[i] << " "; cout << endl; cout << "even="; for (int i = 0; even[i]; i++) cout << even[i] << " "; cout << endl; cout << endl; cout << "2、输入S1和S2两个字符串,将长的字符串拼接在短的字符串后面并输出,如果长度相等,S1接在S2后面。假设两个字符串的长度相加不超过80:" << endl; string s1, s2; cout << "s1="; cin >> s1; cout << "s2="; cin >> s2; cout << "Length of S1=" << s1.length() << endl; cout << "Length of S2=" << s2.length() << endl; if (s1.length() <= s2.length()) { s1.append(s2); cout << "s1 + s2=" << s1 << endl; } else { s2.append(s1); cout << "s2 + s1=" << s2 << endl; } }

    主要是冒泡排序的应用和对string类一些函数的操作 稍微说一下冒泡排序哈,假如有n个数: 从第一个数开始,与第二个数比较,若不符合要求,交换第一个数与第二个数的值,若符合,则又和第三个,第四个直到第n个进行比较 现在第一个数与其它数比较完毕了,然后拿第二个数与第三个,第四个一直到第n个按照要求进行比较 依次循环,直到第n-1个数与第n个进行比较 所以循环结构差不多如下:

    //伪代码: int s[n]={...}; for(int i=0;i<n-1;i++)//注意i这里只要n-1次循环哦!!! { for(int j=i+1;j<n;j++) { if(不满足要求) swap(s[i],s[j]); } }

    然后还有什么不懂的可以在底下留言哈!(话说可否点一个赞呢?)

    Processed: 0.015, SQL: 9