第六章作业

来源:互联网 发布:js正则表达式 match 编辑:程序博客网 时间:2024/05/14 03:08
  •  实验作业

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

2.编程实现课本每一个编程习题。

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

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

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

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

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


      课本习题1:编写程序,将10个整形数2、4、6、...、18和20赋予一个数组,然后使用指针输出该数组各元素的值。

方法1:(for 循环)

#include<iostream>using namespace std;int main(){int *p,a[11]={2,4,6,8,10,12,14,16,18,20};p=a;for(;*p!='\0';p++)cout<<'\t'<<*p<<'\t';return 0;  }

方法2: (while 循环)

#include<iostream>using namespace std;int main(){int *p,a[11]={2,4,6,8,10,12,14,16,18,20};p=a;while(*p!='\0'){cout<<'\t'<<*p<<'\t';p++;}return 0;  }

        课本习题2:把键盘输入的一个大写字符串改为小写字符串并显示出来,其中大小写转换用函数lower()实现。

#include<iostream>using namespace std;void lower(char *);int main(){char zi[100];cout<<"请输入一个大写英文字母串!!\n输入字母:";    cin.getline(zi,100);lower(zi);cout<<"转换结果:"<<zi<<'\n';return 0;}void lower(char *p){for(;*p!='\0';p++)if(*p<='Z' && *p>='A')*p=*p+32;}

              课本习题3:输入一个字符串,删除其中的所有空格后输出。

#include<iostream>  using namespace std;  int main()  {  char a[100],b[100],*p=a,*q=b;cout<<"请输入一字符串: ";cin.getline(a,100);while(*p){if(*p==' ')p++;else{*q=*p;p++;q++;}}*q='\0';cout<<"删除空格后的字符串为:  "<<b<<'\n';return 0;  }  

       课本习题4:编写程序,当输入整数1~12(月份号)时,输出该月的英文名称,输入其他整数时结束程序。

#include<iostream>  using namespace std;  int main()  {  char *month[14]={"January","February","March","April","May","June","July","August","September","October","Novermber","December"};int i=1;while(1){cout<<"请输入月份: ";cin>>i;if(i<1||i>12){cout<<"你智商不够用了,回家吃饭去吧!!!\n";return 0;}elsecout<<i<<" 月的英文名称是 : "<<month[i-1]<<'\n';}return 0;  }  


      第三题:

#include<iostream>  using namespace std;  int main()  {  int i=0,k=0,m=0,n;cout<<"   请输入总人数(整数)!!!\n "<<" 总人数为: ";cin>>n;int *p = new int [n];//申请n个整型变量空间,并定义一个整型指针p指向该地址空间开始处for(i=0;i<n;i++)p[i]=i+1;//地址是从1开始,但我们号数是从1开始,所以要加1.i=0;while(m<n-1)//最后只剩一个人{if(*(p+i)!=0)k++;if(k==3){*(p+i)=0;k=0;m++;}i++;if(i==n)i=0;}while(!(*p))p++;cout<<"  最后一个人是  "<<*p<<" 号\n";return 0;  }  


       第四题

上机课,突然想用这种方式来写。解法

#include<iostream>  using namespace std;  int main()  {  int i=0,avr=0,j=0;struct score{int yu;int shu;int ying;int wu;int aver;}student[5];for(i;i<5;i++){cout<<"请输入第 "<<i+1<<"个学生各科的成绩!!\n"<<"  语文成绩为 :";cin>>student[i].yu;cout<<"  数学成绩为 :";cin>>student[i].shu;cout<<"  英语成绩为 :";cin>>student[i].ying;cout<<"  物理成绩为 :";cin>>student[i].wu;cout<<"------------------------------------------\n";student[i].aver=(student[i].yu+student[i].shu+student[i].ying+student[i].wu)/4;avr+=student[i].shu;}cout<<" 第二门课程的平均分为:"<<avr/5<<"分";cout<<"\n有2门以上成绩不及格的学生为:\n\n";for(i=0;i<5;i++){if(student[i].yu<60)j++;if(student[i].shu<60)j++;if(student[i].ying<60)j++;if(student[i].wu<60)j++;if(j>2){cout<<"\t学号 :"<<i+1<<"号"<<"\t各科成绩为: \n"<<"语文 : "<<student[i].yu<<'\t'<<"数学 : "<<student[i].shu<<'\t'<<"英语 : "<<student[i].ying<<'\t'<<"物理 : "<<student[i].shu<<"\n\n";}}cout<<"平均成绩在90以上或者全部课程在85分以上的学生为:\n";for(i=0;i<5;i++){if(student[i].aver>90||(student[i].yu>85&&student[i].shu>85&&student[i].ying>85&&student[i].wu>85))cout<<i<<" 号同学\t";} cout<<'\n';return 0;  }  

采用指针,还对结果输出做了排版。解法②:

#include<iostream>  using namespace std;  int main()  {  int  i,j,k=0,count=0,count2=0,a[5][4],*p[5],avr=0,aver[5];char c[24]={"语文数学英语物理"};for(i=0;i<5;i++)p[i]=a[i];for(i=0;i<5;i++){k=0;cout<<"请输入 "<<i+1<<" 号同学的成绩!!\n";for(j=0;j<4;j++){cout<<"   "<<c[k]<<c[k+1]<<c[k+2]<<c[k+3]<<"成绩:";k+=4;cin>>*(p[i]+j);aver[i]+=*(p[i]+j);}avr+=*(p[i]+1);cout<<"---------------------------------------\n";}cout<<"第二门科目的平均成绩为: "<<avr/5<<" 分\n\n"<<">>>>>>>>>>>>>>>>>>>>"<<"有两门科目以上不及格的同学有: "<<"<<<<<<<<<<<<<<<<<<<<\n\n";/*-----------------我是分割线--------------------*/for(i=0;i<5;i++){k=0;for(j=0;j<4;j++){if(*(p[i]+j)<60)count++;}if(count>2){cout<<" 该同学为 "<<i+1<<" 号";for(j=0;j<4;j++){cout<<" "<<c[k]<<c[k+1]<<c[k+2]<<c[k+3]<<"成绩: "<<*(p[i]+j)<<" 分";k+=4;}cout<<"\n------------------------"<<"--------------------------"<<"--------------------------"<<'\n';}}/*-----------------我是分割线--------------------*/cout<<">>>>>>>>>>>>>>>>>"<<"90以上或者全部课程在85分以上的学生有"<<"<<<<<<<<<<<<<<<<<\n\n";for(i=0;i<5;i++){for(j=0;j<4;j++){if(*(p[i]+j)>85)count2++;}if(aver[i]/4>90 || count2==4)cout<<"  "<<i+1<<" 号同学  ";count2=0;}cout<<"\n";return 0;  }  







0 0
原创粉丝点击