青海大学mooc测验与作业(5)

2019-04-09 14:54

做完后请思考,如果N的范围是1<=N<=100000呢? 输入样例:

2 5

6 -1 5 4 -7 7

0 6 -1 1 -6 7 -5

输出样例:

14 7

源程序:

#include int main() {

int x,n,t,s,m,max=-1001; scanf(\while(t--) {

scanf(\ s=m=0; while(n--) { scanf(\if(max0) m=m+x; else m=0; if(s

if(max<0) printf(\else printf(\ } return 0; }

第七周数组一

1组成最大数(10分)

题目内容:

任意输入一个自然数,输出该自然数的各位数字组成的最大数。

输入格式: 自然数 n 输出格式:

各位数字组成的最大数 输入样例: 1593 输出样例: 9531[回车]

源程序:

#include int main()

{ int a[10]={0},i=0,j,p,n,t; scanf(\ t=n; while(t) { a[i]=t; t=t/10; } p=i;

for(i=0;i

for(j=0;j

if(a[j]

{ t=a[j];a[j]=a[j+1];a[j+1]=t;} i++;

t=0;

for(i=0;i

t=t*10+a[i];

printf(\return 0; }

2回文数(10分)

题目内容:

输出所有不超过n(取n<256)的、其平方具有对称性质的正整数(也称为回文数)。 如: 1*1=1; 2*2=4;3*3=9;11*11=121;1,2,3,11是回文数。 输入格式: 输入n(n<256) 输出格式:

输出所有不超过n的回文数 输入样例: 3

输出样例: 1[回车] 2[回车]

源程序:

#include int main() {

int n,m,i,f,s; scanf(\if(n<256 && n>0)

for(i=1;i

{ }

m=i*i; f=m; s=0; while(f>0) { s=s*10+f; f=f/10; }

if(m==s) printf(\

else printf(\ }

return 0;

3洗牌(10分)

题目内容:

假设我们有 2n 张牌,它们以 1, 2, ..., n, n+1, ..., 2n 编号并在开始时保持着这种顺序。一次洗牌就是将牌原来的次序变为 n+1, 1, n+2, 2, ..., 2n, n,也就是将原来的前 n 张牌放到位置 2, 4, ..., 2n,并且将余下的 n 张牌按照他们原来的次序放到奇数位置 1, 3, ..., 2n-1。已经证明对于任何一个自然数 n,这 2n 张牌经过一定次数的洗牌就回到原来的次序。但我们不知道对于一个特定的 n,需要几次洗牌才能将牌洗回原来的次序。 输入格式:

牌张数的一半n,即初始情况下一共有2n张牌,n为int型整数 输出格式:

将牌洗回原来的次序所需要的洗牌次数 输入样例: 10 输出样例: 6[回车]

源程序:

#include #define N 80000 int main() {

int a[N]={0},b[N]={0},c[N],i,n,s=0; scanf(\

for(i=0;i<2*n;i++)

{ a[i]=i+1; c[i]=a[i]; } do {

for(i=0;i=0;i--)

a[2*i+1]=a[i];

for(i=0;i

// for(i=0;i<2*n;i++) printf(\ // printf(\s++;

}while(a[n]!=n+1); printf(\

return 0; }

4子数整除(10分)

题目内容:

对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:

? ? ? ? ?

sub1=a1a2a3 sub2=a2a3a4 sub3=a3a4a5

例如,五位数20207可以拆分成: sub1=202 sub2=020(=20)

? sub3=207

现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1、sub2、sub3都可被K整除。 输出时请按照由小到大的顺序排列(每行输出一个数)。 输入格式: 一个正整数K 输出格式:

请按照由小到大的顺序排列(每行输出一个数) 输入样例: 15 输出样例: 22555[回车] 25555[回车] 28555[回车] 30000[回车]

源程序:

#include int main() {

int k,m,sub1,sub2,sub3; scanf(\

for(m=10000;m<=30000;m++) { sub1=m/100; sub2=m000/10; sub3=m00;

if(sub1%k==0 && sub2%k==0 && sub3%k==0)

} return 0;

printf(\

}

第八周数组二

1单词排序(10分)

题目内容:

输入 5 个单词,将它们按从大到小的顺序排列后输出。 输入格式: 5个单词 输出格式: 排序后的顺序


青海大学mooc测验与作业(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:纺材历年真题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

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