欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

C02-程序设计基础提高班(C++)第7周上机任务-指针

发布时间:2025/5/22 c/c++ 56 豆豆
生活随笔 收集整理的这篇文章主要介绍了 C02-程序设计基础提高班(C++)第7周上机任务-指针 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

7周:阅读教材第6章(p164-200),主要内容是指针,完成第7周上机任务;

(回到C02-程序设计基础提高班(C++)学习安排)


实践内容:

1. (数组的排序) 按模板中的要求,用指向数组的指针变量作为形式参数编写函数,完成冒泡排序。重点体会:(1)冒泡排序算法;(2)用指向数组的指针变量作为形式参数,用数组名(即数组的地址)作为实际参数,函数中对于形参的改变实质上也就是对实参对应内存单元的改变;(3)形式参数中不指定数组大小,实际数组的大小也一并作为参数传递。

#include <iostream> using namespace std; void bubble_sort(int *p, int num); //不要对自定义函数的声明有任何改动 void output_array(int*, int); int main( ) //不要对main函数有任何改动 { int a[20]={86,46,22,18,77,45,32,80,26,88,57,67,20,18,28,17,54,49,11,16};int b[15]={27,61,49,88,4,20,28,31,42,62,64,14,88,27,73};bubble_sort(a,20); //用冒泡法按降序排序a中元素output_array(a,20); //输出排序后的数组bubble_sort(b,15); //用冒泡法按降序排序b中元素output_array(b,15); //输出排序后的数组return 0; } //下面定义自定义函数
2. 编写函数 int fun(int x, int *pp)。其功能是,求出x的所有奇数因子,并按照从小到大的顺序放在pp指向的内存中,函数返回值为这些整数的个数。若x的值为30, 数组中的数为1,3,5,15,函数返回4。

下面是该程序main()函数的部分代码作为参考。

int main(void) {int a[50],x,n;____________;n=fun(x,a); cout<<x<<”的奇因子共有”<<n<<”个,分别是:”for(int i=0;i<n;i++)_________________;cout<<endl;______________; }
3. 编写程序,要判断两个有序数组中是否存在相同的数字
#include<iostream> using namespace std; bool commmonNum(int *a,int n1,int *b,int n2) { //要完成的代码 } int main() { int a[]={1,4,7,8}; int b[]={2,5,6,9,10}; int n1=sizeof(a)/sizeof(a[0]); int n2=sizeof(b)/sizeof(b[0]); bool flag=commmonNum(a,n1,b,n2); if(flag==true) cout<<"两个有序数组中存在相同的数字!\n"; else cout<<"两个有序数组中不存在相同的数字!\n"; return 0; }
4. 给定以下三个函数原型:
void sortl(int*, int*, int*); void sort2(int&,int&,int&); void sort3(int,int,int); 它们的功能都是把三个整数按升序排列。编写程序实现这三个函数,并且写main()函数调用它们,验证这三个函数的正确性。

思考并验证:(1)三个函数有何不同,应该如何调用?(2)以函数sort1(int*, int*, int*)为例说明指针传递参数的过程。

5. 实现函数fun(char* str1, char* str2, int m),将字符串str1中从第m个字符开始的全部字符复制到另一个字符串str2中,当m值大于str1的长度时,输出空字符串。

#include <iostream> using namespace std; void fun(char*, char*, int); int main() {char str1[100]="I am a student",str2[100];int m;cin>>m;fun(str1,str2,m); cout<<str2<<endl; return 0; } //fun函数的定义
6. 用指针编写函数fun(char* str1,char* str2,int m, int n),调用后,str2中获得str1中从m位置开始的n个符号构成的子串。编写函数fun,并编制main()函数调用,展示其功能。


7. 从键盘输入若干行文字(每行不起过80个字符),统计其中出现的单词数目。
提示:这个任务可以做成若干个版本,逐渐增强功能
(1)一行英文句子中的单词数目中间的空格决定,如I am a boy.这是4个单词。本题中若干行句子形成一篇文章,可以统计一篇文章的词数。word中有此功能,好强!
(2)cin函数输入字符串时,一旦遇到空格就会结束读取,不能用于读一行。在此,可以cin对象的getline方法完成(详见课本p434)。
格式:cin.getline(字符数组(或字符指针),字符个数)
例如:

char ch[81]; //除'\n'外,还可以存放80个字符 cin.getline(ch,81); //读80个字符或遇'\n'结束(3)行数可以先由键盘输入或者设定一个特殊的符号作为结束,如果多行文字(对应一篇文章)有困难,可以先做统计一行功能。
(4)如果结合文件,读入的数据来自文件,这个功能将更强,用于统计文件中的单词数目。
(5)上面默认输入的文字中没有多余的空格(即不会出现两个连续空格,句首和句末没有空格,每个标点符号左右两边出现仅只出现一个空格)。如果程序功能更强大些,允许有多余空格的情况,需要在读入后、统计前,清除多余空格。

转载于:https://www.cnblogs.com/hehe520/archive/2012/10/07/6142692.html

总结

以上是生活随笔为你收集整理的C02-程序设计基础提高班(C++)第7周上机任务-指针的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。