第六周作业

来源:互联网 发布:装修软件定哪种好 编辑:程序博客网 时间:2024/06/06 09:36

第四章 数组学习要求和实验

      学习要求

理解数组的基本概念,了解数组存储方法。

掌握一维和二维数组定义格式和数组元素使用。了解多维数组的定义和引用形式。

掌握字答数组的定义、字符数组与字符串的关系。

掌握常用字符串处理函数的使用。

进一步掌握循环程序设计技巧和方法。

进一步积累程序调试经验。

      实验作业

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

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

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

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

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

      作业要求

网上提交各个程序和相关要求的文字。

可以分两个博客文章来交。前2个题和后3个题各放到一个博客文章中提交。



作业1.

例4.1

/*********************************       例题4.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++){cout<<a[i]<<'\t';if((i+1)%5==0)cout<<endl;}return 0;}

例4.2

/*****************************       例题4.2          *****************************/#include<iostream>using namespace std;int main(){int i,math[40],n;float aver = 0.0;int no =0;int yes =0;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) no++;if(math[i]>=90) yes++;}cout<<"平均分为:"<<aver<<endl;cout<<"90分以上人数为:"<<yes<<endl;cout<<"不及格人数为:"<<no<<endl;return 0;}

例4.3

/*******************************        例题4.3        *******************************/#include<iostream>#include<iomanip>using namespace std;int main(){int a[10],i,big;cout<<"请输入10个整数:\n";for(i=0;i<10;i++)cin>>a[i];cout<<"输入的整数分别为:\n";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<<"最大的整数为:"<<big<<endl;return 0;}

例4.4

/*****************************      例题4.4        *****************************/#include<iostream>#include<iomanip>using namespace std;int main(){int a[10];int i,j,t;cout<<"请输入10个整数:\n";for(i=0;i<10;i++)cin>>a[i];cout<<"输入的整数分别为:\n";for(i=0;i<10;i++)cout<<setw(5)<<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<<"所输入的数从小到大排列依次是:\n";for(i=0;i<10;i++)cout<<setw(5)<<a[i];cout<<endl;return 0;}

例4.5

/****************************        例题4.5        ****************************/#include<iostream>#include<iomanip>using namespace std;int main(){int i;int f[40]={2,2};for(i=2;i<40;i++)f[i]=f[i-2]+f[i-1];for(i=0;i<40;i++){if(i%4 ==0)cout<<endl;cout<<setw(12)<<f[i];}cout<<endl;return 0;}

例4.6

/******************************        例题4.6          ******************************/#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;}

例4.7

书上好像印刷错误.书上例题4.7与4.6 几乎完全一样.所以不输入了.


例4.8

/******************************        例题4.8          ******************************/#include<iostream>using namespace std;int main(){char str[50];cout<<"Please input strings:";cin.get(str,50);cout<<"The string is :";cout<<str<<endl;return 0;}

例4.9

/******************************        例题4.9       ******************************/#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--)cout<<str[i];cout<<endl;return 0;}

例4.10

/************************      例题1.10     ************************/#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;}

例4.11

/********************************         例题4.11       ********************************/#include<iostream>#include<cstring>using namespace std;int main(){char str[50];cout<<"请输入一个字符串:";cin.get(str,50);cout<<"改字符串的长度是:"<<strlen(str)<<endl;return 0;}

例4.12

/******************************        例题4.12         ******************************/#include<iostream>#include<cstring>using namespace std;int main(){char str[100];cout<<"请输入您的银行卡号及密码,按#号结束:"<<endl;do{cin>>str;}while(strcmp(str,"#")!=0);return 0;}

例4.13

/***************************      例题4.13     ***************************/#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;}

作业2.

习题1.

/*******************************         习题1         *******************************/#include<iostream>#include<iomanip>using namespace std;int main(){int a[5];int i,j,t;cout<<"请输入5个整数:\n";for(i=0;i<5;i++)cin>>a[i];cout<<"输入的整数分别为:\n";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<<"所输入的数从大到小排列依次是:\n";for(i=4;i>=0;i--)cout<<setw(5)<<a[i];cout<<endl;return 0;}

习题1 相当于对例题4.4的进一步运用 只是将最后的一个循环语句改改的OK了.本来都不想写了..


习题2.

