第九周作业

1.调试分析课本每一个例题,有可能的话更改成2-3个方法的新程序;

例6.1

#include<iostream>
using namespace std;

int main()
{
	int a = 10;
	int *p;
	p = &a;
	cout<<"a = "<<a<<endl;
	cout<<"p = "<<p<<endl;
	cout<<"&a = "<<&a<<endl;
	cout<<"*p = "<<*p<<endl;
	cout<<"&p = "<<&p<<endl;
	cout<<endl;
	*p = 15;
	cout<<"a = "<<a<<endl;
	cout<<"p = "<<p<<endl;
	cout<<"&a = "<<&a<<endl;
	cout<<"*p = "<<*p<<endl;
	cout<<"&p = "<<&p<<endl;

	return 0;
}

例6.2

#include<iostream>
using namespace std;

int main()
{
	int a,b;
	int *p = &a,*q = &b,*tp;
	cout<<"请输入两个数: ";
	cin>>a>>b;
	if(a<b)
	{
		tp = p;
		p = q;
		q = tp;
	}
	cout<<"初始的两个数: "<<a<<" "<<b<<endl;
	cout<<"从大到小排序后的数为: "<<*p<<" "<<*q<<endl;

	return 0;
}

例6.3

#include<iostream>
using namespace std;

int main()
{
	int a,b,temp;
	int *p = &a,*q = &b;
	cout<<"Please input a and b: ";
	cin>>a>>b;
	cout<<"初始的两个数为: "<<a<<" "<<b<<endl;
	if(a<b)
	{
		temp = *p;
		*p = *q;
		*q = temp;
	}
	cout<<"从大到小排序后的数为: "<<*p<<" "<<*q<<endl;

	return 0;
}

例6.4

#include<iostream>
using namespace std;

int main()
{
	int a = 10,b = 10,*ptr1,*ptr2;
	ptr1 = &a;
	ptr2 = &b;
	cout<<boolalpha<<(*ptr1 == *ptr2)<<endl;
	cout<<boolalpha<<(ptr1 == ptr2)<<endl;

	return 0;
}

例6.5

方法1

#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
	int a[10];
	for(int i = 0;i < 10;i++)
		a[i] = 2 * (i + 1);
	for(i = 0;i < 10;i++)
		cout<<setw(4)<<a[i];
	cout<<endl;

	return 0;
}

方法2

#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
	int a[10];
	for(int i = 0;i < 10;i++)
		* (a + i) = 2 * (i + 1);
	for(i = 0;i < 10;i++)
		cout<<setw(4)<<* (a + i);
	cout<<endl;

	return 0;
}

方法3


例6.6

#include<iostream>
using namespace std;

int main()
{
	char a[] = "Hello world",b[20],*p,*q;
	p = a,q = b;
	for(;*p != '\0';p++,q++)
		*q = *p;
	*q = '\0';
	cout<<"string1 is: ";
	cout<<a<<endl;
	cout<<"string2 is: ";
	cout<<b<<endl;

	return 0;
}

例6.7

#include<iostream>
using namespace std;

int main()
{
	char *p = "student";
	for(;*p != '\0';p++)
		cout<<p<<endl;

	return 0;
}

例6.8

#include<iostream>
using namespace std;

int main()
{
	char *p = "student";
	for(int i = 0;p[i] != '\0';i++)
		cout<<p[i];
	cout<<endl;

	return 0;
}

例6.9

#include<iostream>
using namespace std;

int main()
{
	char s[50];
	char *p = s;
	cout<<"Please input a string: ";
	cin.get(p,50);
	for(;*p != '\0';)
		p++;
	cout<<"the length is: "<<p-s<<endl;

	return 0;
}

例6.10

#include<iostream>
using namespace std;

int main()
{
	int i = 5,*p,**pp;
	p = &i;
	pp = &p;
	cout<<&i<<'\t'<<i<<endl;
	cout<<&p<<'\t'<<p<<'\t'<<*p<<endl;
	cout<<&pp<<'\t'<<pp<<'\t'<<*pp<<'\t'<<**pp<<endl;

	return 0;
}

例6.11

#include<iostream>
using namespace std;

int main()
{
	int a[5] = {1,2,3,4,5};
	int *p[5] = {&a[0],&a[1],&a[2],&a[3],&a[4]};
	for(int i = 0;i < 5;i++)
		cout<<*p[i]<<'\t';
	cout<<endl;

	return 0;
}

例6.12

#include<iostream>
using namespace std;

int main()
{
	char a[] = "computer system",b[] = "hardware",c[] = "software";
	char *p[4];
	p[0] = a;
	p[1] = b;
	p[2] = c;
	p[3] = NULL;
	for(int i = 0;p[i] != NULL;i++)
		cout<<p[i]<<endl;

	return 0;
}

