第1关:逐一挑出来
# include<stdio.h>
# include<math.h>
int main()
{
/*********begin*********/
int n,i,j;
scanf("%d",&n);
while(n!=0)
{
printf("%d ",n%10);
n=n/10;
}
return 0;
/*********end*********/
}
第2关:我不喜欢4
#include<stdio.h>
int main()
{
/*********begin*********/
int n,i,a,num=0;
for(i=10000;i<=99999;i++)
{
a=i;
n=0;
while(a)
{
n=a%10;
if(n==4)
{
break;
}
a=a/10;
}
if(n!=4)
{
num++;
}
}
printf("10000~99999中不包含4的个数为:%d",num);
return 0;
/*********end*********/
}
第3关:一元二次方程,其实很简单
#include <stdio.h>
#include<math.h>
int main()
{
/*********begin*********/
float a,b,c,x1,x2;
scanf("%f%f%f",&a,&b,&c);
if(a==0)
{
printf("系数a不能为零");
}
else if(b*b-4*a*c<0)
{
printf("方程无实根");
}
else if(b*b-4*a*c>=0)
{
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
printf("x1=%.2f x2=%.2f",x1,x2);
}
/*********end*********/
}
第4关:复数不再是难题
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct {
double real;
double i;
}complex;
complex* add(complex a, complex b){
/*********begin*********/
complex n;
complex *z=&n;
n.real=a.real+b.real;
n.i=a.i+b.i;
return z;
/*********end*********/
}
complex* minus(complex a, complex b){
/*********begin*********/
complex n;
complex *z=&n;
n.real=a.real-b.real;
n.i=a.i-b.i;
return z;
/*********end*********/
}
complex* multiply(complex a, complex b){
/*********begin**********/
complex n;
complex *z=&n;
n.real=a.real*b.real-a.i*b.i;
n.i=a.i*b.real+a.real*b.i;
return z;
/*********end*********/
}
int main()
{
/*********begin**********/
complex a,b;
complex* k;
char x;
scanf("%c%lf%lf%lf%lf",&x,&a.real,&a.i,&b.real,&b.i);
if(x=='+')
{
k=add(a,b);
}
else if(x=='-')
{
k=minus(a,b);
}
else if(x=='*')
{
k=multiply(a,b);
}
if(k->i >0||k->i ==0)
printf("%.2lf%c%.2lf%c",k->real,'+',k->i,'i');
else
printf("%.2lf%c(%.2lf)%c",k->real,'+',k->i,'i');
return 0;
/*********end**********/
}