西工大C语言学习知识程序课后复习

西工大C语言学习知识程序课后复习
西工大C语言学习知识程序课后复习

T021、羊羊聚会

#include

#include

double f(double a,double b) {

double i;

for(i=1;;i++)

{

if(i*b==a)

{

return i;

break;

}

if(i*b>a)

{

return (i-1);

break;

}

}

}

int main()

{

double x,y,a,b,c,t,m,n,k;

scanf("%lf %lf %lf %lf %lf",&x,&y,&a,&b,&c); if(b>a)

m=b-a,n=y-x;

else

m=a-b,n=x-y;

if(n>0)

for(t=0;;t++)

{

k=t*m-(c-n);

if(k==0)

{

printf("%.0lf",t);

break;

}

if(k>0&&(k-f(k,c)*c)==0) {

printf("Impossible"); break;

}

}

if(m<0)

for(t=0;;t++)

{

k=t*n-m;

if(k==0)

{

printf("%.0lf",t);

break;

}

if(k>0&&(k-f(k,c)*c)==n) {

printf("Impossible"); break;

}

}

return 0;

}

T022、粒子裂变

(1)#include #include

int main()

{ int t,i,a=1,b=0; scanf("%d",&t);

for(i=1;i<=t;i++)

{

b=3*a+2*b;

a=(b+(pow(-1,i))*3)/3;

}

printf("%d %d",a,b);

}

(2)#include

int main()

{

int n[100],m[100],t,i;

n[0]=1;//n[100]数组存储α粒子的数目,初始值为0 m[0]=0;//m[100]数组存储β粒子的数目,初始值为1 scanf("%d",&t);

for(i=1;i<=t;i++){

n[i]=m[i-1];

m[i]=3*n[i-1]+2*m[i-1];

}

printf("%d %d",n[t],m[t]);

getchar();

getchar();//多读取一个回车可以看到输出结果,直到输出回车后结果才闪过

}

T023、探索合数世纪

#include

#include

int main()

{

int n,s,i=0,j=0,w,h,k,u=1; scanf("%d",&n);

for(i=1;i<=n;i++){

for(k=u;;k++){

for(s=k*100,h=1;s<=k*100+99;s++){ for(j=2,w=1;j<=sqrt(s);j++)

{

w=s%j;

if(w==0)

break;

}

if(w!=0)

{ h=0;

break;}

}

if(h==1)

{u=k;

break;}

}

}

printf("%d %d\n",u*100,u*100+99); return 0;

}

T024、排列1~9

#include

#include

int main()

{

int i,j,k;

int a[10],d,fg,n=0,t,m=0;

for(i=123;i<=987/3;i++)

{

j=2*i;k=3*i;

a[0]=i/100;a[1]=i/10%10;a[2]=i%10; a[3]=j/100;a[4]=j/10%10;a[5]=j%10; a[6]=k/100;a[7]=k/10%10;a[8]=k%10;

for(d=0;d<8;d++)

for(fg=d+1;fg<9;fg++)

if(a[d]==a[fg])

n++;

if(n==0)

{

for(t=0;t<9;t++)

if(a[t]==0)

m=1;

if(m!=1)

printf("%d %d %d\n",i,j,k);

else

m=0;

}

else

n=0;

}

printf("%f\n",(double)clock()/CLOCKS_PER_SEC); return 0;

}

T025、幸运数字7

#include

int main()

{

int i,N;

scanf("%d",&N);

for (i = 1; i <= N; i++)

{

if (i % 7 == 0) printf("%d\n",i); else

{

int temp = i;

while (temp > 0)

{

if (temp % 10 == 7) {

printf("%d\n",i); break;

}

temp = temp / 10;

}

}

}

}

T026、1的传奇

#include

int SubSum(int);

int Pow(int a,int x);

int TotalSum(int n);

int NumLen(int n);

int main()

{

int n;

scanf("%d",&n);

printf("%d\n",TotalSum(n));

return 0;

}

int NumLen(int n)

{

int s=0;

do{

s+=1;

n/=10;

}while(n);

return s;

}

int SubSum(int n)

{

int m=NumLen(n);

int firstnum=n/Pow(10,m-1);

if(firstnum==1)

return ((m-1)*Pow(10,m-2)+1);

else if(firstnum==2)

return

(SubSum(Pow(10,m-1))+Pow(10,m-1)+(m-1)*Pow(10,m-2)-1);

else

return

(SubSum((firstnum-1)*Pow(10,m-1))+(m-1)*Pow(10,m-2) );

}

int Pow(int a,int x)

{

int a2=a,i;

if(x==0) return 1;

for(i=1;i

a*=a2;

return a;

}

int TotalSum(int n)

{

int totalsum=0;

int len=NumLen(n);

int firstnum=n/Pow(10,len-1);

if(len==1 && n)

return 1;

if(len==1 && !n)

return 0;

if(firstnum==1)

totalsum+=(SubSum(Pow(10,len-1))+n%Pow(10,len-1));

else

totalsum+=SubSum(firstnum*Pow(10,len-1));

n%=Pow(10,len-1);

return (totalsum+TotalSum(n));

}T027、分数拆分

#include

int main()

{

int k,x,y;

scanf("%d",&k);

for(x=(k+1);x<=2*k;x++)

{

y=(k*x)/(x-k);

if((k*x)%(x-k)==0)

{

y=(k*x)/(x-k);

printf("1/%d=1/%d+1/%d\n",k,y,x);

}

}

}

T028、解不等式

#include

int main()

{

int k,x,y;

scanf("%d",&k);

for(x=(k+1);x<=2*k;x++) {

y=(k*x)/(x-k);

if((k*x)%(x-k)==0)

{

y=(k*x)/(x-k);

printf("1/%d=1/%d+1/%d\n",k,y,x); }

}

}

T029、除法0~9,a~j

#include

int main()

{

int p,n,m,i,j,a[10],jud;

scanf("%d",&p);//读入要测试的数

n=1234;

for(;n<=98765;n++)//n穷举到最大的98765

{

jud=0;

m=n; // 不能破坏循环变量n的值

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

{

a[i]=m%10;

m=m/10;//将n的5位数字分别存在数组中}

if(n%p!=0)

continue;//如果n不能被p整除,则跳到下个循环else

{

m=n/p; // 分母需要重新赋值,不能与分子相同

for(i=9;i>=5;i--)

{

a[i]=m%10;

m=m/10;//若能整除,则把5个数字分别存在数组中

}

}

for(i=0;i<=8;i++)

{

for(j=i+1;j<=9;j++)

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

{

jud=1;

break;//判断a[0]~a[9]中有无重复数字}

if(jud==1)

break;//若有重复数字,则跳出循环}

if(jud==0)//若没有重复数字,则输出这组数据{

for(i=0;i<=4;i++)

printf("%d",a[i]);

printf("/");

for(i=5;i<=9;i++)

printf("%d",a[i]);

printf("=%d\n",p);

}

}

return 0;

}

T030、分数化小数

#include

int main()

{

int p,n,m,i,j,a[10],jud;

scanf("%d",&p);//读入要测试的数

n=1234;

for(;n<=98765;n++)//n穷举到最大的98765 {

jud=0;

相关主题
相关文档
最新文档