例6.13

#include<iostream>
using namespace std;

int main()
{
	char * weekname[] = {"Sunday","Monday","Tuesday","Wednesday",
		"Thursday","Friday","Saturday"};
	int i;
	while(1)
	{
		cout<<"Please input week No.: ";
		cin>>i;
		if(i<0 || i>6)
			break;
		cout<<"week No."<<i<<"-->"<<weekname[i]<<endl;
	}
	return 0;
}

例6.14

#include<iostream>
using namespace std;

int main()
{
	char * p[] = {"Rebacca","Heaven","Michael Chang","Linda Tsai"};
	char * temp;
	int i,j,n = 4;
	for(i = 0;i < n - 1;i++)
		for(j = 0;j < n - 1;j++)
		{
			temp = p[j];p[j] = p[j + 1];p[j + 1] = temp;
		}
		for(i = 0;i < n;i++)
			cout<<p[i]<<endl;

	return 0;
}

例6.15

#include<iostream>
using namespace std;

int main()
{
	int a[2][3], *p[2];
	int i,j;
	p[0] = a[0];
	p[1] = a[1];
	for(i = 0;i < 2;i++)
		for(j = 0;j < 3;j++)
			a[i][j] = j+1;
		for(i = 0;i < 2;i++)
			for(j = 0;j < 3;j++)
			{
				cout<<"a["<<i<<"]["<<j<<"]";
				cout<< *(p[i]+j)<<endl;
			}

	return 0;
}

例6.16

#include<iostream>
using namespace std;

int main()
{
	int a[2][3], *p[2],**pp;
	int i,j;
	p[0] = &a[0][0];
	p[1] = &a[1][0];
	pp = p;
	for(i = 0;i < 2;i++)
		for(j = 0;j < 3;j++)
			pp[i][j] = j+1;
		for(i = 0;i < 2;i++)
			for(j = 0;j < 3;j++)
			{
				cout<<"a["<<i<<"]["<<j<<"]: ";
				cout<<*( *(pp+1)+j)<<endl;
			}

	return 0;
}

例6.17

#include<iostream>
using namespace std;

int main()
{
	char * a[] = {"Rebacca","Heaven","Michael Chang",NULL};
	char ** pp;
	while( *pp != NULL)
		cout<< *pp++<<endl;

	return 0;
}

 

例6.18

#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
	int a[2][3] = {1,2,3,4,5,6};
	int( *p)[3];
	int i,j;
	p = a;
	for(i = 0;i < 2;i++)
	{
		for(j = 0;j < 3;j++)
			cout<<setw(3)<<( *p)[j];
		p++;
	}
	cout<<endl;

	return 0;
}

 

例6.19

#include<iostream>
using namespace std;

void display(int *,int *);

int main()
{
	int a = 5,b = 10;
	int *pa = &a;
	int *pb = &b;
	display(pa,pb);

	return 0;
}

void display(int *p1,int *p2)
{
	cout<<"parameter 1 is "<<*p1<<endl;
	cout<<"parameter 2 is "<<*p2<<endl;
}

 

例6.20

#include<iostream>
using namespace std;

void lower(char * );

int main()
{
	char ch;
	cout<<"input a uppercase character: ";
	cin>>ch;
	lower(&ch);
	cout<<"converted character: ";
	cout<<ch<<endl;

	return 0;
}

void lower(char *pch)
{
	if( *pch >= 'A' && *pch <= 'Z')
		*pch += 'a' - 'A';
}

 

例6.21

#include<iostream>
using namespace std;

void swap(int *,int * );

int main()
{
	int a = 3,b = 4;
	cout<<"交换前的数据为: ";
	cout<<"a = "<<a<<"\tb = "<<b<<endl;
	swap(&a,&b);
	cout<<"交换后的数据为: ";
	cout<<"a = "<<a<<"\tb = "<<b<<endl;

	return 0;
}

void swap(int *u,int *v)
{
	int temp = *u;
	*u = *v;
	*v = temp;
}

 

另一种方法是:

#include<iostream>
using namespace std;

int main()
{
	int a = 3,b = 4,c;
	cout<<"交换前的数据为: ";
	cout<<"a = "<<a<<"\tb = "<<b<<endl;
	c = a;
	a = b;
	b = c;
	cout<<"交换后的数据为: ";
	cout<<"a = "<<a<<"\tb = "<<b<<endl;

	return 0;
}

 

例6.22

#include<iostream>
using namespace std;

void input(int *s,int n);
int min(int *s,int n);

int main()
{
	int a[10],small;
	input(a,10);
	small = min(a,10);
	cout<<"the minimum is: "<<small<<endl;

	return 0;
}