/******************************         习题2        ******************************/#include<iostream>#include<iomanip>using namespace std;int main(){int a[2][3],i,j;cout<<"请输入一个2行3列的数组:"<<endl;for(i=0;i<2;i++){for(j=0;j<3;j++)cin>>a[i][j];}cout<<"所输入的数组为:"<<endl;for(i=0;i<2;i++){for(j=0;j<3;j++)cout<<setw(6)<<a[i][j];}int x=0,y=0,max=a[0][0];for(i=0;i<2;i++){for(j=0;j<3;j++){if(max<a[i][j]){x=i;y=j;max=a[i][j];}}}cout<<"该数组中最大元素为:"<<endl;cout<<max<<endl;cout<<"其下标为:"<<x<<y<<endl;return 0;}

习题3.

/*****************************        习题3        *****************************/#include<iostream>#include<iomanip>using namespace std;int main(){int i,num=0;int f[20]={1,1};for(i=2;i<20;i++){f[i]=f[i-2]+f[i-1];if(f[i]>=100&&f[i]<1000)num++;}for(i=0;i<20;i++){if(i%4==0)cout<<endl;cout<<setw(10)<<f[i];}cout<<endl;cout<<"该数组中前20个数中有"<<num<<"个三位数"<<endl;cout<<"该数组中的第16项为:"<<f[15]<<endl;return 0;}

习题4.

/*******************************        习题4          *******************************/#include <iostream>  #include <iomanip>  using namespace std;    int main()  {      char string[100];      cout<<"请输入一个字符串:";      cin.get(string,100);      int A=0,a=0,b=0,c=0,d=0;      for(int i=0;string[i]!='\0';i++)          if(string[i]>='A'&&string[i]<='Z') A++;          else if(string[i]>='a'&&string[i]<='z') a++;          else if(string[i]==' ') b++;          else if(string[i]>='0'&&string[i]<='9') c++;          else d++;      cout<<"大写字母有:"<<A<<"个"<<endl;      cout<<"小写字母有:"<<a<<"个"<<endl;      cout<<"空格有:"<<b<<"个"<<endl;      cout<<"数字有:"<<c<<"个"<<endl;      cout<<"其他字符有:"<<d<<"个"<<endl;          return 0;    }  

习题5.

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

习题6.

/****************************        习题6          ****************************/#include <iostream>  #include <iomanip>  using namespace std;    int main()  {      char a[50],b[50];      int i,j=0;      cout<<"请输入一个字符串:"<<endl;      cin.get(a,50);      for(i=0;a[i];i++)      {          if(a[i]>='0'&&a[i]<='9')              continue;          b[j]=a[i];          j++;      }      b[j]='\0';      cout<<"删除数字后的字符串为:"<<b<<endl;      cout<<"字符串的长度为:"<<j<<endl;        return 0;    }  

删除数字这个不会 在这一个地方借鉴了一下光荣榜的同学..还是有些不理解.希望老师上课能讲一下..


作业3.

/********************************          矩阵的积         ********************************/#include<iostream>#include<iomanip>using namespace std;int main(){int a[4][5],b[5][3],c[4][3]={0},d,e,f,g;cout<<"请输入一个4行5列数组"<<endl;for(d=0;d<4;d++){for(e=0;e<5;e++){cin>>a[d][e];}}cout<<"请输入一个5行3列数组"<<endl;for(d=0;d<5;d++){for(e=0;e<3;e++){cin>>b[d][e];}}for(d=0;d<4;d++)            for(e=0;e<3;e++)            {                for(f=0;f<5;f++)                {                    g=a[d][e]*b[d][e];                    c[d][e]=c[d][e]+g;                }                            }        cout<<"由c[4][3]=a[4][5]*b[5][3]"<<endl;      cout<<"矩阵c[4][3]为:"<<endl;       for(d=0;d<4;d++)        {            for(e=0;e<3;e++)               cout<<c[d][e]<<'\t';              cout<<endl;      }             return 0;    }  

当输入矩阵元素的时候 不使用回车键的情况下,即使超出了矩阵的容量,依旧可以输入,直到用户按了回车键才会弹到下一行程序..这个不知道应该怎样做才能避免这种情况..希望老师上课得时候讲解一下.如何在输入了足够的元素之后强制运行下一行的程序 而不是等到用户自己去数 是否已经输入了20个 或者是无意间按了回车才继续运行..


作业4.

好难!!!

百度一下之后 发现不是自己能力范围的..看了好几遍看不懂..估计是做不出来的了..


0 0
原创粉丝点击