实验作业
1.调试分析课本每一个例题,有可能的话更改成2-3个方法的新程序;
2.编程实现课本每一个编程习题。
3. 有n个人围成一个圆圈,从第一个人开始报数,从1到3循环,凡是报3的退出圈子,问最后退出圈子的人是原来的几号。
4.一个班有5个学生,每一个学生有几门成绩(到底是几门自已定,或3或4或5或6),定义函数来完成下面功能:
计算第2门课成的平均分;
找出有2门以上成绩不及格的学生,并输出其学号和全部课程成绩;
(3)
(9)
(15)
(20)
(21)
(22)
(23)
2
(5)
1.调试分析课本每一个例题,有可能的话更改成2-3个方法的新程序;
2.编程实现课本每一个编程习题。
3. 有n个人围成一个圆圈,从第一个人开始报数,从1到3循环,凡是报3的退出圈子,问最后退出圈子的人是原来的几号。
4.一个班有5个学生,每一个学生有几门成绩(到底是几门自已定,或3或4或5或6),定义函数来完成下面功能:
计算第2门课成的平均分;
找出有2门以上成绩不及格的学生,并输出其学号和全部课程成绩;
找出平均成绩在90以上或者全部课程在85分以上的学生。
1
(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;
}
(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<<" "<<endl;
cout<<"从大到小排序后的数为:"<<*p<<" "<<*q<<endl;
return 0;
}
(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;
}
(4)#include<iostream>
using namespace std;
int main()
{
int a=10,b=10,*ptr1,*ptr2;
ptr1=&a;
ptr2=&b;
cout<<boolalpha<<(*ptr1==*ptr2)<<endl;
//上述语句实质上比较的是变量a和b的值是否相等
cout<<boolalpha<<(ptr1==ptr2)<<endl;
//上述语句比较指针变量ptr1和ptr2的值是否相等
return 0;
}
(5)#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;
}
(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;
}
(7)#include<iostream>
using namespace std;
int main()
{
char*p="student";
for(;*p!='\0';p++)
cout<<p<<endl;
return 0;
}
(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;
}
(9)
#include<iostream>
using namespace std;
int main()
{
char s[50];
char*p;
cout<<"please input a string:";
cin.get(s,50);
p=s;
for(;*p!='\0';)
p++;
cout<<"the length is:"<<p-s<<endl;
return 0;
}
(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;
}
(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;
}
(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;
}
(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;
}
(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++)
if(strcmp(p[j],p[j+1])>0)
{
temp=p[j];p[j]=p[j+1];p[j+1]=temp;
}
for(i=0;i<n;i++)
cout<<p[i]<<endl;//输出字符串
return 0;
}
(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+i;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{
cout<<"a["<<i<<"]["<<j<<"]:";
cout<<*(p[i]+j)<<endl;
}
return 0;
}
(16)#include<iostream>
using namespace std;
int main()
{
int a[2][3],*p[2];
int**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+i;
for(i=0;i<2;i++)
for(j>0;j<3;j++)
{
cout<<"a["<<i<<"]["<<j<<"]:";
cout<<*(p[i]+j)<<endl;
}
return 0;
}
(17)#include<iostream>
using namespace std;
int main()
{
char*a[]={"Rebacca","Heaven","Michael Chang",NULL};
char**pp;
pp=a;
while(*pp!=NULL)
cout<<*pp++<<endl;
return 0;
}
(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;
}
(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;
}
(20)
#include<iostream>
using namespace std;
void lower(char*c);
int main()
{
char ch;
cout<<"input a uppercase character:";
cin>>ch;
lower(&ch);
cout<<"convert character:";
cout<<ch<<endl;
return 0;
}
void lower(char*pch)
{
if(*pch>='A'&&*pch<='Z')
*pch+='a'-'A'; //将大写字母转换为小写字母,等价于*pch+=32;
}
(21)
#include<iostream>
using namespace std;
void swap(int*u,int*v);
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;
}
(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;
}
(23)
#include<iostream>
using namespace std;
int main()
{
int fun(int a,int b);
int (*pf)(int a,int b);
pf=fun;
cout<<"please input two integers:"<<endl;
int m,n;
cin>>m>>n;
int result=(*pf)(m,n);
return 0;
}
int func(int a,int b)
{
return a+b;
}
(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<<"mim=";
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 z=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>
using namespace std;
int main()
{
int a[20]={2,4,6,8,10,12,14,16,18,20};
int*p;
p=a;
for(int i=0;i<10;i++)
{
cout<<*p<<'\t';
p++;
}
cout<<endl;
return 0;
}
(2)#include<iostream>
using namespace std;
void lower(char a);
int main()
{
char b[20];
cout<<"请输入一个大写字符串:"<<endl;
cin.get(b,20);
cout<<"该大写字符串转换为小写格式后是:"<<endl;
for(int i=0;b[i]!='\0';i++)
lower(b[i]);
cout<<endl;
return 0;
}
void lower(char a)
{
if(a>='A'&&a<='Z')
a+=32;
cout<<a<<'\t';
}
(3)#include<iostream>
using namespace std;
int main()
{
char a[20];
char*p;
cout<<"输入一个字符串:"<<endl;
cin.get(a,20);
cout<<"删除空格后的字符串为:"<<endl;
for(p=a;*p!='\0';p++)
if(*p!=' ')
cout<<*p;
cout<<endl;
return 0;
}
(4)
#include<iostream>
using namespace std;
int main()
{
int q;
char*week[]={"January","february","March","April","May","June","July",
"August","September","October","November","December"};
while(1)
{
cout<<"输入一个整数"<<endl;
cin>>q;
if(q<1||q>12)
break;
cout<<"该整数对应的月份号是:"<<endl;
cout<<week[q]<<endl;
}
return 0;
}
(5)
#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++)
a[i][j]=j+i;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{
cout<<"a["<<i<<"]["<<j<<"]:";
cout<<*(*(pp+i)+j)<<endl;
}
return 0;
}
(6)
#include<iostream>
#include<iomanip>
using namespace std;
int*p[3];
int a[3][4];
int max();
int main()
{
p[0]=a[0];
p[1]=a[1];
p[2]=a[2];
cout<<"输入一个3X4矩阵的元素:"<<endl;
for(int i=0;i<3;i++)
for(int j=0;j<4;j++)
cin>>a[i][j];
cout<<"该矩阵是:"<<endl;
for(int k=0;k<3;k++)
{
for(int j=0;j<4;j++)
cout<<setw(4)<<a[k][j];
cout<<endl;
}
cout<<"该数组中最大的元素是:"<<max()<<endl;
return 0;
}
int max()
{
int max;
max=*p[0];
for(int j=0;j<3;j++)
for(int k=0;k<4;k++)
if(*(p[j]+k)>=max)
max=*(p[j]+k);
return max;
}
3#include<iostream>
using namespace std;
int main()
{
int n;
int a[100];
int*p;
int count=0;
a[0]=0;
cout<<"规则是有n个人围成一个圆圈,从第一个人开始报数,从1到3循环,凡是报3的退出圈子"<<endl;
cout<<"输入n的值:"<<endl;
cin>>n;
for(int i=0;i<n;i++)
a[i]+=1;
while(count<=n)
{
for(p=a;p-a<n;p++)
if(*p%3==0)
{
count+=3;
break;
}
}
cout<<"最后退出圈子的人是原来的"<<count-3<<"号"<<endl;
return 0;
}