实验2 C++数组与指针

一.实验目的:

  1. 掌握一维数组和二维数组的定义、赋值和输入输出的方法。
  2. 掌握字符数组和字符串函数的使用。
  3. 通过实验进一步掌握指针的概念,会定义和使用指针变量。
  4. 能正确使用数组的指针和指向数组的指针变量。
  5. 能正确使用字符串的指针和指向字符串的指针变量。
  6. 能正确使用引用型变量。

二.实验内容:

  1. 运行调试第5章编程示例5-3,5-4,5-5扑克发牌程序;完成练习题5.3.1,5.4.1, 5.5.1和7.5.2;
  2. 运行调试第6章编程示例6-3数组排序器;完成以下练习: (1) 改进sort函数; (2) 用vector改造程序,使其支持变长数组; (3) 用char类型来改造程序具有更好输入方式,使其能一次性输入多个数组元素; (4) 用string类型来改造程序具有更好输入方式,使其能一次性输入多个数组元素;

三.示例代码:

  1.第5章编程示例5-3扑克发牌程序:

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>
using namespace std;

int rand_0toN1(int n);
void draw_a_card();

char *suits[4] = {"hearts", "diamonds", "spades", "clubs"};
char *ranks[13] = {"ace", "two", "three", "four", "five",
"six", "seven", "eight", "nine",
"ten", "jack", "queen", "king" };

int main() {
int n, i;

srand(time(NULL)); // Set seed for random numbers.

while (1) {
cout << "Enter no. of cards to draw (0 to exit): ";
cin >> n;
if (n == 0)
break;
for (i = 1; i <= n; i++)
draw_a_card();
}
return 0;
}

// Draw-a-card function
// Performs one card-draw by getting a random 0-4 and a random
// 0-12. These are then used to index the string arrays, ranks
// and suits.
//
void draw_a_card() {
int r; // Random index (0 thru 12) into ranks array
int s; // Random index (0 thru 3) into suits array

r = rand_0toN1(13);
s = rand_0toN1(4);
cout << ranks[r] << " of " << suits[s] << endl;
}

// Random 0-to-N1 Function.
// Generate a random integer from 0 to N-1.
//
int rand_0toN1(int n) {
return rand() % n;
}

  2.第6章编程示例6-3数组排序器:

#include <iostream>
using namespace std;

void sort(int n);
void swap(int *p1, int *p2);

int a[10];

int main () {
int i;

for (i = 0; i < 10; i++) {
cout << "Enter array element #" << i << ": ";
cin >> a[i];
}
sort(10);

cout << "Here are all the array elements, sorted:" << endl;
for (i = 0; i < 10; i++)
cout << a[i] << " ";

cout << endl;
system("PAUSE");
return 0;
}

// Sort array function: sort array named a, having n elements.
// 
void sort (int n) {
int i, j, low;

for(i = 0; i < n - 1; i++) {

// This part of the loop finds the lowest
// element in the range i to n-1; the index
// is set to the variable named low.

low = i;
for (j = i + 1; j < n; j++)
if (a[j] < a[low])
low = j;

// This part of the loop performs a swap if
// needed.

if (i != low)
swap(&a[i], &a[low]);
}
}

// Swap function.
// Swap the values pointed to by p1 and p2.
//
void swap(int *p1, int *p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

【答疑释惑】结构体字节数如何计算

1 C语言中一个结构体在内存中占的字节数如何计算? 先看下面一个结构体: struct stru { int a; char c; }; 那么这个结构体在内存...

38170
来自专栏塔奇克马敲代码

第 17 章 标准库特殊设施

17030
来自专栏程序你好

.Net CSharp语言中When关键字的用法

c# 6引入了when关键字。when关键字是通过某些特定标准来过滤catch块中的异常的一种方法。后来在c# 7中扩展到case语句。我们将介绍如何在异常处理...

12700
来自专栏肖蕾的博客

Kotlin中,函数作为参数,T.()->Unit 和 ()->Unit 的区别

18030
来自专栏苦逼的码农

【必学】Linux 下三剑客的技能,你敢不学?

awk是一种用于处理文本、模式匹配的编程语言。与sed和grep,俗称Linux下的三剑客。学会 awk 等于你在 Linux 命令行里,又多了一种处理文本的选...

14720
来自专栏Linux驱动

Linux-bc命令(21)

24630
来自专栏飞雪无情的博客

Go语言中new和make的区别

Go语言中new和make是内建的两个函数,主要用来创建分配类型内存。在我们定义生成变量的时候,可能会觉得有点迷惑,其实他们的规则很简单,下面我们就通过一些示例...

12520
来自专栏mathor

C++STL中set的使用策略(一)

13630
来自专栏221-B

Python基础知识总结

首先,学一门语言都会问:点解要学这门语言? 而学Python的原因很简单,原因就是…..好鬼简单.(这句话不是我说的) 很喜欢Python极简的代码风格,以及众...

66920
来自专栏java学习

8张图理解Java

1、字符串不变性 下面这张图展示了这段代码做了什么 1、String s = "abcd"; 2、s = s.concat("ef"); ? 2、equals(...

293100

扫码关注云+社区

领取腾讯云代金券