1.调试分析课本每一个例题,有可能的话更改成2-3个方法的新程序:
H-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;
}
H-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++;
}
}
H-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';
}
H-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;
}
H-5
#include <iostream>
using namespace std;
int main()
{
int col,row;
int i,j;
cout<<"请输入第一个数组的行数:";
cin>>col;
cout<<"请输入第一个数组的列数:";
cin>>row;
int **ps=new int*[col];
for(i=0;i<col;i++)
ps[i]=new int[row];
cout<<"请输入数组元素:"<<endl;
for(i=0;i<col;i++)
for(j=0;j<row;j++)
cin>>ps[i][j];
cout<<"第一个数组为:"<<endl;
for(i=0;i<col;i++)
{
for(j=0;j<row;j++)
cout<<ps[i][j]<<" ";
cout<<endl;
}
cout<<endl;
cout<<"请输入第二个数组的行数:";
cin>>col;
cout<<"请输入第二个数组的列数:";
cin>>row;
int *p[col*row];
for(i=0;i<col*row;i++)
p[i]=new int[col*row];
cout<<"请输入数组元素:"<<endl;
for(i=0;i<col;i++)
for(j=0;j<row;j++)
cin>>p[i][j];
cout<<"第二个数组为:"<<endl;
for(i=0;i<col;i++)
{
for(j=0;j<row;j++)
cout<<p[i][j]<<" ";
cout<<endl;
}
delete ps;
for(i=0;i<col*row;i++)
delete p[i];
return 0;
}
H-6
#include <iostream>
using namespace std;
void max(int *p[],int col,int row);
int main()
{
int col,row;
int i,j;
cout<<"请输入第一个数组的行数:";
cin>>col;
cout<<"请输入第一个数组的列数:";
cin>>row;
int **ps=new int*[col];
for(i=0;i<col;i++)
ps[i]=new int[row];
cout<<"请输入数组元素:"<<endl;
for(i=0;i<col;i++)
for(j=0;j<row;j++)
cin>>ps[i][j];
max(ps,col,row);
return 0;
}
void max(int **p,int col,int row)
{
int max=0;
for(int i=0;i<col;i++)
for(int j=0;j<row;j++)
{
if(p[i][j]>max)
max=p[i][j];
}
cout<<"最大值为:"<<max<<endl;
}
2-1
/***********编写程序,将10个整型数2、4、6...18和20
赋予一个数组,然后使用指针输出该数组各元素的值*******/
#include <iostream>
using namespace std;
int main()
{
int a[10],*p,i;
for(i=1;i<11;i++)
a[i-1]=2*i;
p=a;
for(i=0;i<10;i++,p++)
cout<<*p<<' ';
cout<<endl;
}
2-2
/***********把键盘输入的一个大写字符串该写为小写字符串并显
示出来,其中大小写转换使用自定义函数lower()实现*******/
#include <iostream>
using namespace std;
void lower(char *p)
{
while(*p!='\0')
{
if(*p<='Z'&& *p>='A')
{
*p+=32;
p++;
}
else
p++;
}
}
int main()
{
char a[50],i;
cout<<"please input a string"<<endl;
cin.get(a,50);
lower(a);
cout<<"the string after change: " ;
for(i=0;a[i]!='\0';i++)
cout<<a[i];
cout<<endl;
return 0;
}
2-3
/*******输入一个字符串,删除其中的所有空格后输出*******/
#include <iostream>
using namespace std;
int main()
{
char a[50],b[50];
int i,j=0;
cout<<"please input a string"<<endl;
cin.get(a,50);
for(i=0;a[i]!='\0';i++)
{
if(a[i]!=' ')
{
b[j]=a[i];
j++;
}
}
b[j]='\0';
for(i=0;b[i]!='\0';i++)
cout<<b[i];
cout<<endl;
return 0;
}
2-4
/************编写程序,当输入整数1-12月份时,输出该月的英文名称,
输入其他整数时结束程序。例如,输入4,则输出April;输入0,则退出程
序,要求使用指针数组处理***************************************/
#include <iostream>
using namespace std;
int main()
{
char *month[]={"January","February","March","April","May","June","July",
"August","September","October","November","December"};
int i;
while(1)
{
cout<<"please input a number,input 0 to exit: "<<endl;
cin>>i;
if(i==0)
break;
else if(i<0||i>12)
cout<<"input error,please input another number!"<<endl;
else
cout<<month[i-1]<<endl;
}
return 0;
}
2-5
/*********分别使用指针数组和二级指针输入、
输出一个二维整型数组*********************/
#include <iostream>
using namespace std;
int main()
{
int a[2][3],*p[2]; //给指针数组赋值要通过一个二维数组间接赋值
int **pp;
int i,j;
p[0]=a[0],p[1]=a[1];
cout<<"please input 6 numbers"<<endl;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
cin>>p[i][j];
pp=p;
cout<<"the number you input is: "<<endl;
for(i=0;i<2;i++) // 指针数组输出
for(j=0;j<3;j++)
cout<<*(p[i]+j)<<" ";
cout<<endl;
cout<<"the number you input is: "<<endl;
for(i=0;i<2;i++) // 二级指针输出
for(j=0;j<3;j++)
cout<<*(pp[i]+j)<<" ";
cout<<endl;
return 0;
}
2-6
/*********输入一个3x4的矩阵,编写函数
求其中的最大元素*******************/
#include <iostream>
using namespace std;
int main()
{
int a[3][4],i,j,max;
cout<<"输入一个3x4的矩阵"<<endl;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
cin>>a[i][j];
cout<<"你输入的矩阵为: "<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
cout<<a[i][j]<<'\t';
cout<<endl;
}
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
if(max<a[i][j])
max=a[i][j];
}
cout<<"矩阵的最大值为: "<<max<<endl;
return 0;
}
3. 有n个人围成一个圆圈,从第一个人开始报数,从1到3循环,凡是报3的退出圈子,问最后退出圈子的人是原来的几号:
#include<iostream>
using namespace std;
int main()
{
int n;
int a[100];
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;
int j=1;
while(count<=n)
{
for(;j<=n;j++)
if(a[j-1]%3==0)
{
count+=3;
break;
}
}
cout<<"最后退出圈子的人是原来的"<<count-3<<"号"<<endl;
return 0;
}
4.一个班有5个学生,每一个学生有几门成绩(到底是几门自已定,或3或4或5或6),定义函数来完成下面功能:
计算第2门课成的平均分;
找出有2门以上成绩不及格的学生,并输出其学号和全部课程成绩;
找出平均成绩在90以上或者全部课程在85分以上的学生
#include <iostream>
using namespace std;
void fun0(int n) //学生的姓名
{
char name[5][5]={"A","B","C","D","E"};
cout<<"姓名:"<<name[n]<<'\t';
}
void fun1(int a,int b,int c, int d,int e) //计算第2门课程的平均分;
{
double ave;
ave=double(a+b+c+d+e)/5;
cout<<"第2门课程的平均分为"<<ave<<"分"<<endl;
cout<<endl;
}
void fun2(int *a)//找出有2门以上成绩不及格的学生,并输出其学号和全部课程成绩
{
int i,j=0,*b;
b=a;
a++;
for(i=1;i<5;i++)
{
if(*a<60)
a++,j++;
else
a++;
}
if(j>=2)
{
int i;
fun0(a[0]);
cout<<"学号: "<<*b<<'\t';
b++;
cout<<"四科成绩分别为: ";
for(i=0;i<4;i++,b++)
cout<<*b<<'\t';
cout<<endl;
}
}
void fun3(int *a) //平均成绩在90以上或者全部课程在85分以上的学生
{
int i,*b,*c,j=0,sum=0;
double ave;
b=c=a;
a++,b++;
for(i=0;i<4;i++,a++)
sum+=*a;
ave=double(sum)/4;
for(i=0;i<4;i++)
{
if(*b>=85)
b++,j++;
else
b++;
}
if(j==4 || ave>=90)
{
fun0(a[0]);
}
}
int main()
{
int A[]={1,96,90,80,65}; //数组名为学生名字,第一个元素为学号,后面4个为成绩
int B[]={2,86,85,86,87};
int C[]={3,55,45,60,35};
int D[]={4,95,95,95,95};
int E[]={5,55,56,55,56};
fun1(A[2],B[2],C[2],D[2],E[2]);
cout<<"2门以上成绩不及格的学生有"<<endl<<endl;
fun2(A);
fun2(B);
fun2(C);
fun2(D);
fun2(E);
cout<<endl;
cout<<"平均成绩在90以上或者全部课程在85分以上的学生有"<<endl<<endl;
fun3(A);
fun3(B);
fun3(C);
fun3(D);
fun3(E);
cout<<endl<<endl;
return 0;
}
明哥这是以前作业的提交记录,网页不知道为什么显示不了啊!!