void input(int *s,int n)
{
	cout<<"please input "<<n<<" integers:  "<<endl;
	for(int i = 0;i < n;i++)
		cin>>s[i];
}

int min(int *s,int n)
{
	int min,i;
	min = *s;
	for(i = 1;i < n;i++)
		if(s[i] < min)
			min = s[i];
	return min;
}

 

例6.23

#include<iostream>
using namespace std;

int main()
{
	int func(int a,int b);
	int( *pf)(int a,int b);
	pf = func;
	cout<<"please input two integers: "<<endl;
	int m,n;
	cin>>m>>n;
	int result = ( *pf)(m,n);
	cout<<"the result is "<<result<<endl;

	return 0;
}

int func(int a,int b)
{
	return a + b;
}


另一种方法:

#include<iostream>
using namespace std;

int main()
{
	int m,n,s;
	cout<<"please input two integers: \n";
	cin>>m>>n;
	s = m + n;
	cout<<"the result is "<<s<<endl;

	return 0;
}

 

例6.24

#include<iostream>
using namespace std;

int max(int,int);
int min(int,int);
int add(int,int);
void process(int,int,int( *fun)(int,int));

int main()
{
	int a,b;
	cout<<"enter a and b: "<<endl;
	cin>>a>>b;
	cout<<"max = ";
	process(a,b,max);
	cout<<"min = ";
	process(a,b,min);
	cout<<"sum = ";
	process(a,b,add);

	return 0;
}

int max(int x,int y)
{
	int z;
	if(x > y)z = x;
	else z = y;
	return z;
}

int min(int x,int y)
{
	int z;
	if(x < y)z = x;
	else x = y;
	return z;
}

int add(int x,int y)
{
	int z;
	z = x + y;
	return z;
}

void process(int x,int y,int( *fun)(int,int))
{
	int result;
	result = ( *fun)(x,y);
	cout<<result<<endl;
}



2.编程实现课本每一个编程.

习题1

#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
    int arr[10]={2,4,6,8,10,12,14,16,18,20};
    int *p=arr;
    for(int i=0;i<10;i++)
    {
        cout<<setw(5)<<*p;
        if((i+1)%5==0)
            cout<<endl;
        p++;
    }
    
	return 0;
}

习题2

 

#include <iostream>
using namespace std;

void lower(char *p);
const int size=20;

int main()
{
    char ch[size];
	cout<<"请输入一行大写字符串:";
    cin>>ch;
    lower(ch);
    cout<<"该字符串相应的小写字符串为:";
    cout<<ch<<endl;
    
	return 0;
}

void lower(char *p)
{
    while( *p)
    {
        if(*p >= 'A' && *p <= 'Z')
            *p += 32;
        p++;
    }
}

习题3

 

习题4

#include<iostream>
using namespace std;

int main()
{
	int n;
    const char *month[12] = {"January","February","March","April","May","June",
                  "July","August","September","October","November","December"};
    cout<<"请输入一个1到12之间的整数: ";
    cin>>n;
    while(n >= 1 && n <= 12)
    {
        cout<<"当前月份是:"<<month[n-1]<<endl;
        cout<<"输入其他数字则退出."<<endl<<endl;
		cout<<"请输入一个1到12之间的整数:";
        cin>>n;
    }
    cout<<"Done!"<<endl;
    
	return 0;
}

习题5

 

习题6


 

3. 有n个人围成一个圆圈,从第一个人开始报数,从1到3循环,凡是报3的退出圈子,问最后退出圈子的人是原来的几号。

#include <iostream>
using namespace std;

int main()
{
    int i,n, *p;
    cout<<"请输入一个非零整数n: ";
    cin>>n;
    int *ps = new int[n];
    for(i=0;i<n;i++)
		ps[i] = i+1;
    int remain;
    remain = n;
    int remain_H = n,count=1;
   
	while(remain > 1)
    {
        p = &ps[0];
        while(count <= remain_H)
        {
            while(*p == 0)
            {
                p++;
            }
            if(count % 3 == 0)
            {
                 *p=0;
                 remain--;
            }
            count++;
            p++;
        }
        remain_H += remain;
    }
    p--;
    cout<<"最后退出圈子的人是原来的 "<<*p<<" 号。"<<endl;
    delete ps;
    
	return 0;
}

 

4.一个班有5个学生,每一个学生有几门成绩(到底几门自己定,或3或4或5或6),定义函数来完成下面功能:

      计算第2门课成的平均分;

      找出有2门以上成绩不及格的学生,并输出其学号和全部课程成绩;

      找出平均成绩在90以上或者全部课程在85分以上的学生。

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值