計算機程式設計C++(第8周基礎練習)
阿新 • • 發佈:2018-11-19
計算機程式設計C++ MOOC
測試與作業C++基礎練習100題
##第八週基本練習
本週為陣列與指標的應用
- 使用指標輸出陣列元素
#include "iostream" using namespace std; int main() { int a[20], *pa,temp,n=0; for (pa = a; pa < a + 20; pa++) { cin >> temp; if (temp == 9999)break; *pa = temp; n++; } for (pa = a; pa < a + n-1;pa++) { cout << *pa << " "; } cout << *pa; return 0; }
- 通過指標輸入輸出陣列元素的函式
#include "iostream" using namespace std; int input(int *p) { int temp, n = 0; cin >> temp; while (temp != 9999) { *p = temp; p++; n++; cin >> temp; } return n; } void print(int *p, int n) { cout << *p; p++; n--; while(n) { cout << " " << *p; p++; n--; } } int main() { int a[100],n; n = input(a); print(a, n); return 0; }
- 指標實現字串複製函式
#include "iostream" using namespace std; char *mystrcp(char *s1, char *s2) { int n = 0; while (*s2 != '\0') { *s1 = *s2; s1++; s2++; n++; } *s1 = *s2; return s1-n; } int main() { char s1[100], s2[100]; cin >> s2; cout << mystrcp(s1, s2) << endl; return 0; }
- 指標實現字串比較
#include "iostream"
using namespace std;
char trans(char s)
{
if (s >= 'A'&&s <= 'Z') return s - ('A' - 'a');
else return s;
}
int mystrcmp(char *s1, char *s2)
{
while (1)
{
if (*s1 == '\0'&& *s2 == '\0') return 0;
else if (trans(*s1) > trans(*s2)) return 1;
else if (trans(*s1) < trans(*s2)) return -1;
else
{
s1++;s2++;
}
}
}
int main()
{
char s1[200], s2[200];
cin >> s1 >> s2;
cout << mystrcmp(s1, s2) << endl;
return 0;
}
- 通過指標訪問結構體變數
#include "iostream"
using namespace std;
struct PERSON
{
char name[40], gender[10];
int age;
};
int main()
{
PERSON a, *pa;
pa = &a;
cin >> pa->name;
cin >> pa->gender;
cin >> pa->age;
cout << pa->name << " ";
cout << pa->gender << " ";
cout << pa->age;
return 0;
}
- 通過指標訪問結構體陣列
#include "iostream"
using namespace std;
struct PERSON
{
char name[40], gender[10];
int age;
};
int main()
{
PERSON class_A[50], *pa;
pa = class_A;
cin >> pa->name;
cin >> pa->gender;
cin >> pa->age;
while (pa->name!= "0" && pa->gender!= "0" && pa->age!=0)
{
pa++;
cin >> pa->name;
cin >> pa->gender;
cin >> pa->age;
}
pa = pa - 1;
while(pa >= class_A)
{
cout << pa->name << " ";
cout << pa->gender << " ";
cout << pa->age << endl;
pa--;
}
return 0;
}
- 動態申請變數
#include "iostream"
using namespace std;
int main()
{
int *a = new int;
int *b = new int;
int *c = new int;
cin >> *a >> *b >> *c;
cout << *a + *b + *c << endl;
delete a, b, c;
return 0;
}
- 動態申請陣列
#include "iostream"
using namespace std;
int main()
{
int n;
cin >> n;
double *a = new double[n];
double *p = a;
cin >> *p;
while (*p!=9999)
{
p++;
cin >> *p;
}
p--;
while (p > a)
{
cout << *p << " ";
p--;
}
cout << *p;
delete[]a;
return 0;
}
- 動態申請結構體陣列
#include "iostream"
using namespace std;
struct PERSON
{
char name[40], gender[10];
int age;
};
int main()
{
int n;
cin >> n;
PERSON *class_A=new PERSON[n];
PERSON *pa;
pa = class_A;
cin >> pa->name;
cin >> pa->gender;
cin >> pa->age;
while (pa->name != "0" && pa->gender != "0" && pa->age != 0)
{
pa++;
cin >> pa->name;
cin >> pa->gender;
cin >> pa->age;
}
pa = pa - 1;
while (pa >= class_A)
{
cout << pa->name << " ";
cout << pa->gender << " ";
cout << pa->age << endl;
pa--;
}
delete[]class_A;
return 0;
}
- 動態申請結構體陣列空間和結構體陣列複製
#include "iostream"
using namespace std;
struct PERSON
{
char name[40], gender[10];
int age;
};
int main()
{
int n,real=0;
cin >> n;
PERSON *class_A=new PERSON[n];
PERSON *pa,*pb;
pa = class_A;
cin >> pa->name;
cin >> pa->gender;
cin >> pa->age;
real++;
while (pa->name != "0" && pa->gender != "0" && pa->age != 0)
{
pa++;
real++;
cin >> pa->name;
cin >> pa->gender;
cin >> pa->age;
}
pa = pa - 1;
real = real - 1;
PERSON *class_B = new PERSON[real];
pb = class_B;
while (pa >= class_A)
{
*pb = *pa;
pa--;
pb++;
}
for (pb = class_B; pb < (class_B + real); pb++)
{
cout << pb->name << " " << pb->gender << " " << pb->age << endl;
}
delete[]class_A,class_B;
return 0;
}
以上為第八週的基礎練習。