大学c  习题答案c  第七单元_第1页
大学c  习题答案c  第七单元_第2页
大学c  习题答案c  第七单元_第3页
大学c  习题答案c  第七单元_第4页
大学c  习题答案c  第七单元_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1#include /sy0701.cppvoid main( ) int i,j,n,a3; / i: a2a1a0 三位数 for(i=100; i1000; i+) /对所有三位数循环for(n=i, j=0; j3; j+) /分解,这儿i不能改变aj=n%10; n/=10; for(n=0, j=0; j3; j+) /求三位数字平方和n+=aj*aj; if( (i/11=n) & (a0=a1 | a1=a2 | a0=a2) ) cout i n ; 2#include /sy0702.cppvoid main( ) char h16=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F;int c20,n,i;coutn;for(i=0; n; i+) /循环结束后,i 是数的位数ci=n%16; n/=16; / i位的数存放在 ci-1,c1,c0 中for(i-;i=0;i-) /注意输出顺序cout hci;cout endl;2-1#include /sy0702_1.cpp 用函数实现int DtoH(int n,int c)for(int i=0; n; i+) /循环结束后,i 是数的位数ci=n%16; n/=16; / i位的数存放在 ci-1,c1,c0 中return i-1; /多加了一次,所以要减1void main( ) char h16=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F;int c20,n,i;coutn;i=DtoH(n,c);for(;i=0;i-) cout hci;cout endl;3#include /sy0703.cppvoid input(int a, int n) /输入cout 请输入 n 个数:endl;for(int i=0; i ai;void sort(int a, int n) /用选择法排序,升序int i, j, t, k;for (i=0; in-1; i+) k=i; for (j=i+1; jn; j+)if(ajak) k=j; if(k!=i)t=ak;ak=ai; ai=t;void output( int a, int n ) /输出for(int i=0; in; i+)cout ai t;cout endl;void main( )int a50, n;cout n;input(a, n); sort(a, n); output(a, n);/*请输入数组元素个数:10请输入 10 个数:4534212345768987544 5 21 23 34 45 54 76 87 89*/4#include /sy0704.cpp 注意:要用实型数据处理void input(float a,int n)int i;cout请输入n个数:endl;for(i=0;iai;float aver(float a,int n)int i;float m=0;for(i=0;in;i+)m+=ai;m/=n;return m;float jfc(float a,int n)int i;float d=0,m;m=aver(a,n); for(i=0;in;i+)d+=(ai-m)*(ai-m);return d;void main()int n;float a100,d;coutn;input(a,n);d=jfc(a,n);cout均方差=dendl;/*请输入整数n的值:5请输入5个数:1.21.56.18.39.5均方差=58.528*/5#include int getbits(int n)int k=0;while(n!=0)k+;n/=10;return k;void split(int n,int a)int i=0;while (n!=0)ai+=n%10;n/=10;void sortd(int k,int a)int i,j,max,t;for(i=0;ik-1;i+)max=i;for(j=i+1;jk;j+)if(amaxaj) max=j;if(max!=i)t=ai; ai=amax; amax=t;void reverse(int k,int a)int i,t;for(i=0;ik/2;i+)t=ai; ai=ak-1-i; ak-1-i=t;int combine(int k,int a)int i,s=0;for(i=0;ik;i+)s=s*10+ai;return s;void main()int n,k,s1,s2,a4;cout请输入一个4位数或3位数n;k=getbits(n);dosplit(n,a);sortd(k,a);s1=combine(k,a);reverse(k,a);s2=combine(k,a);n=s1-s2;couts1 - s2 = nendl;while(n!=6174)&(n!=495);if (n=6174|n=495) coutOKn;/*请输入一个4位数或3位数32455432 - 2345 = 30878730 - 378 = 83528532 - 2358 = 6174OK*/*请输入一个4位数或3位数829982 - 289 = 693963 - 369 = 594954 - 459 = 495OK*/6-1#include int sum(int a 4)int i;int s=0;for(i=0; i4; i+)/一重循环s+=aii+ai3-i;return(s);void main( )int a44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;cout 对角线和= sum(a) endl;/*对角线和=68*/6-2#include int sum(int a 4)int i, j;int s=0;for(i=0; i4; i+)/二重循环for(j=0; j4; j+)if( i=j | i+j=3 ) s+=aij;return(s);void main( )int a44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;cout 对角线和= sum(a) endl;/*对角线和=68*/7#include /sy0707.cpp 矩阵转置#define N 4void main( )void rotate(int a N);int a N=1, 2, 3, 4,5, 6, 7, 8,9, 10, 11, 12,13, 14, 15, 16;int i, j;cout原始数组a:endl;for (i=0; iN; i+)for (j=0; jN; j+) coutaijt;coutn;rotate(a);cout转置过的数组 a:n;for (i=0; iN; i+)for(j=0; jN; j+) coutaijt;coutn;void rotate(int a N)int i,j,t;for (i=0; iN; i+)for (j=i+1; jN; j+) /注意j的初值不是0,对右上三角形内的元素循环t=aij;aij=aji;aji=t;/*原始数组a:1 2 3 45 6 7 89 10 11 1213 14 15 16转置过的数组 a:1 5 9 132 6 10 143 7 11 154 8 12 16*/8-1#include /sy0708.cpp 求学生成绩的平均分#define M 30#define N 2void main( )float courseMN=76,88,98,78,76,86,80,91,70,81, 76,98,88,77,90,91, 80,81,90,91,96,87,76,88,98,78,76,86,80,91,70,81, 76,98,88,77,80,81,90,91,96,87,76,88,98,78,76,86,80,91,70,81, 76,98,88,77,80,81,96,87 ; /给数组初初值,不须输入float course_averN=0,0, total_aver=0;int i, j;for(i=0; iM; i+)for(j=0; jN; j+)total_aver += courseij; course_averj += courseij; course_aver0/=M;course_aver1/=M;total_aver/=M*N;cout 全班两门课的总平均= total_aver endl;cout C+课程的平均分为 course_aver0 endl;cout 计算机应用基础课程的平均分为 course_aver1 endl;/* 全班两门课的总平均= 84.4 C+课程的平均分为 83 计算机应用基础课程的平均分为 85.8*/8-2#include /sy0708_1.cpp 求学生成绩的平均分 用函数处理#define M 30#define N 2float average(float courseN,float course_aver)int i, j;float total_aver=0;for(i=0; iM; i+)for(j=0; jN; j+)total_aver += courseij; course_averj += courseij; course_aver0/=M;course_aver1/=M;total_aver/=M*N;return total_aver;void main( )float courseMN=76,88,98,78,76,86,80,91,70,81, 76,98,88,77,90,91, 80,81,90,91,96,87,76,88,98,78,76,86,80,91,70,81, 76,98,88,77,80,81,90,91,96,87,76,88,98,78,76,86,80,91,70,81, 76,98,88,77,80,81,96,87 ; /给数组初初值,不须输入float course_averN=0,0, total_aver;total_aver=average(course,course_aver);cout 全班两门课的总平均= total_aver endl;cout C+课程的平均分为 course_aver0 endl;cout 计算机应用基础课程的平均分为 course_aver1 endl;/* 全班两门课的总平均= 84.4 C+课程的平均分为 83 计算机应用基础课程的平均分为 85.8*/9-1#include /此方法没有sy0709_1.cpp好#include void main( )char s200,s1200; int i=0, j=0;cout请输入一串字符:endl; cin.getline(s,200); /输入带空格的字符串 while(si!=0)if(si!= ) /将非空格复制到临时字符串s1中s1j+=si;i+; s1j=0; strcpy(s,s1); /再复制回去 coutsendl;/*请输入一串字符:asd fgh hg ddasdfghhgdd*/9-2#include void main( ) char s200; int i, j;cout请输入一串字符:endl; cin.getline(s, 200); /输入带空格的字符串for(i=j=0; si!=0; i+)if(si!= ) sj+=si; sj=0; coutsendl;9-3#include /用函数实现void delspace(char s)int i, j;for(i=j=0; si!=0; i+)if(si!= ) sj+=si; sj=0;void main( ) char s200; cout请输入一串字符:endl; cin.getline(s, 200); /输入带空格的字符串cout原始字符串为:sendl;delspace(s);cout删除空格后的字符串为:sendl;10-1#include #include void main( )char s200,t; int i,len;cout请输入一串字符:endl; cin.getline(s,200); cout原始字符串为: sendl;len=strlen(s);for(i=0;ilen/2;i+)t=si;si=slen-1-i;slen-1-i=t;cout逆转过的字符串为: sendl; /*请输入一串字符:aBcd fg原始字符串为: aBcd fg逆转过的字符串为: gf dcBa*/10-2#include /用函数实现#include void inverse(char s)int len;char t;len=strlen(s);for(int i=0;ilen/2;i+)t=si;si=slen-1-i;slen-1-i=t;void main( )char s200; cout请输入一串字符:endl; cin.getline(s,200); cout原始字符串为: sendl;inverse(s);cout逆转过的字符串为: sendl; /*请输入一串字符:aBcd fg原始字符串为: aBcd fg逆转过的字符串为: gf dcBa*/11#include /sy0711.cpp 实现字符串拷贝功能void my_strcpy(char s1,char s2)int i=0,j=0;while(s1j+=s2i+);void main( )char s1200,s2200; cout请输入一个字符串:endl; cin.getline(s2,200); my_strcpy(s1, s2); cout字符串s1为: s1endl; /*请输入一个字符串:aaa bbb vvv字符串s1为: aaa bbb vvv*/12#include /sy0712.cpp 实现字符串拼接功能void my_strcat(char s1,char s2)int i=0,j=0;while(s1j+);j-; /注意多加了一个1while(s2i) s1j+=s2i+;s1j=0;void main( )char s1200,s2200; cout请输入字符串1:endl; cin.getline(s1,200); cout请输入字符串2:endl; cin.getline(s2,200);my_strcat(s1, s2); cout拼接后的字符串s1为: s1endl; /*请输入字符串1:aaa请输入字符串2:bbb拼接后的字符串s1为: aaabbb*/13#include /li0713.cpp#define N 200void prime(int a)for(int i=1; iN-1;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论