21 编程计算指定式子的近似值
编写一个程序,计算的近似值(直到最后一项的绝对值小于eps)。(eps为极小值,可以由用户输入,也可以以常量的形式出现;用户输入的x绝对值应该小于1,否则不能结束循环)
-
#include <>
-
#include <>
-
#include <>
-
-
int main()
-
{
-
double sum,eps=0.0000000001,x,t;
-
int n;
-
scanf("%lf",&x);
-
sum=x;
-
t=x;
-
for(n=1;t>=eps;n=n+2)
-
{
-
t=-1*t*n/(n+1)*x*x/(n+3);
-
sum+=x;
-
}
-
printf("sum=%lf\n",sum);
-
return 0;
-
}
22 取出特定整数中所有奇数数字,按规则组成新的数
取出一个无符号的十进制整数中所有奇数数字,按原来的顺序组成一个新的数。
-
#include <>
-
-
int main()
-
{
-
long x,s=0,j=0; //x:输入数据;s:输出数据的倒序;j:输出数据;
-
int n,i; //n:x从个位开始往左位移的单个数字;i:s从个位开始往左位移的单个数字;
-
scanf("%ld",&x);
-
//本题使用位运算更简单,初学时所做,暴力解
-
while(x) //x!=0
-
{
-
n=x%10;
-
if(n%2!=0)
-
s=s*10+n;
-
x=x/10;
-
}
-
while(s)
-
{
-
i=s%10;
-
j=j*10+i;
-
s=s/10;
-
}
-
printf("%ld",j);
-
}
23 编程实现字符按规则的输出
请编写一个程序,实现以下功能:接收键盘上的输入,直到按Enter键为止,对于这些字母按如下规则进行转换:
① 如果输入的大写字母,请转换为小写字母;如果输入的小写字母,请转换为大写字母。
② 对于非字母字符,则不进行转换,原样输出。
③ 若有连续的一个以上的空格时,则只输出一个空格。
请对输入的信息按上述规则进行转换后,再在屏幕上进行输出。
-
#include <>
-
-
int main()
-
{
-
char c,front= '\0';
-
scanf("%c",&c);
-
while(c!= '\n')
-
{
-
if(c!=' ')
-
{
-
if(c>='A'&&c<='Z')
-
{
-
c=c+32;
-
putchar(c);
-
}
-
else if(c>='a'&&c<='z')
-
{
-
c=c-32;
-
putchar(c);
-
}
-
else
-
putchar(c);
-
}
-
if(c== ' ')
-
if(c!=front)
-
putchar(c);
-
front=c;
-
c=getchar();
-
}
-
return 0;
-
}
24 编程统计学生的成绩
从键盘上输入若干个学生的成绩,统计输出所有学生成绩之和,并计算这些学生的平均成绩。
-
#include <>
-
-
int main()
-
{
-
float s,i=0; //s:单人分数;i:人数
-
float avg=0,sum=0;
-
scanf("%f",&s);
-
while(s>=0) //输入任意复数退出循环
-
{
-
i++;
-
sum=sum+s;
-
avg=sum/i;
-
scanf("%f",&s);
-
}
-
printf("\nsum=%f\navg=%f\n",sum,avg);
-
return 0;
-
}
25 输入无符号整数,求所有数位上数字之和
-
#include <>
-
-
int main()
-
{
-
int x,m,s=0;
-
scanf("%d",&x);
-
while(x!=0)
-
{
-
m=x%10;
-
s=s+m;
-
x=x/10;
-
}
-
printf("%d",s);
-
return 0;
-
}
26 求一元二次方程的根
求一元二次方程的根,用3个函数分别求判别式大于0、等于0和小于0时的根,并输出结果。主函数中输入系数a、b、c。
-
#include <>
-
#include <>
-
-
int main()
-
{
-
double a,b,c,delta,x1,x2,p,q;
-
scanf("%lf %lf %lf",&a,&b,&c);
-
if(a==0)
-
printf("不是一元二次方程!\n");
-
else
-
{
-
delta=b*b-4*a*c;
-
if(delta==0)
-
{
-
printf("方程有两个相等的实数根!\n");
-
x1=-b/(2*a);
-
x2=x1;
-
printf("%.2lf , %.2lf\n",x1,x2);
-
}
-
else if(delta>0)
-
{
-
printf("方程有两个不相等的实数根!\n");
-
x1=-b/(2*a)+sqrt(delta)/(2*a);
-
x2=-b/(2*a)-sqrt(delta)/(2*a);
-
printf("%.2lf , %.2lf\n",x1,x2);
-
}
-
else
-
{
-
printf("方程有两个不相等的复数根!\n");
-
p=-b/(2*a);
-
q=sqrt(-delta)/(2*a);
-
printf("%.wlf + %.2lfi\n",p,q);
-
printf("%.wlf - %.2lfi\n",p,q);
-
}
-
}
-
return 0;
-
}
27 用递归方法求n解勒让德多项式的值
-
#include <>
-
#include <>
-
-
unsigned int getfactorial(unsigned int n,unsigned int x);
-
-
int main()
-
{
-
unsigned int x,n,p;
-
scanf("%u %u",&n,&x);
-
p=getfactorial(n,x);
-
printf("p(%u)=%u\n",x,p);
-
return 0;
-
}
-
-
unsigned int getfactorial(unsigned int n,unsigned int x)
-
{
-
unsigned int result;
-
if(n==0)
-
result=1;
-
else if(n==1)
-
result=x;
-
else if(n>1)
-
result=((2*n-1)*x*getfactorial(n-1,x)-(n-1)*getfactorial(n-2,x))/n;
-
return result;
-
}
28 计算银行存款余额和利息
计算银行存款余额和利息:假设银行存款季度利息是5.3%,根据输入的原始数据计算利息和账户余额,并以表格的形式输出每个季度的利息和账户余额。要求写两个函数,一个用来计算利息和余额,一个用来输出。
-
#include <>
-
-
double function(float);
-
void display(float,int);
-
-
int main()
-
{
-
float sum;
-
int season;
-
scanf("%f %d",&sum,&season);
-
display(sum,season);
-
return 0;
-
}
-
-
double function(float sum)
-
{
-
float a,acc;
-
a=0.053;
-
acc=sum*a;
-
return acc;
-
}
-
-
void display(float sum,int season)
-
{
-
int i;
-
printf("季度 利息 账户余额\n");
-
printf("--------------------------\n");
-
for(i=1;i<=season;i++)
-
{
-
printf("%d %f %f\n",i,function(sum),function(sum)*i+sum);
-
/*利息=本金×利率×时间*/
-
printf("----------------------------\n");
-
}
-
}
29 利用函数求和,并把结果作为函数返回值
-
#include <>
-
-
double fun(void);
-
-
int main()
-
{
-
printf("数列的和:%lf\n",fun());
-
return 0;
-
}
-
-
double fun()
-
{
-
int n=1;
-
double term,sum=0.0;
-
do
-
{
-
term=(double)(2*n-1)/(2*n*2*n);
-
sum=sum+term;
-
n++;
-
}while(term>0.0001);
-
return sum;
-
}
30 利用函数求w的低n-1位数
设w是一个大于10的无符号整数,若w是n(n>=2)位的整数,编写一个函数求w的低n-1位的数作为函数的返回值。如w=5923,则函数返回值为923。
-
#include <>
-
-
int fun(unsigned int);
-
-
int main()
-
{
-
unsigned int w;
-
scanf("%u",&w);
-
if(w<10)
-
{
-
printf("data error!");
-
}
-
else
-
printf("%d",fun(w));
-
return 0;
-
}
-
-
int fun(unsigned int w)
-
{
-
int r=1,n=1,s;
-
s=w;
-
while(s>10)
-
{
-
s=s/10;
-
r=r*10;
-
n++;
-
}
-
w=w%r;
-
return w;
-
}