第六周作业

来源:互联网 发布:ac68u对访客网络限速 编辑:程序博客网 时间:2024/06/08 02:46

  实验作业

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

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

3. 编程定义一个4X5矩阵和5X3矩阵,并计算它们的积。

4.编程输出1到n的平方的自然数构成的“魔方阵”,魔方阵是指它每一行和每一列及对角线之和均相等的方阵。

5.积累调试程序经验,收集错误信息原因(每个同学收集3-5条错误信息原因,并输入电脑形成文字)。

Part 1课本例题

#include <iostream>using namespace std;int main(){ int a[10]; int i; for(i=0;i<10;i++)             //给所有的数组元素赋初值  a[i]=i*2+2; for(i=0;i<10;i++)             //输出所有的数组元素,每行显示5个数组元素 {  cout<<a[i]<<'\t';  if((i+1)%5==0)   cout<<endl; } return 0;
#include<iostream>using namespace std;int main(){ int a[10]; int i=0; while(i<10) {  a[i]=i*2+2;  cout<<a[i]<<'\t';  if((i+1)%5==0)   cout<<endl;  i++;   } return 0;}

#include<iostream>using namespace std;int main(){ int a[10]; int i=0;do{  a[i]=i*2+2;  cout<<a[i]<<'\t';  if((i+1)%5==0)   cout<<endl;  i++;}  while(i<10);    return 0;}

#include<iostream>using namespace std;int main(){ int i,math[40],n; float aver =0.0 ;                 //平均分  int unpassedcount=0;           //不及格学生人数  int highscorecount=0;          //90分以上学生人数  cout<<"请输入学生人数: ";  cin>>n;  cout<<"请输入成绩: ";  for(i=0;i<n;i++)  {   cin>>math[i];   aver +=math[i];  }  aver/=n;  for(i=0;i<n;i++)  {   if(math[i]<60)    unpassedcount++;   if(math[i]>=90)      highscorecount++;  }  cout<<"平均分为:"<<aver<<endl;  cout<<"90分以上的人数为:"<<highscorecount<<endl;  cout<<"不及格的人数为:"<<unpassedcount<<endl;  return 0;}  

#include<iostream>using namespace std;int main(){ int i=0,math[40],n; float aver =0.0 ;                 //平均分  int unpassedcount=0;           //不及格学生人数  int highscorecount=0;          //90分以上学生人数  cout<<"请输入学生人数: ";  cin>>n;  cout<<"请输入成绩: ";    while(i<n)  {   cin>>math[i];      aver +=math[i];   i++;  }  aver/=n;    i=0;  do  {   if(math[i]<60)    unpassedcount++;   if(math[i]>=90)      highscorecount++;   i++;  }  while(i<n);  cout<<"平均分为:"<<aver<<endl;  cout<<"90分以上的人数为:"<<highscorecount<<endl;  cout<<"不及格的人数为:"<<unpassedcount<<endl;  return 0;}

#include<iostream>#include<iomanip>using namespace std;int main(){int a[10],i,big;cout<<"please input 10 number:\n";for(i=0;i<10;i++)cin>>a[i];cout<<"the numbers are:";for(i=0;i<10;i++)cout<<setw(4)<<a[i];cout<<endl;big = a[0];for(i=1;i<10;i++)if(a[i]>big)big = a[i];cout<<"the big number is :"<<big<<endl;return 0;}

#include<iostream>#include<iomanip>using namespace std;int main(){int a[10];int i,j,t;cout<<"please input 10 numbers:\n";for(i=0;i<10;i++)cin>>a[i];cout<<"the numbers are :";for(i=0;i<10;i++)cout<<setw(4)<<a[i];cout<<endl;for(i=0;i<9;i++)for(j=0;j<9-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}cout<<"the sortednumbers are:";for(i=0;i<10;i++)cout<<setw(4)<<a[i];             //输出数组元素cout<<endl;return 0;}

#include<iostream>#include<iomanip>using namespace std;int main(){int i;int f[40] = {1,1};for(i=2;i<40;i++)f[i] = f[i-2] + f[i-1];                 //将前40个数存入数组for(i=0;i<40;i++){if(i%4==0)cout<<endl;cout<<setw(12)<<f[i];}cout<<endl;return 0;}

