2011-2013年湖南理工学院程序设计试题(4)

2019-08-31 19:49

{

for(j=i+1;j<=9;j++);for(p=0;p<=n-1;p++);if(p<=n-1-q)c[k][p]=i;elsec[k][p]=j;;k++;;/*for(j=0;j<81*(n-1);;for(i=0;i

for(p=0;p<=n-1;p++) {

if(p<=n-1-q) c[k][p]=i; else c[k][p]=j; } k++; } } } }

/*for(j=0;j<81*(n-1);j++) //输出所有n位数的双码二部数! {

for(i=0;i

cout<

湖南理工学院2013程序设计竞赛 1 求代数和

设和式s(n)= 1×2×3-2×3×4+….+(-1)n+1×n×(n+1)×(n+2) (和式中共n项,各项符号“+”与“-”相间) 输入整数n(1≤n<3000),计算并输出和s(n)。 数据测试: (1) n=100 (2) n=2013

参考解答:

设置双精度实型变量s实施累加。

在j(1——n)循环实施代数和累加即可。 程序设计:

// s(n)= 1×2×3-2×3×4+?+-n×(n+1)×(n+2) #include void main()

{ int j,n; double s;

printf(\请输入整数n: \

scanf(\

s=0; // s清零 for(j=1;j<=n;j++)

if(j%2==1) s+=j*(j+1)*(j+2); // 求和 else s-=j*(j+1)*(j+2);

printf(\输出和s }

请输入整数n: 100 s(100)=-522750

请输入整数n: 2013 s(2013)=4087630512 2 表的列号

在EXCEL工作表中最多有256列,从第1列开始至右列号依次为A,B,C,……,Y,Z;AA,AB,……..,AZ;BA,BB,……..,BZ;CA,CB,CC,?。 试换算并输出第n列的列号。 输入正整数n(n≤256),输出相应的列号。例如,输入60,输出第60列的列号BH。测试数据: (1) n=100 (2) n=200 参考解答:

设置字符数组:d[27]=\显然d*0+=’A’,d*25+=’Z’。

对输入的整数n,计算x=(n-1)/26为第1个字符序号,当x=0时无第1个字符;计算y=(n-1)&为第2个字符序号. 程序设计: // 表的列号 #include void main() { int n,x,y;

char d[27]=\printf(\请输入整数n: \scanf(\

x=(n-1)/26;y=(n-1)&;

if(x==0) printf(\前26列只输出一个字母 else printf(\}

// 表的列号改进(省字符串) #include void main() { int x,y; long n;

printf(\请输入整数n: \scanf(\if(n<=26)

{printf(\前26列只输出一个字母 return;

} else

{ x=n/26;y=n&; if(y==0) {x=x-1;y=26;}

printf(\} }

数据测试: n=100: CV n=200: GR

实训1. 长列序号转换代码 引申:列号n在长整形不限

列号n在长整形不限,从第1列开始至右列代码依次为A,B,C,?,Y,Z;AA,AB,?,ZZ;AAA,AAB,?,ZZZ;AAAA,AAAB,?。 试换算并输出第n列的列代码。 测试数据:n=2013; n=20132014 实训2. 表的列代码与序号互换 测试数据:

请输入正整数n: 123456789012345,该列代码为:_________ 请输入列代码(大写字母串):ZYXWABCDEF, 该列序号为:__________ 3 小数求和

设和式s(n)= 1.7+2.77+3.777+…+(n+0.77…..7) (s(n)为n项之和,其中第k项整数部分为k,小数点后有k个数字7)输入整数n(1≤n<3000),计算并输出和s(n)(四舍五入精确到小数点后6位)。数据测试: (1) n=100 (2) n=2013 参考解答:

设置双精实变量s实施累加。

在j(1——n)循环中枚举和式的每一项,设当前项的小数部分为t,其后一项显然为 t=t/10+0.7; 每一项在t的基础上加整数部分j即可。 设计设计: // 求s(n)

#include void main()

{ int j,n; double t,s;

printf(\请输入整数n: \scanf(\t=s=0; // t,s清零 for(j=1;j<=n;j++)

{ t=t/10+0.7; // t为第j项小数部分 s+=t+j; // 求和s }

printf(\输出和s }

另简解:

注意到整数部分相加为n*(n+1)/2;

设d9=0.9+0.99+?+0.99?9=n-0.11?1=n-0.1111111(取7位即可) 而d7=d9/9*7;因而有 // 求s(n)简化 #include void main() { int n; double s;

printf(\请输入整数n: \scanf(\

s=n*(n+1)/2+(n-0.1111111)*7/9; // 求和s printf(\输出和s }

请输入整数n: 100 s(100)=5127.691358 请输入整数n: 2013

s(2013)=2028656.580247

实训3. 同码小数之和

整数部分为零小数部分各位数字相同的小数称为同码小数,例如0.3,0.33,0.333,?,是同数码3的小数,记这些小数的前5项之和0.3+0.33+0.333+0.3333+0.33333为s(3,5),记前5 项的加权和0.3+2×0.33+3×0.333+4×0.3333+5×0.33333为w(3,5),一般地记 s(d,n)= 0.d+0.dd+0.ddd+?+0.dd?d

w(d,n)= 0.d+2×0.dd+3×0.ddd+?+n×0.dd?d

(两和式为n项之和,其中第k项小数点后有k个数字d,加权和第k项的权系数为k)依次输入整数d(1≤d≤9),n(1≤n<10000),计算并输出和s(d,n)与w(d,n)(四舍五入精确到小数点后6位)。

测试数据: d=7,n=2014; d=8,n=2013 实训4. 同码小数统计 对于给定的同码小数的和

s(d,n)= 0.d+0.dd+0.ddd+….+0.dd…d

w(d,n)= 0.d+2×0.dd+3×0.ddd+…..+n×0.dd…..d 输入正整数d(1≤d≤9),n(1≤n<10000),试精确求和s(d,n)与w(d,n)。同时统计:在s(d,n)与w(d,n)的n个小数位中,共有多少个小数位s与w对应位的数字相同? 测试数据: d=8,n=50; d=6,n=2013 4 解不等式

设n为正整数,a,b已知,解不等式a<1+1/(1+1/3)+...+1/(1+1/3+...+1/(2n-1)(1) a=100,b=1000 (2) a=2013,b=2014 参考解答:

解:上下限一般为键盘输入的a,b。

分两段求和:应用条件s

#include #include void main() { long a,b,c,d,i; double ts,s;

printf(\请输入a,b: \scanf(\i=0;ts=0;s=0; while(s

ts=ts+(double)1/(2*i-1); s=s+1/ts; } c=i;

while(s

ts=ts+(double)1/(2*i-1); s=s+1/ts; } d=i-1;

printf(\满足不等式的正整数n为: %ld≤n≤%ld \\n\}

请输入a,b: 100,1000

满足不等式的正整数n为: 329≤n≤4629 请输入a,b: 2013,2014

满足不等式的正整数n为: 10121≤n≤10125 实训5. 分数不等式

试解以下关于正整数n的不等式 M<1+1/2-1/3+1/4+1/5-1/6+….+或-1/n

其中m为从键盘输入的正整数,式中符号为二个“+”号后一个“-”号,即分母能被3整除时符号为“-”。

测试数据: m=4; m=7 5 解不定方程 解三元不定方程

1/a-1/b-1/c=1/(a+b+c)

求满足条件 x<=a,b,c<=y,b

(1) x=400,y=1000 (2) x=1000,y=2500 参考解答:

(1)枚举设计要点

1)为了扩大求解范围,所涉变量设置为double型。 2)注意a,b,c的取值范围,在区间[x,y]中取值:


2011-2013年湖南理工学院程序设计试题(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: