zoukankan      html  css  js  c++  java
  • 第七章指针部分练习

    分析代码:
    分析下列程序的运行结果,指出指针加1与地址值加1的不同。

    #include <iostream.h>
    
    int main()
    {
    	 int i1,i2,*pi1=&i1,*pi2;
    	 double d1,d2,*pd1=&d1,*pd2;
    
    	 pi2=pi1+1;
    	 pd2=pd1+1;
    
    	 cout<<pi2-pi1<<','<<pd2-pd1<<endl;
    	 cout<<(int)pi2-(int)pi1<<',';
    	 cout<<(int)pd2-(int)pd1<<endl;
    	 
    	 return 0;
    }
    

    分析:
    该程序中,有指针定义和赋初值及赋值。程序中第一个输出语句是输出两个指针相减的值,由于是相邻指针,相减值为1。第二个输出语句是输出两个地址相减的值,一个是int型指针,另一个是double型指针,它们之差分别为一个int型数和一个double型数在内存中占的字节数。
    运行结果:
    在这里插入图片描述—作业—
    1、求出100—200之间的所有素数,要求每行输出5个素数。

    算法分析:在main函数中完成:①数组的输入;②将数组名作为实际参数进行算法的调用;③最后结果的输出。

    #include <iostream>
    #include <cmath>
    
    using namespace std;
    void add(int arr[], int size);
    int prime(int arr[], int size);
    
    int main()
    {
    	int array[100];
    	add(array,100);
    	prime(array,100);
    
    	return 0;
    }
    
    //数组压值
    void add(int arr[], int size)
    {
    	int i=0;
    	for(i;i<size;i++)
    	{
    		arr[i] = 100+i;
    	}
    }
    
    //判断数组包含的素数,并输出
    int prime(int arr[], int size)
    {
    	int i=0,count=0;
    	for(i;i<size;i++)
    	{
    		for(int j=2;j<sqrt(arr[i])+1;j++)
    		{
    			if(0 == arr[i]%j)
    				break;
    		}
    		if(j>=sqrt(arr[i])+1)
    		{
    			cout<<arr[i]<<" ";
    			count++;
    			if(0==count%5)
    				cout<<endl;
    		}
    	}
    	cout<<endl;
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述

    2、有一个3×4的矩阵,求其中的最大元素和数组的下标。
    算法分析:在main函数中完成:①数组的输入;②将数组名作为实际参数,调用求最大值的函数;③将最大值和数组的下标作为函数值返回后输出。

    #include <iostream>
    #include <cstdlib>
    #include <ctime>
    
    using namespace std;
    void addValue(int arr[ ][4], int size);
    void outValue(int arr[ ][4] , int size);
    void printArr(int arr[ ][4], int size);
    
    int main()
    {
    	int array[3][4] = {0};
    
    	addValue(array,3);
    	printArr(array,3);
    	outValue(array,3);
    
    
    	return 0;
    }
    
    //数组压值
    void addValue(int arr[ ][4], int size)
    {
    	int i,j;
    	srand((int)time(0));  // 产生随机种子  把0换成NULL也行
    	for(i=0;i<size;i++)
    	{
    		for(j=0;j<4;j++)
    		{
    			arr[i][j] = rand()%100;
    		}
    	}
    }
    
    //打印输出随机数组
    void printArr(int arr[ ][4], int size)
    {
    	int i,j,count=0;
    	for(i=0;i<size;i++)
    	{
    		for(j=0;j<4;j++)
    		{
    			cout<<arr[i][j]<<" ";
    			count++;
    			if(0 == count%4)
    				cout<<endl;
    		}
    	}
    }
    
    //输出最大值跟下标
    void outValue(int arr[ ][4] , int size)
    {
    	int i,j,max,index=0,jndex=0;
    	max = arr[0][0];
    	for(i=0;i<size;i++)
    		for(j=0;j<4;j++)
    			if(arr[i][j]>max)
    			{
    				max = arr[i][j];
    				index = i;
    				jndex = j;
    			}
    
    	cout<<"数组中最大值为max:"<<max<<"  下标为: ("<<index+1<<" , "<<jndex+1<<")"<<endl;
    }
    

    运行结果:

    在这里插入图片描述

    3、若有定义语句“Int a=2,b=4; Int *p1,*p2;P1=&a;p2=&b;”则以下的结果:

    *p1=
    *p2=
    a=
    b=

    答案:

    *p1 = 2
    *p2 = 4
    a = 2
    b = 4
    测试代码:

    #include <iostream>
    
    void testOne(int x, int y);
    using namespace std;
    
    int main()
    {
    	int a=2,b=4; 
    	testOne(a,b);
    }
    
    //测试一
    void testOne(int x, int y)
    {
    	int *p1,*p2;
    	p1 = &x;
    	p2 = &y;
    	
    	cout<<"==============testOne====================
    ";
    	cout<<"*p1 = "<<*p1<<endl;
    	cout<<"*p2 = "<<*p2<<endl;
    	cout<<"a = "<<x<<endl;
    	cout<<"b = "<<y<<endl;
    	//cout<<"p1 = "<<p1<<endl;
    }
    

    运行结果:
    在这里插入图片描述

    4、若有定义语句“int year=2019,*P=&year;”,则以下的结果:

    “(*P)++”=
    “ ++(*P) ” =
    “*p++”=
    “*P+=1”=

    答案:

    测试代码:

    #include <iostream>
    
    void testTwo(int z);
    using namespace std;
    
    int main()
    {
    	int year=2019; 
    	testTwo(year);
    }
    //测试二
    void testTwo(int z)
    {
    	int *p = &z;
    	cout<<"==============testTwo====================
    ";
    	cout<<"(*p)++ = "<<(*p)++<<endl;
    	cout<<"++(*p) = "<<++(*p)<<endl;
    	cout<<"*p++ = "<<*p++<<endl;
    	cout<<"(*p+=1)=  "<<(*p+=1)<<endl;
    }
    

    运行结果:
    在这里插入图片描述

    千里之行,始于足下!
  • 相关阅读:
    Swift网络库Alamofire的导入
    iOS书摘之Objective-C编程之道 iOS设计模式解析
    Crash日志分析
    自动布局库--Masonry使用
    Xcode Ghost
    Xcode8-beat升级需谨慎
    UIView剖析之Draw、Size、Layout方法
    Xcode警告忽略
    属性(property)与成员变量(ivar)
    sql server分页存储过程
  • 原文地址:https://www.cnblogs.com/MINAIot/p/13040996.html
Copyright © 2011-2022 走看看