程序设计与算法 第八、九周测验
2016-09-27 17:56
260 查看
程序设计与算法 第八、九周测验
-eof-
1:指针练习:输出Hello
#include <iostream> using namespace std; int main() { char s[] = "Hello"; char * p; for( // 在此处补充你的代码 p=s;*p!='\0';p++ ) cout << * p ; return 0; }
2:指针练习:输出Tesla
#include <iostream> using namespace std; void Print(const char * p1, const char * p2) { for(;p1<p2;p1++ // 在此处补充你的代码 ) cout << * p1; } int main() { const char * s = "Tesla123"; Print(s,s+5); cout << endl; Print(s,s+3); cout << endl; return 0; }
3:指针练习:ForEach
#include <iostream> using namespace std; void ForEach(void * a, int width, int num, // 在此处补充你的代码 void(*f)(void *) ) { for(int i = 0;i < num; ++i) f((char*)a+width*i); } void PrintSquare(void * p) { int * q = (int*)p; int n = *q; cout << n * n << ","; } void PrintChar(void * p) { char * q = (char*)p; cout << *q << ","; } int main() { int a[5] = {1,2,3,4,5}; char s[] = "hello!"; ForEach(a,sizeof(int),5,PrintSquare); cout << endl; ForEach(s,sizeof(char),6,PrintChar); return 0; }
4:指针练习:Memcpy之一
#include <iostream> using namespace std; void Memcpy(char * src,char * dest,int n) { // 在此处补充你的代码 while(n--) *dest++ = *src++; } int Strlen(char * s) { int i; for( i = 0; s[i]; ++i); return i; } int main() { int a; char s1[30]; char s2[30]; int t; cin >> t; for(int i = 0;i < t; ++i) { cin >> a; int b = 99999999; Memcpy((char*)&a,(char *) &b,sizeof(int)); cout << b << endl; } for(int i = 0;i < t; ++i) { cin >> s1; Memcpy(s1,s2,Strlen(s1)+1); cout << s2 << endl; } return 0; }
5:指针练习:double
#include <iostream> using namespace std; void Double(int * p, int n) { for(int i = 0;i < n; ++i) p[i] *= 2; } int main() { int a[3][4] = { { 1,2,3,4},{5,6,7,8}, { 9,10,11,12 } }; Double( // 在此处补充你的代码 a[0]+4,6 ); for(int i = 0;i < 3; ++i) { for(int j = 0; j < 4; ++j) cout << a[i][j] << ","; cout << endl; } return 0; }
6:指针练习:Memcpy之二
#include <iostream> using namespace std; void Memcpy( void * src, void * dest, int size) { // 在此处补充你的代码 if (src < dest) { while(size--) ((char *)dest)[size] = ((char *)src)[size]; } else if (src > dest) { for(int n=0;n<size;n++) ((char *)dest) = ((char *)src) ; } else { return; } } void Print(int * p,int size) { for(int i = 0;i < size; ++i) cout << p[i] << ","; cout << endl; } int main() { int a[10]; int n; cin >> n; for(int i = 0;i < n; ++i) cin >> a[i]; int b[10] = {0}; Memcpy(a,b,sizeof(a)); Print(b,n); int c[10] = {1,2,3,4,5,6,7,8,9,10}; Memcpy(c,c+5,5*sizeof(int)); //将c的前一半拷贝到后一半 Print(c,10); char s[10] = "123456789"; Memcpy(s+2,s+4,5); //将s[2]开始的5个字符拷贝到s[4]开始的地方 cout << s << endl; char s1[10] = "123456789"; Memcpy(s1+5,s1+1,4); //将s1[5]开始的4个字符拷贝到s1[1]开始的地方 cout << s1 << endl; return 0; }
7:指针练习:MyMax
#include <iostream> using namespace std; // 在此处补充你的代码 void *MyMax(void *src, int size, int n, int(*f)(void*,void*)) { char *p = (char *)src; char *max = p; for(;n--;p += size) if (f(p, max) > 0) max = p; return max; } int Compare1(void * n1,void * n2) { int * p1 = (int * )n1; int * p2 = (int * )n2; return ((*p1)%10) - ((*p2)%10); } int Compare2(void * n1,void * n2) { int * p1 = (int * )n1; int * p2 = (int * )n2; return *p1 - *p2; } #define eps 1e-6 int Compare3(void * n1,void * n2) { float * p1 = (float * )n1; float * p2 = (float * )n2; if( * p1 - * p2 > eps) return 1; else if(* p2 - * p1 > eps) return -1; else return 0; } int main() { int t; int a[10]; float d[10]; cin >> t; while(t--) { int n; cin >> n; for(int i = 0;i < n; ++i) cin >> a[i]; for(int i = 0;i < n; ++i) cin >> d[i]; int * p = (int *) MyMax(a,sizeof(int),n,Compare1); cout << * p << endl; p = (int *) MyMax(a,sizeof(int),n,Compare2); cout << * p << endl; float * pd = (float * )MyMax(d,sizeof(float),n,Compare3); cout << * pd << endl; } return 0; }
8:指针练习:指向指针的指针
#include <iostream> using namespace std; int main() { int x,y,z; x = 10; y = 20; z = 30; int * a[3] = { &x, &y,&z}; for( // 在此处补充你的代码 int **p = a; p < a + 3; ++p) cout<< * (*p) << endl; return 0; }
9:指针练习:SwapMemory
#include <iostream> using namespace std; void SwapMemory(void * m1,void * m2, int size) { // 在此处补充你的代码 for(int n=0;n<size;n++) { char c = ((char *)m1) ; ((char *)m1) = ((char *)m2) ; ((char *)m2) = c; } } void PrintIntArray(int * a,int n) { for(int i = 0;i < n; ++i) cout << a[i] << ","; cout << endl; } int main() { int a[5] = {1,2,3,4,5}; int b[5] = {10,20,30,40,50}; SwapMemory(a,b,5 * sizeof(int)); PrintIntArray(a,5); PrintIntArray(b,5); char s1[] = "12345"; char s2[] = "abcde"; SwapMemory(s1,s2,5); cout << s1 << endl; cout << s2 << endl; return 0; }
-eof-
相关文章推荐
- 程序设计与算法(二)测验汇总011:最佳加法表达式(DP、高精度)
- 6:数字统计( 程序设计与算法(一)第四周测验(2017夏季)
- 程序设计实习MOOC / 程序设计与算法(一)第三周测验(2017冬季)2:求一元二次方程的根
- 程序设计与算法(一)第一周测验(2017夏季) 解题报告
- 程序设计与算法 第七周测验
- 程序设计实习MOOC / 程序设计与算法(一)第三周测验(2017冬季)3:点和正方形的关系
- 程序设计实习MOOC / 程序设计与算法(一)第三周测验(2017冬季)6:求整数的和与均值
- 程序设计实习MOOC / 程序设计与算法(一)第三周测验(2017冬季)4:苹果和虫子2
- 程序设计实习MOOC / 程序设计与算法(一)第三周测验(2017冬季)5:简单计算器
- 程序设计与算法 第三周测验
- 1:角谷猜想(程序设计与算法(一)第四周测验(2017夏季))
- 4:求特殊自然数(程序设计与算法(一)第四周测验(2017夏季))
- 程序设计与算法 第六周测验
- 程序设计实习MOOC - 程序设计与算法(三)第一周测验 4-神秘的数组初始化
- 2:正常血压(程序设计与算法(一)第四周测验(2017夏季)
- 程序设计实习MOOC / 程序设计与算法(一)第三周测验(2017冬季)8:奥运奖牌计数
- 程序设计与算法 第十周测验
- 程序设计与算法 第一周测验
- 算法----计算机程序设计之魂
- 程序设计就像盖房子,数据结构就像砖瓦,而算法就是设计图纸