题8000022012,求一个整数任意次方的最后三位数。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m,n;
scanf("%d %d",&m,&n);
int i;
int sum = 1;
for(i=0;i<n;i++)
{
if(sum>1000)
sum = sum%1000;
sum = sum * m;
}
printf("%d\n",sum%1000);
return 0;
}
题8000022008 公式求π的近似值
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int main()
{
double pi = 0;
double i = 1.0;
do
{
pi+= 1/i;
if(i>0)
i = -(i+2);
else
i = fabs(i) +2;
}while(fabs(1/i)>1e-6);
printf("%.6lf\n",4*pi);
return 0;
}
题8000022007 求实数整数部分位数
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int main()
{
double num;
scanf("%lf",&num);
int count = 0;
int number ;
number = (int)(fabs(num));
while(number)
{
count++;
number = number / 10;
}
printf("%d\n",count);
return 0;
}
8000022002二分法求方程的根
#include <stdio.h>
#include<stdlib.h>
#include <math.h>
int main()
{
double x0,x1=0,x2=0,fx0,fx1,fx2;//x1,x2未端点,x0为中点,浮点型数据
//判断区间是否有解
printf("请输入端点x1,x2:\n");
scanf("%lf %lf",&x1,&x2);
printf("x1:%lf\n",x1);
printf("x2:%lf\n",x2);
fx1=2*x1*x1*x1-4*x1*x1+3*x1-6;
fx2=2*x2*x2*x2-4*x2*x2+3*x2-6;
if(fx1*fx2>0)
{
printf("have no anwser\n");
exit(0);
}
//二分法求解
do
{
x0=(x1+x2)/2;
fx0=2*x0*x0*x0-4*x0*x0+3*x0-6;
if (fx0*fx1<0)//在该区间
{
x2=x0;//调整端点位置
fx2=fx0;
}
else
{
x1=x0;
fx1=fx0;
}
} while (fabs(fx0)>1e-6);// 这里精度太小可能跟文档答案有偏差
printf("方程的根%.2lf",x0);
return 0;
}
题8000022001 迭代法求平方根的值
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int main()
{
double num;
scanf("%lf",&num);
double x1,x2=1.0;
do
{
x1 = x2;
x2 = 0.5*(x1 + num/x1);
}while(fabs(x1-x2)>1e-5);
printf("%lf\n",x1);
return 0;
}
题8000022000完数问题
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int isCompleteNum(int num)
{
int i;
int ans = num;
for(i=1;i<= num/2;i++)
{
if(num%i==0)
ans-= i;
}
if(ans == 0)
return 1;
else
return 0;
}
void PrintFactor(int num)
{
printf("%d=",num);
int i,j=0;
int factor[20];
for(i=1;i<=num/2;i++)
{
if(num%i==0)
factor[j++]=i;
}
for(i=0;i<j-1;i++)
{
printf("%d+",factor[i]);
}
printf("%d\n",factor[j-1]);
}
int main()
{
int i;
for(i=1;i<=1000;i++)
{
if(isCompleteNum(i))
PrintFactor(i);
}
return 0;
}
题8000010008百分制成绩转换
#include <stdio.h>
#include <stdlib.h>
int main()
{
int grade;
scanf("%d",&grade);
printf("%c\n",grade);
switch(grade/10)
{
case 10:
case 9: printf("A\n");break;
case 8:printf("B\n");break;
case 7:printf("C\n");break;
case 6:printf("D\n");break;
default:printf("E\n");
}
return 0;
}
题8000010007 输入日期,判断是这一年的第几天
#include <stdio.h>
#include <stdlib.h>
int isLeapYear(int year)
{
if((year%4==0&&year%100!=0) ||(year%400==0))
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int year,month,day;
scanf("%d-%d-%d",&year,&month,&day);
int dayOfMonth[] = {31,28,31,30,31,30,31,31,30,31,30,31};
int totalDays = 0,index;
for(index=0;index<month-1;index++)
{
totalDays+= dayOfMonth[index];
}
totalDays+= day;
//注意需要判断是否是大于2月,然后再是判断闰年问题
if(isLeapYear(year) && (month>2))
{
totalDays++;
}
printf("%d-%d-%d\n",year,month,day);
printf("total days = %d",totalDays);
return 0;
}