西安交大C++程序的设计课外测验作业Word文档格式.docx

上传人:b****2 文档编号:3109128 上传时间:2023-05-01 格式:DOCX 页数:21 大小:268.39KB
下载 相关 举报
西安交大C++程序的设计课外测验作业Word文档格式.docx_第1页
第1页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第2页
第2页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第3页
第3页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第4页
第4页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第5页
第5页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第6页
第6页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第7页
第7页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第8页
第8页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第9页
第9页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第10页
第10页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第11页
第11页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第12页
第12页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第13页
第13页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第14页
第14页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第15页
第15页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第16页
第16页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第17页
第17页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第18页
第18页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第19页
第19页 / 共21页
西安交大C++程序的设计课外测验作业Word文档格式.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

西安交大C++程序的设计课外测验作业Word文档格式.docx

《西安交大C++程序的设计课外测验作业Word文档格式.docx》由会员分享,可在线阅读,更多相关《西安交大C++程序的设计课外测验作业Word文档格式.docx(21页珍藏版)》请在冰点文库上搜索。

西安交大C++程序的设计课外测验作业Word文档格式.docx

{

intm,n;

cout<

<

"

请输入正整数m和n(m<

=n):

;

cin>

>

m>

n;

while(m>

n)

{

cout<

您输入有误,m应该小于等于n,请重新输入:

cin>

}

for(intj=m;

j<

=n;

j++)//对于围的正整数逐一判断寻找因子

suyinzi(j);

return0;

}

voidsuyinzi(intx)//寻找并输出x的所有非平凡因子

x<

的非平凡因子为:

for(inti=2;

i<

=x/2;

i++)

if(x%i==0)

{

cout<

"

}

endl;

2.实验结果:

3.问题分析:

此题简单,但当该数没有非平凡因子时,如能够输出:

“x没有非平凡因子!

”而非仅仅输出空白则更好。

为此,需要将非平凡因子个数储存下来,在判断完毕后根据个数是否为0决定是否输出“x的非平凡因子为:

”这句话。

然而这样的代价就是较为麻烦,增加了程序运行的时间,因而没有尝试。

(二)第二题:

编写函数求反正切三角函数值,函数原型:

doublemy_arctg(doublex);

反正切三角函数公式如下:

n=0,1,2,......,要求结果值精确到107,并编写主函数测试。

评分标准,该题共20分:

(1)程序开始执行时显示“Pleaseenterx:

”,开始输入x的值,程序能正确接受该数值(5分);

(2)能够正确计算数据(5分);

(3)能够输出正确的计算结果。

(5分)。

(4)调用系统数学库函数atan(x)检验计算结果是否正确,并输出检测结果(5分)。

#include<

cmath>

doublemy_arctg(doublex);

doublex;

Pleaseenterx:

x;

自定义函数计算结果:

my_arctg(x)<

系统函数计算结果:

atan(x)<

doublemy_arctg(doublex)

doublesum=x;

doubleu=x;

inti;

