1、西安交大C+随堂练习2西安交通大学实验报告一. 实验目的(1)回顾复习前面学到的C+知识;(2)发掘自我学习中的漏洞,不断完善自己的C+知识;(3)尽快补上原来落下的知识。二、实验内容()实验题目一: 编写函数求反正切三角函数值,函数原型:double my_arctg(double x);反正切三角函数公式如下:n=0,1,2,.,要求结果值精确到107,并编写主函数测试。#include#includeusing namespace std;double my_arctg(double x) double i=1,y=0; while(fabs(y-atan(x)=1.0E-7) y=y+
2、(pow(-1,i-1)*pow(x,2*i-1)/(2*i-1); i+; return y;int main() double s; couts; double t=my_arctg(s); cout我的arctg(s)=tendl; cout系统的actg(s)=atan(s)endl; cout(fabs(t-atan(s)=1.0E-7?计算正确:计算错误)endl; return 0; (二)实验题目二:编写程序,用一维数组存储 NN 整数矩阵,判断矩阵是否为对称矩阵(沿主对角线对称,N 大于3)?先输出该矩阵,然后输出判断结果。再将次对角线上的N个元素加到主对角线上N个元素,保持
3、矩阵的对称性,并再输出该矩阵。(可以不用函数方法) #include#includeusing namespace std;int main() int i,j; int a44=1,2,3,4,2,5,6,7,3,6,8,9,4,7,9,0; cout定义的矩阵为:endl; for(i=0;i4;i+) for(j=0;j4;j+) if(aij=aji) for(i=0;i4;i+) for(j=0;j4;j+) coutaij ; coutendl; cout该矩阵是对角矩阵endl; cout次对角线元素加到主对角线元素上后得到的对角矩阵为:endl; for(i=0;i4;i+)
4、aii=aii+ai3-i; for(i=0;i4;i+) for(j=0;j4;j+) coutaijt; coutendl; return 0; (三)实验题目三:编写函数,判断任意一个字符串是否为对称字符串,例如:对称字符串为 “I a I” 、 “POP” 、 “21+12” 。要求编写主函数加以测试。判断函数原型如下: int panduan(char ccc); #include#includeusing namespace std;int panduan(char string) int i; for(i=0;istrlen(string);i+) return (stringi
5、=stringstrlen(string)-1-i); return 0;int main() char str100; coutstr; if(panduan(str)=1) cout该字符串是对称字符串; else cout该字符串不是对称字符串; coutendl; return 0; (四)实验题目四:编写函数: int count(int m); 该函数完成如下功能: 输入一个整数 m ,统计并返回 m 左端连续相同数字的个数。如: 2220511 左端连续相同数字 2 的个数是 3 ; -923000 左端连续相同数字 9 的个数是 1 。 编写主程序,测试该函数。 #includ
6、e#include#include#includeusing namespace std;int count(int m) vector num; int cut=1,temp; if(m0) temp=m%10; m=m/10; num.push_back(temp); for(int i=num.size()-2;i=0;i-) if(numi=numi+1) cut+; else break; return cut;int main() long m; coutm; coutm左端连续相同数字的个数为:count(m)endl; return 0;(五)实验题目五:编写程序:求1-999
7、9之内所有递减数的平均数,所谓递减数指该数各位数字从左至右递减排列,例如:4332211、654321、9955、22222222等都是递减数。例如:32768、43987、123498都不是递减数。假设求出递减数是4个,分别是A、B、C、D,则按下面格式输出结果:(A+B+C+D)/4=结果值#includeusing namespace std;int k(int n) int a,b,c,d; a=n/1000; b=(n/100)%10; c=(n/10)%10; d=n%10; return (a=b&b=c&c=d);int main() int m=0,sum=0; cout(; for(int n=1;n10000;n+) if(k(n) m+; coutn+; sum=sum+n; coutb)/m=sum/m; return 0;三、个人小结本次程序设计主要是对前面的知识进行梳理和巩固,发现和弥补前面的漏洞。题目综合度较大,颇有点难度!经过仔细分析和学习回顾,问题大多得到了解决!具体到第四题,由于对数位确定不了,无法进行数位分离,觉得无从下手。所以XX了一个程序代码,运行正确,只是看的一知半解,接下来还要请教老师!第五题输出困难,要不断调试来使输出结果适应!恩,再接再厉!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1