第六周c++作业
2014-04-12 18:09
281 查看
实验作业
1.调试分析课本每一个例题,有可能的话更改成2-3个方法的新程序;
基本上,每个例题都有小改动。
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
1.12
1.13
2.编程实现课本每一个编程习题。
2.1
2.2
2.3
2.4
2.5
2.6
2.7
3. 编程定义一个4X5矩阵和5X3矩阵,并计算它们的积。
4.编程输出1到n的平方的自然数构成的“魔方阵”,魔方阵是指它每一行和每一列及对角线之和均相等的方阵。
这个有点难度。。。。。
1.调试分析课本每一个例题,有可能的话更改成2-3个方法的新程序;
基本上,每个例题都有小改动。
1.1
#include <iostream> using namespace std; int main() { int a[10],b[10]; int i,j; for(i=0;i<10;i++) a[i]=i*2+2; for(j=0;j<10;j++) b[j]=j+1; for(i=0;i<10;i++) { cout<<a[i]<<'\t'; if((i+1)%5==0) cout<<endl; } cout<<endl; for(j=0;j<10;j++) { cout<<b[j]<<'\t'; if((j+1)%5==0) cout<<endl; } return 0; }程序运行结果
1.2
#include <iostream> using namespace std; int main() { int i,math[40],n; float aver=0.0; int unpassedcount=0; int passedcount=0; int highscorecount=0; cout<<"请输入学生人数:"; cin>>n; cout<<"请输入成绩:"<<endl; 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++; else passedcount++; if(math[i]>=90) highscorecount++; } cout<<"平均分为:"<<aver<<endl; cout<<"90分以上的人数为:"<<highscorecount<<endl; cout<<"及格人数为:"<<passedcount<<endl; cout<<"不及格人数为:"<<unpassedcount<<endl; return 0; }程序运行结果
1.3
#include <iostream> #include <iomanip> using namespace std; int main() { int a[10],i,big,small; cout<<"请输入10个数:\n"; for(i=0;i<10;i++) cin>>a[i]; cout<<"这些数是:"; 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; small=a[0]; for(i=1;i<10;i++) if(a[i]<small) small=a[i]; cout<<"最小的数为:"<<small<<endl; return 0; }程序运行结果
1.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<<"这些数字为:"; 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+1]>a[j]) { t=a[j+1]; a[j+1]=a[j]; a[j]=t; } cout<<"从大到小为:"; for(i=0;i<10;i++) cout<<setw(4)<<a[i]; cout<<endl; return 0; }程序运行结果
1.5
#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]; for(i=0;i<40;i++) { if(i%4==0) cout<<endl; cout<<setw(12)<<f[i]; } cout<<endl; return 0; }程序运行结果
1.6
#include <iostream> #include <iomanip> using namespace std; int main() { int i,j; int a[20][5]; for(i=0;i<20;i++) for(j=0;j<5;j++) if(i%2==0) a[i][j]=i*5+j+1; else a[i][4-j]=i*5+j+1; for(i=0;i<20;i++) { for(j=0;j<5;j++) cout<<setw(4)<<a[i][j]; cout<<endl; } return 0; }程序运行结果
1.7
#include <iostream> #include <iomanip> using namespace std; int main() { int a[4][4],i,j; cout<<"请输入2行3列二维数组的元素值:"<<endl; for(i=0;i<4;i++) for(j=0;j<4;j++) { cout<<"a["<<i<<"]["<<j<<"]="; cin>>a[i][j]; } cout<<"\n该二维数组为:"<<endl; for(i=0;i<4;i++) { for(j=0;j<4;j++) cout<<setw(6)<<a[i][j]; cout<<endl; } int row=0,column=0,max=a[0][0]; for(i=0;i<4;i++) for(j=0;j<4;j++) if(max<a[i][j]) { max=a[i][j]; row=i; column=j; } cout<<"\n该数组中最大的元素值为:"<<"a["<<row<<"]["<<column<<"]="<<a[row][column]<<endl; int row1=0,column1=0,min=a[0][0]; for(i=0;i<4;i++) for(j=0;j<4;j++) if(min>a[i][j]) { min=a[i][j]; row1=i; column1=j; } cout<<"\n该数组中最小的元素值为:"<<"a["<<row1<<"]["<<column1<<"]="<<a[row1][column1]<<endl; return 0; }程序运行结果
1.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; }程序运行结果
1.9
#include <iostream> #include <cstring> using namespace std; int main() { char str[100]; cout<<"请输入一个字符串:"; cin.get(str,100); for(int j=0;j<100;j++) if(str[j]==0) cout<<"一共有"<<j<<"个字符!"<<endl; cout<<"字符串"<<str<<"的反向字符串为:"; for(int i=strlen(str)-1;i>=0;i--) cout<<str[i]; cout<<endl; return 0; }程序运行结果
1.10
#include <iostream> using namespace std; int main() { char s[]="This is Cprogramming 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; }1.11
#include <iostream> #include <cstring> using namespace std; int main() { char str[50]; cout<<"请输入一组字符串"; cin.get(str,50); cout<<"该字符串"<<str<<"的长度为:"<<strlen(str)<<endl; return 0; }程序运行结果
1.12
#include <iostream> #include <cstring> using namespace std; int main() { char str[10]; cout<<"请输入字符串,直到输入hellow后程序结束"; do { cin>>str; }while(strcmp(str,"hellow")!=0); return 0; }程序运行结果
1.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.编程实现课本每一个编程习题。
2.1
#include <iostream> #include <iomanip> using namespace std; int main() { int number[5],i,j,S; cout<<"请输入5个数"<<endl; for(i=0;i<5;i++) cin>>number[i]; for(i=0;i<4;i++) for(j=0;j<4-i;j++) if(number[j]<number[j+1]) { S=number[j]; number[j]=number[j+1]; number[j+1]=S; } cout<<"从大到小的排列为:"; for(i=0;i<5;i++) cout<<setw(4)<<number[i]; cout<<endl; return 0; }程序运行结果
2.2
#include <iostream> #include <iomanip> using namespace std; int main() { int number[2][3],i,j; cout<<"请输入6个数组元素:"<<endl; for(i=0;i<2;i++) for(j=0;j<3;j++) cin>>number[i][j]; int a=0,b=0,max=number[0][0]; for(i=0;i<2;i++) for(j=0;j<3;j++) if(max<number[i][j]) { max=number[i][j]; a=i; b=j; } cout<<"最大的数组元素为:" <<"number["<<a<<"]["<<b<<"]=" <<number[a][b]<<endl; return 0; }程序运行结果
2.3
#include <iostream> #include <iomanip> using namespace std; int main() { int i,sixteenth,count=0,fib[20]={1,1}; for(i=2;i<20;i++) { fib[i]=fib[i-2]+fib[i-1]; if(fib[i]>=100&&fib[i]<=999) count++; } sixteenth=fib[15]; for(i=0;i<20;i++) { if(i>0&&i%4==0) cout<<endl; cout<<setw(8)<<fib[i]; } cout<<endl<<endl <<"数列前20个数中3位数的个数为:"<<count<<endl <<"数列中第16项数据为:"<<sixteenth<<endl; return 0; }程序运行结果
2.4
#include <iostream> #include <iomanip> using namespace std; int main() { char string[50]; cout<<"请输入一个字符串:"; cin.getline(string,50); 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; }程序运行结果
2.5
#include <iostream> using namespace std; int main() { char a[100]; int j=0; cout<<"请输入一个字符串:"<<endl; cin.getline(a,100); while(a[j]) j++; cout<<"这个字符串的长度为:"<<j<<endl; cout<<"这个字符串反向输出为:"; for(int i=j-1;i>=0;i--) cout<<a[i]; cout<<endl; return 0; }程序运行结果
2.6
#include <iostream> #include <iomanip> using namespace std; int main() { char a[30]; cout<<"请输入一个字符串:"<<endl; cin.getline(a,30); int j=0; for(int i=0;a[i]!='\0';i++) if(a[i]>='0'&&a[i]<='9') j++; cout<<"该字符串中所有十进制数字字符的个数有"<<j<<"个"<<endl; return 0; }程序运行结果
2.7
#include <iostream> #include <iomanip> using namespace std; int main() { char a[50],b[50]; int i,j=0; cout<<"请输入一个字符串:"<<endl; cin.getline(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. 编程定义一个4X5矩阵和5X3矩阵,并计算它们的积。
#include<iostream> using namespace std; int main() { int a[4][5],b[5][3],c[4][3]={0},i,j,k,l; cout<<"计算矩阵a[4][5]与矩阵b[5][3]的积"<<endl; cout<<"请输入矩阵a[4][5]的元素"<<endl; for(i=0;i<4;i++) for(j=0;j<5;j++) cin>>a[i][j]; cout<<"请输入矩阵b[5][3]的元素"<<endl; for(i=0;i<5;i++) for(j=0;j<3;j++) cin>>b[i][j]; for(i=0;i<4;i++) for(j=0;j<3;j++) { for(k=0;k<5;k++) { l=a[i][k]*b[k][j]; c[i][j]=c[i][j]+l; } } cout<<"由c[4][3]=a[4][5]*b[5][3]"<<endl; cout<<"矩阵c[4][3]为:"<<endl; for(i=0;i<4;i++) { for(j=0;j<3;j++) cout<<c[i][j]<<'\t'; cout<<endl; } return 0; }程序运行结果
4.编程输出1到n的平方的自然数构成的“魔方阵”,魔方阵是指它每一行和每一列及对角线之和均相等的方阵。
这个有点难度。。。。。