for(i=1;

u>

0.0000001||u<

-0.0000001;

u=u*(-1)*x*x*(2*i-1)/(2*i+1);

sum=sum+u;

returnsum;

发现当|x|>

1时程序进入死循环无法结束,可能是公式不再适用。

以下对各种情况作以检测:

(1)输入为绝对值小于等于1的正数或负数及0时,能够计算出结果并且准确:

(2)绝对值超过1,无法计算结果:

|x|>

1时则无法输出结果,为了了解是哪里的问题,将程序添加对u的输出语句,并进行了测试,得到以下结果:

由结果分析,应该是无法达到结束循环的条件,此时程序进入死循环,所以无法输出。

因而,应该是公式不再适用。

因此,输入值应该限定在[-1,1]。

所以提出修改意见:

在输入语句后增加判断是否在[-1,1]的程序:

While(x>

1||x<

-1)

Cout<

“您的输入有误,请输入x在[-1,1]围:

\n”;

Cin>

出于原题要求,没有在结果中进行改动。

(三)第三题:

编写程序,用二维数组存储N×

N整数矩阵,判断矩阵是否为对称矩阵(沿主对角线对称,N大于3)?

先输出该矩阵,然后输出判断结果。

再将次对角线上的N个元素加到主对角线上N个元素,保持矩阵的对称性,并再输出该矩阵。

(可以不用函数方法)

评分标准:

该题共20分。

(1)数据定义和产生正确(5分)

(2)判断对称矩阵的控制结构正确(5分)

(3)主对角线与次对角线元素相加正确(5分)

(4)输出结果正确(5分)

voidchuli(intnum[4][4]);

intpanduan(intnum[4][4]);

inta[4][4]={1,2,3,4,

2,3,4,1,

3,4,1,2,

4,1,2,3

};

intb[4][4]={3,4,3,4,

2,3,8,1,

4,4,3,2,

7,1,2,3

chuli(a);

chuli(b);

intpanduan(intnum[4][4])

inti,j,x=0;

4;

for(j=0;

i;

j++)

if(num[i][j]==num[j][i])

x++;

if(x>

5)

return1;

voidchuli(intnum[4][4])

inti,j;

矩阵为:

\n"

for(i=0;

num[i][j]<

if(panduan(num)!

=0)

该矩阵是对称的,改变后结果为:

for(i=0;

num[i][i]=num[i][i]+num[i][3-i];

for(j=0;

cout<

}

else

该矩阵不是对称的\n"

3.问题分析:

对题意的理解不是很明确。

按照自己的理解进行了编写:

定义了两个固定的函数,一个为对称的,另一个不对称;

编写了一个自定义函数判断矩阵是否对称;

然后对这两个矩阵分别进行判断,若不对称则输出不对称,若对称则进一步进行处理将次对角线元素加到主对角线。

(四)第四题:

编写函数,判断任意一个字符串是否为对称字符串,例如:

对称字符串为“IaI”、“POP”、“21++12”。

要求编写主函数加以测试。

判断函数原型如下:

intpanduan(charccc[]);

(1)字符串数据定义和产生正确(5分)

(2)判断函数编写正确(10分)

(3)测试函数编写正确,并输出结果(5分)

//自定义函数判断字符串ccc是否对称

charin[40];

请输入字符:

cin.get(in,39);

if(panduan(in)==1)

您输入的"

in<

是对称字符!

不是对称字符!

intpanduan(charccc[])

intm=strlen(ccc);

//获取字符串长度

inti,x=0;

(m+1)/2;

i++)//逐一判断对称位置字符是否相同

if(ccc[i]==ccc[m-i-1])

x++;

=m/2)//对称位字符全部分别相同时输出是

考虑到奇数个字符、偶数个字符、数字形式字符、字母、以及多种不对称的形式进行检测:

(1)数字:

(2)字母:

(3)首尾字符不对称:

(4)中心字符不对称:

(5)含空格字符串:

五、第五题:

编写函数:

intcount(intm);

该函数完成如下功能:

输入一个整数m,统计并返回m左端连续相同数字的个数。

如:

2220511左端连续相同数字2的个数是3;

-923000左端连续相同数字9的个数是1。

编写主程序,测试该函数。

(1)数据类型、程序控制结构使用正确(5分)

(2)函数的定义和调用方确(5分)

(3)程序结构规、清晰、合理(5分)

(4)运行结果正确(5分)

intcount(intm);

intm;

请输入一个整数:

m;

if(m<

0)

m=-m;

//取绝对值

count(m)<

intcount(intm)//读取得到最高位数字;

判断连续该数字的个数;

输出个数

intn,u=m,num[10];

for(n=0;

=1;

n++)

num[n]=u%10;

u=u/10;

左端连续相同数字"

num[n-1]<

的个数为"

inti=1;

while(num[n-i]==num[n-i-1])

i++;

returni;

(1)正数:

(2)负数:

3、问题分析:

起初没有考虑正负的问题。

六、第六题:

编写程序:

求1-9999之所有递减数的平均数,所谓递减数指该数各位数字从左至右递减排列,例如:

4332211、654321、9955、22222222等都是递减数。

例如:

32768、43987、123498都不是递减数。

假设求出递减数是4个,分别是A、B、C、D,则按下面格式输出结果:

(A+B+C+D)/4=结果值

(1)程序框架完整,结构清晰(5分)

(2)整数中的数字分离正确(5分)

(3)循环控制结构正确(5分)

(4)计算结果正确,输出格式清楚。

1.源程序代码:

intmy(intn);

intm,n=0,sum=0;

intnum[10000];

for(m=0;

m<

=9999;

m++)

if(my(m)!

num[n]=m;

sum=sum+m;

n++;

("

num[0];

+"

num[i];

)/"

n<

="

sum/n<

intmy(intn)

intnum[4];

intu=0,i=0;

do

num[u]=n%10;

n=n/10;

u++;

}while(n>

=1);

while(num[i]<

=num[i+1]&

&

u)

if(i==u-1)

2.实验结果:

共有997个递增数,平均值为5740:

起初将判断是否递减的条件设为个位<

=十位<

=百位<

=千位,这样就将一位数、两位数、三位数全部都否定了,因为它们都有一部分位上都为0,这样则无法满足递减。

(七)第七题:

设有一个有序的整形数组,数据元素从小到大排列,初始时数组中没有元素,用户从键盘输入若干整数,将其插入到数组的合适位置,使数组保持有序,并打印插入后数组的元素。

程序要考虑数组满时的情况处理。

注意每个整数插入时,若采用冒泡排序方法使数组有序则视为错误。

编程要求:

1)程序在开始执行时提示:

“请输入元素个数:

2)数组中有序元素是:

”的格式输出

3)程序提示:

“输入插入的整数”,插入后,数组元素仍然有序,并按“数组有序元素是:

(1)程序框架完整,代码规(20%)

(2)数据类型的定义和使用方确(20%)

(3)程序控制结构使用正确(20%)

(4)算确,清晰合理(20%)

(5)运行结果正确(20%)

intm,n,i,a[60],b[30];

请输入一个从小到大排列的数组的数的个数:

请输入每一项:

a[i];

请输入要插入的数的个数:

请输入每一个要插入的数:

b[i];

intj=0,u;

while(b[i]>

a[j]&

m+i)

j++;

for(u=m+i;

j;

u--)

a[u]=a[u-1];

a[j]=b[i];

排序结果是:

m+n;

a[i]<

题目的说法并不明确,难以理解,只能按照自己的理解做:

先要求输入一个递增数组;

再输入要插入的数,然后将要插入项插到正确的位置并输出。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2