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<<"请输入两个数"<<endl;
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<<"请输入两个数"<<endl;
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,*p1,*p2;
p1=&a,p2=&b;
cout<<boolalpha<<(*p1==*p2)<<endl;
cout<<boolalpha<<(p1==p2)<<endl;
return 0;
}
6-5
#include <iostream>
using namespace std;
int main()
{
int a[10];
for(int i=0;i<10;i++)
{
a[i]=2*i+1;
cout<<a[i]<<endl;
}
return 0;
}
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<<"s1= "<<a<<endl;
cout<<"s2= "<<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="HELLO";
for(int a=0;p[a]!='\0';a++)
cout<<p[a]<<endl;
return 0;
}
6-9
#include<iostream>
using namespace std;
int main()
{
char a[50];
char *p;
cout<<"input what you want to think";
cin.get(a,50);
p=a;
for(; *p!='\0';)
p++;
cout<<"length is: "<<p-a<<endl;
return 0;
}
6-10
#include<iostream>
using namespace std;
int main()
{
int a=100,*b,**c;
b=&a,c=&b;
cout<<&a<<'\t'<<endl;
cout<<&b<<'\t'<<b<<'\t'<<*b<<endl;
cout<<&c<<'\t'<<c<<'\t'<<*c<<'\t'<<**c<<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<<"a["<<i<<"]= "<<*p[i]<<endl;
return 0;
}
6-12
#include<iostream>
using namespace std;
int main()
{
char a[]="come on",b[]="you",c[]="everyone";
char *p[3];
p[0]=b,p[1]=c,p[2]=a;
for(int i=0;i<3;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<<"pleasure intput week No.: (0 :escape)";
cin>>i;
if(i==0)break;
cout<<"week No."<<i<<"-->"<<weekname[i%7]<<endl;
}
}
习题
1
#include <iostream>
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<<*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()
{
cout << "请输入一个大写字符串: " << endl;
char arr[SIZE];
cin>>arr;
lower(arr);
cout<<"该字符串的小写为:"<<endl;
cout<<arr<<endl;
return 0;
}
void lower(char *p)
{
while(*p)
{
if(*p>='A'&&*p<='Z')
*p+=32;
p++;
}
}
3
#include <iostream>
using namespace std;
void del(char *p);
const int SIZE=20;
int main()
{
cout << "请输入一个字符串: " << endl;
char arr[SIZE];
cin.get(arr,SIZE);
del(arr);
cout<<"删除空格后为:"<<endl;
cout<<arr<<endl;
return 0;
}
void del(char *p)
{
char arr[SIZE];
int i=0;
for(;*p;i++)
arr[i]=p[i];
int k=0;
for(i=0;arr[i]!='\0';i++)
{
if(arr[i]!=' ')
p[k++]=arr[i];
}
p[k]='\0';
}
4
#include <iostream>
using namespace std;
int main()
{
const char *month[12]={"January","February","March","April","May","June",
"July","August","September","October","November","December"};
cout<<"请输入一个1到12之间的整数(输入其他数字则退出):"<<endl;
int num;
cin>>num;
while(num>=1&&num<=12)
{
cout<<"当前月份是:"<<month[num-1]<<endl;
cout<<"请输入一个1到12之间的整数(输入其他数字则退出):"<<endl;
cin>>num;
}
cout<<"Done!\n";
return 0;
}
1
#include <iostream>
using namespace std;
int main()
{
int n;
int *p;
cout<<"请输入一个整数n:"<<endl;
cin>>n;
int *ps=new int[n];
for(int i=0;i<n;i++)
ps[i]=i+1;
int remain;
remain=n;
int remain_H=n;
int 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;
}
2
#include <iostream>
using namespace std;
struct mark
{
int chinese;
int math;
int english;
};
int ave(mark arr[]);
void bad(mark arr[]);
void good(mark arr[]);
int main()
{
mark student[5];
int i;
for(i=0;i<5;i++)
{
cout<<"请输入第 "<<i+1<<" 个学生的语文成绩:";
cin>>student[i].chinese;
cout<<"请输入第 "<<i+1<<" 个学生的数学成绩:";
cin>>student[i].math;
cout<<"请输入第 "<<i+1<<" 个学生的英语成绩:";
cin>>student[i].english;
}
cout<<"第二门课程的平均成绩是:"<<ave(student)<<endl;
bad(student);
good(student);
return 0;
}
int ave(mark arr[])
{
int aver=0;
for(int i=0;i<5;i++)
{
aver+=arr[i].math;
}
return aver/5;
}
void bad(mark arr[])
{
int num;
for(int i=0;i<5;i++)
{
num=0;
if(arr[i].chinese<60)
num++;
if(arr[i].math<60)
num++;
if(arr[i].english<60)
num++;
if(num>=2)
{
cout<<"第 "<<i+1<<" 号同学有两门或以上成绩不及格。"<<endl;
cout<<"其成绩为:"<<endl;
cout<<"语文:"<<arr[i].chinese<<" "<<"数学:"<<arr[i].math<<" "<<"英语:"<<arr[i].english<<endl;
}
}
}
void good(mark arr[])
{
int ave;
int num_1=0,num_2=0;
for(int i=0;i<5;i++)
{
ave=(arr[i].chinese+arr[i].english+arr[i].math)/3;
if(ave>90)
{
cout<<"第 "<<i+1<<"号同学的成绩平均分在90分或以上。"<<endl;
num_1++;
}
if(arr[i].chinese>85&&arr[i].english>85&&arr[i].math>85)
{
cout<<"第 "<<i+1<<"号同学的全部课程成绩在85分以上。"<<endl;
num_2++;
}
}
if(num_1==0)
cout<<"没有一个同学平均成绩在90以上。"<<endl;
if(num_2==0)
cout<<"没有一个同学的全部课程都在85分以上。"<<endl;
}