#include<iostream>#include<iomanip>using namespace std;int main(){int i;int j;int a[5][5];for(i=0;i<5;i++){for(j=0;j<5;j++){if(i%2==0)a[i][j]=i*5+j+1;elsea[i][4-j]=i*5+j+1;}}for(i=0;i<5;i++){for(j=0;j<5;j++)cout<<setw(4)<<a[i][j];cout<<endl;}return 0;}

#include<iostream>#include<iomanip>using namespace std;int main(){int i;int j;int a[5][5];for(i=0;i<5;i++){for(j=0;j<5;j++){if(i%2==0)a[i][j]=i*5+j+1;elsea[i][4-j]=i*5+j+1;           cout<<setw(4)<<a[i][j];    }           cout<<endl;}return 0;}


老师,上题程序这样改写,为什么输出这么奇怪的,是哪里出问题吗?望是、老师解答下,谢谢啦。

#include<iostream>#include<iomanip>using namespace std;int main(){int i;int j;int a[5][5];for(i=0;i<5;i++)for(j=0;j<5;j++)if(i%2==0)a[i][j]=i*5+j+1;elsea[i][4-j]=i*5+j+1;for(i=0;i<5;i++)                     //输出个元素的值{for(j=0;j<5;j++)                //内层for循环用于输出一行元素的值                   cout<<setw(4)<<a[i][j];cout<<endl;                     //换行输出下一行 }return 0;}
#include<iostream>using namespace std;int main(){char str[10];cout<<"Please input strings:";cin.get(str,10);                          //默认结束符为enter键cout<<"The string is:";cout<<str<<endl;return 0;}


#include<iostream>#include<cstring>using namespace std;int main(){char str[100];cout<<"请输入一个字符串:";cin.get(str,100);cout<<"字符串"<<str<<"的反向字符串为:";for(int i=strlen(str)-1;i>=0;i--)                //strlen为求字符串长度函数 cout<<str[i];cout<<endl;return 0;}


#include<iostream>using namespace std;int main(){char s[] = "This is C programming test.";int i=0,pLen=0,maxLen=0,pSeat=0;while(s[i]!='\0'){while(s[i]!= ' '&& s[i]!='\0'){pLen++;i++;}if(pLen>maxLen){pSeat = i-pLen;maxLen = pLen;}while(s[i] == ' ')i++;pLen =0;}cout<<"最长的单词为: ";for(i=0;i<maxLen;i++)cout<<s[pSeat+i];cout<<endl;return 0;}

#include<iostream>#include<cstring>using namespace std;int main(){char str[50];cout<<"Please input a string:";cin.get(str,50);cout<<"The length of string "<<str<<" is "<<strlen(str)<<endl;return 0;}

#include<iostream>#include<cstring>using namespace std;int main(){char str[10];cout<<"请输入字符串,直到输入hello后程序结束: "<<endl;do{cin>>str;}while(strcmp(str,"hello")!=0);return 0;}

#include<iostream>using namespace std;int main(){char str[50];int len =0;cout<<"请输入一个字符串: ";cin.get(str,50);while(str[len]!='\0')len++;cout<<"字符串"<<str<<"的长度为: "<<len<<endl;return 0;}

Part 2课后习题

#include<iostream>#include<iomanip>using namespace std;int main(){int i,j,t;int a[5];cout<<"请输入五个数:";for(i=0;i<5;i++)cin>>a[i];cout<<"the numbers are :";for(i=0;i<5;i++)cout<<setw(4)<<a[i];cout<<endl;for(i=0;i<4;i++)                          for(j=0;j<4-i;j++)                      //利用冒泡法排序if(a[j]<a[j+1]){t=a[j];a[j]=a[j+1];                   //使数据从大到小排序a[j+1]=t;}cout<<"这五个数按从大到小顺序排列为:";for(i=0;i<5;i++)cout<<setw(4)<<a[i];       cout<<endl;return 0;}


