
C基础练习题,高分找答案,在线急等
ProblemsA.请写一个程序,判断给定整数序列能否构成等差数列输入说明:多组数据,每组输入数据由两行构成,第一行只有一个整数n(<1000),表示序列长度(即序列中整...
Problems A.请写一个程序,判断给定整数序列能否构成等差数列
输入说明:多组数据,每组输入数据由两行构成,第一行只有一个整数n(<1000),表示序列长度(即序列中整数的个数,0表示输入结束),第二行为n个整数,每个整数的取值区间都为[-32768----32767],整数之间以空格或挑格间隔。
输出说明:对于每一组数据,输出一个yes或no,表示该序列能否构成等差数列。
输入样本:
6
23 15 4 18 35 11
3
3 1 2
0
输出样本:
yes
no
Problem B.判断给定正整数是不是“水仙花数”。“水仙花数”是指一个三位数,其各位数字的立方和等于该数,例如153=13+53+33。
输入说明:有多组数据,每组数据为一个正整数n(0<n<65536,占一行),为0时表示输入结束。
输出说明:对于每一组数据,输出一个yes或no(表示该数是否为“水仙花数”)。
输入样本:
153
111
370
422
0
输出样本:
yes
no
yes
no
Problem C. Arnold变换是一种常用的图像置乱技术,Arnold变换的定义如下:
对任意N*N矩阵(所有元素都相同的矩阵除外),设i,j为矩阵元素原始下标,经过Arnold变换后新下标为i',j',且满足下式:
i'=(i+j)mod N
j'=(i+2j)mod N
i,j:0,1,.........N-1
Arnold变换具有周期性,即经过若干次变换后,矩阵回到最初状态,且周期T与N的大小有关。对于任意N>2,TN<=N2/2,请编写程序输出给定的N(2<N<=10)对应的周期TN。
输入说明:有多组数据,每组数据只有一个整数N(2<N<=10,占一行),为0时表示输入结束。
输出说明:对输入的每一N,给出N*N矩阵的Arnold变换的周期T。
输入样本:
3
8
0
输出样本:
4
6
Problem D.对于一个正整数n,如果它的各位之和等于它的所有质因数的各位之和,则该数被称为Smith数。例如,31257=3*3*23*151,31257的各位数字之和为3+1+2+5+7=18,它的所有质因数的各位数字之和为3+3+2+3+1+5+1=18,因此,31257是一个Smith数。编写一个程序判断输入的正整数是不是Smith数。
输入说明:有多组数据,每组数据只有一个整数n(<100000,占一行),为0时表示输入结束。
输出说明:对于每一组数据,输出一个yes或no(表示该数是否为Smith数)。
输入样本:
31257
123
0
输出样本:
yes
no
Problem E. 请写一个程序,计算Rn精确结果(0.0<R<99.999,n是整数且0<n<=25)。
输入说明:有多组数据,每组数据占一行,用一对数据表示,第一个数据是R(含小数点共6位),第二个数据是n,两个数之间有一个空格。
输出说明:对每个输入输出其结果(占一行)
输入样本:
95.123 12
0.4321 20
6.7592 9
98.999 10
1.0100 12
输出样本:
548815620517731830194541.899025343415715973535967221869852721
.00000005148554641076956121994511276767154838481760200726351203835429763013462401
29448126.764121021618164430206909037173276672
90429072743629540498.107596019456651774561044010001
1.126825030131969720661201
给出正确答案,能调试成功,有高分送,今天晚上要答案,在线急等。。。。
谢谢
希望能给出答案,最好是qq联系,63206360
可以一题一题的做,这里是分Problem A,B,C,D,E五题,写过了 展开
输入说明:多组数据,每组输入数据由两行构成,第一行只有一个整数n(<1000),表示序列长度(即序列中整数的个数,0表示输入结束),第二行为n个整数,每个整数的取值区间都为[-32768----32767],整数之间以空格或挑格间隔。
输出说明:对于每一组数据,输出一个yes或no,表示该序列能否构成等差数列。
输入样本:
6
23 15 4 18 35 11
3
3 1 2
0
输出样本:
yes
no
Problem B.判断给定正整数是不是“水仙花数”。“水仙花数”是指一个三位数,其各位数字的立方和等于该数,例如153=13+53+33。
输入说明:有多组数据,每组数据为一个正整数n(0<n<65536,占一行),为0时表示输入结束。
输出说明:对于每一组数据,输出一个yes或no(表示该数是否为“水仙花数”)。
输入样本:
153
111
370
422
0
输出样本:
yes
no
yes
no
Problem C. Arnold变换是一种常用的图像置乱技术,Arnold变换的定义如下:
对任意N*N矩阵(所有元素都相同的矩阵除外),设i,j为矩阵元素原始下标,经过Arnold变换后新下标为i',j',且满足下式:
i'=(i+j)mod N
j'=(i+2j)mod N
i,j:0,1,.........N-1
Arnold变换具有周期性,即经过若干次变换后,矩阵回到最初状态,且周期T与N的大小有关。对于任意N>2,TN<=N2/2,请编写程序输出给定的N(2<N<=10)对应的周期TN。
输入说明:有多组数据,每组数据只有一个整数N(2<N<=10,占一行),为0时表示输入结束。
输出说明:对输入的每一N,给出N*N矩阵的Arnold变换的周期T。
输入样本:
3
8
0
输出样本:
4
6
Problem D.对于一个正整数n,如果它的各位之和等于它的所有质因数的各位之和,则该数被称为Smith数。例如,31257=3*3*23*151,31257的各位数字之和为3+1+2+5+7=18,它的所有质因数的各位数字之和为3+3+2+3+1+5+1=18,因此,31257是一个Smith数。编写一个程序判断输入的正整数是不是Smith数。
输入说明:有多组数据,每组数据只有一个整数n(<100000,占一行),为0时表示输入结束。
输出说明:对于每一组数据,输出一个yes或no(表示该数是否为Smith数)。
输入样本:
31257
123
0
输出样本:
yes
no
Problem E. 请写一个程序,计算Rn精确结果(0.0<R<99.999,n是整数且0<n<=25)。
输入说明:有多组数据,每组数据占一行,用一对数据表示,第一个数据是R(含小数点共6位),第二个数据是n,两个数之间有一个空格。
输出说明:对每个输入输出其结果(占一行)
输入样本:
95.123 12
0.4321 20
6.7592 9
98.999 10
1.0100 12
输出样本:
548815620517731830194541.899025343415715973535967221869852721
.00000005148554641076956121994511276767154838481760200726351203835429763013462401
29448126.764121021618164430206909037173276672
90429072743629540498.107596019456651774561044010001
1.126825030131969720661201
给出正确答案,能调试成功,有高分送,今天晚上要答案,在线急等。。。。
谢谢
希望能给出答案,最好是qq联系,63206360
可以一题一题的做,这里是分Problem A,B,C,D,E五题,写过了 展开
4个回答
展开全部
程序A
#include<stdio.h>
void main()
{
int i,j,shuju[20]={0},shujunum,jieguo[20]={2},num=0,biaozi;
printf("多组数据,每组输入数据由两行构成\n");
scanf("%d",&shujunum);
while(shujunum>0)
{
biaozi=1;
for(i=0;i<shujunum;i++)
scanf("%d",(shuju+i));
for(i=1;i<shujunum-1&&biaozi==1;i++)
{
if((shuju[i]-shuju[i-1])!=(shuju[i+1]-shuju[i]))
biaozi=0;
}
if(biaozi==0)
jieguo[num]=0;
else jieguo[num]=1;
num++;
scanf("%d",&shujunum);
}
for(i=0;i<num;i++)
if(jieguo[i]==1)
printf("yes\n");
else
printf("no\n");
}
程序B
#include<stdio.h>
void main()
{
int i,shuixian,jieguo[20]={2},a1,a2,a3,temp,num=0;
scanf("%d",&shuixian);
while(shuixian>0)
{
if(shuixian>999||shuixian<100)
jieguo[num]=0;
else
{
temp=shuixian;
a1=shuixian%10;
shuixian=shuixian/10;
a2=shuixian%10;
shuixian=shuixian/10;
a3=shuixian%10;
shuixian=shuixian/10;
shuixian=a1*a1*a1+a2*a2*a2+a3*a3*a3;
if(shuixian==temp)
jieguo[num]=1;
else
jieguo[num]=0;
}
num++;
scanf("%d",&shuixian);
}
for(i=0;i<num;i++)
if(jieguo[i]==1)
printf("yes\n");
else
printf("no\n");
}
太耗时间我仅编两个
#include<stdio.h>
void main()
{
int i,j,shuju[20]={0},shujunum,jieguo[20]={2},num=0,biaozi;
printf("多组数据,每组输入数据由两行构成\n");
scanf("%d",&shujunum);
while(shujunum>0)
{
biaozi=1;
for(i=0;i<shujunum;i++)
scanf("%d",(shuju+i));
for(i=1;i<shujunum-1&&biaozi==1;i++)
{
if((shuju[i]-shuju[i-1])!=(shuju[i+1]-shuju[i]))
biaozi=0;
}
if(biaozi==0)
jieguo[num]=0;
else jieguo[num]=1;
num++;
scanf("%d",&shujunum);
}
for(i=0;i<num;i++)
if(jieguo[i]==1)
printf("yes\n");
else
printf("no\n");
}
程序B
#include<stdio.h>
void main()
{
int i,shuixian,jieguo[20]={2},a1,a2,a3,temp,num=0;
scanf("%d",&shuixian);
while(shuixian>0)
{
if(shuixian>999||shuixian<100)
jieguo[num]=0;
else
{
temp=shuixian;
a1=shuixian%10;
shuixian=shuixian/10;
a2=shuixian%10;
shuixian=shuixian/10;
a3=shuixian%10;
shuixian=shuixian/10;
shuixian=a1*a1*a1+a2*a2*a2+a3*a3*a3;
if(shuixian==temp)
jieguo[num]=1;
else
jieguo[num]=0;
}
num++;
scanf("%d",&shuixian);
}
for(i=0;i<num;i++)
if(jieguo[i]==1)
printf("yes\n");
else
printf("no\n");
}
太耗时间我仅编两个
展开全部
看的都乱了!!
你先排序,在判断是否是构成等差数列 。
会排序吧!!
然后用循环求每相邻的俩个数的差是否一样!
我就能说这么多了,看你写的那么多都晕
+_+!
你先排序,在判断是否是构成等差数列 。
会排序吧!!
然后用循环求每相邻的俩个数的差是否一样!
我就能说这么多了,看你写的那么多都晕
+_+!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这些东西现在都不接触了,看着头都大了。。很浪费时间的呵呵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
挺简单的嘛,新手了不是。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询