西工大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
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;