#include<iostream>#include<iomanip>using namespace std;int main(){int i,j,heng=0,shu=0;                    //heng表示最大数组的下标i,shu表示jint max;int a[2][3];cout<<"为数组a[2][3]输入任意整数值:";for(i=0;i<2;i++)for(j=0;j<3;j++){cin>>a[i][j];if(i%2==0)cout<<endl;}max=a[0][0];for(i=0;i<2;i++)for(j=0;j<3;j++)if(max<a[i][j]){max=a[i][j];heng=i;shu=j;}cout<<"该数组的最大元素:"<<max<<endl;cout<<"该数组最大元素的坐标:"<<heng<<setw(4)<<shu<<endl;return 0;}


#include<iostream>using namespace std;int main(){int i,j=0,f[20]={1,1};for(i=2;i<20;i++){f[i]=f[i-2]+f[i-1];                          //将f中前20个数存入数组f中if(f[i]>=100 && f[i]<=999)                        //满足3位数字的条件j++;}cout<<"该数列前20个数中三位数的有:"<<j<<"个"<<endl;cout<<"该数列的第16项为:"<<f[15]<<endl;                  //数列的第16项数据的下标是15return 0;}


#include<iostream>using namespace std;int main(){char str[50];int upper=0,lower=0,space=0,digit=0,other=0;cout<<"请输入一个字符串:";cin.get(str,50);for(int i=0;str[i]!='\0';i++)                  //等价于for(int i=0;str[i];i++)if(str[i]>='a'&&str[i]<='z')lower++;else if(str[i]>='A'&&str[i]<='Z')upper++;else if(str[i]==' ')space++;else if(str[i]>='0' && str[i]<='9')digit++;else other++; cout<<"大写字符有:"<<upper<<"个"<<endl;        cout<<"小写字符有:"<<lower<<"个"<<endl;        cout<<"空格字符有:"<<space<<"个"<<endl;        cout<<"数字字符有:"<<digit<<"个"<<endl;        cout<<"其它字符有:"<<other<<"个"<<endl;return 0;}


#include<iostream>#include<cstring>using namespace std;int main(){int t=0;char str[50];cout<<"请输入一个字符串:";cin.get(str,50);t=strlen(str);cout<<"The length of string "<<str<<" is "<<t<<endl;cout<<"该字符串的反向字符为:";for(t-1;t>=0;t--)                                     //利用for语句从最后一位输出字符cout<<str[t];cout<<endl;return 0;


#include<iostream>#include<cstring>using namespace std;int main(){int  count=0,i,len=0;char str[100];cout<<"请输入一个字符串:";cin.get(str,100);len=strlen(str);cout<<"原字符串的长度为:"<<len<<endl;cout<<"变化后字符为:";for(i=0;i<len;i++){if(str[i]>='0' && str[i]<='9')continue;                         //当字符为数字时跳出语句cout<<str[i]和语句count++cout<<str[i];count++;}cout<<endl;cout<<"变化后字符串的长度为:"<<count<<endl;return 0;}



Part 3

#include<iostream>#include<iomanip>using namespace std;int main(){int i,j,k=0;int a[4][5],b[5][3];for(i=0;i<4;i++)for(j=0;j<5;j++)if(i==j)a[i][j]=i+1;                               //把a[i][j]设计成一个最简型矩阵elsea[i][j]=0;cout<<"a[i][j]的方阵为:"<<endl;for(i=0;i<4;i++)for(j=0;j<5;j++){cout<<setw(4)<<a[i][j]<<setw(4);if(j==4)cout<<endl;}cout<<"b[i][j]的矩阵为:"<<endl;     for(i=0;i<5;i++) for(j=0;j<3;j++)           if(i==j)b[i][j]=i+1;                                    //同理把b[i][j]设计成一个最简型矩阵elseb[i][j]=0;         for(i=0;i<5;i++) for(j=0;j<3;j++) {cout<<setw(4)<<b[i][j]<<setw(4);if(j==2)cout<<endl; }for(i=0;i<4;i++)for(j=0;j<3;j++)k+=a[i][j]*b[i][j];                                //利用求矩阵的乘法公式以及结合二维数组的元素分配规律cout<<"两矩阵相乘得:"<<k<<endl;return 0;}


0 0
原创粉丝点击