第三章习题编程:
(1)有一函数:
编写一程序,输入X,输出Y值。
#include <stdio.h>
int main()
double x,y;
scanf("%lf",&x);
if(x〈1)
y=x;
else if(x>=1.0&&x〈10)
y=2*x—11;
else
y=3*x—11;
printf("%lf\n",y);
return 0;
(  2). 从键盘上输入3个整数,求最小的数。
#include 〈stdio。h>
int main()
double x,y,z,min;
scanf("%lf%lf%lf”,&x,&y,&z);
if(x〉y)
min=y;
else
min=x;
if(min>z)
min=z;
printf("min=%lf\n”,min);
return 0;
}
(  3). 输入某人的出生日期,计算并显示其出生的当天是星期几。
#include 〈stdio.h〉
int main()
int y,m,d,flag,s=0,w,i;
scanf(”%d%d%d",&y,&m,&d);
flag=(y%4==0&&y%100!=0||y%400==0);
w=((y—1)*365+(y—1)/4-(y—1)/100+(y—1)/400)%7;
for(i=1;i〈=m;i++)
switch(i)
case 1:s=d;break;
case 2:s=31+d;break;
case 3:s=59+d;break;
case 4:s=90+d;break;
case 5:s=120+d;break;
case 6:s=151+d;break;
case 7:s=181+d;break;
case 8:s=212+d;break;
case 9:s=243+d;break;
case 10:s=273+d;break;
case 11:s=304+d;break;
case 12:s=334+d;break;
}
}
if(flag==1&&m>2)
s=s+1;
s=(w+s)%7;
if(s==0)
printf("星期日\n”);
else
printf("星期%d\n",s);
return 0;
(  4).企业发放的奖金根据利润提成:利润低于或等于10万元时,奖金可提成10%;利润高于10万元低于20万元时,低于10万元的部分按10%提成,高于10万元的部分可提成7。5%;20万到40万之间时,高于20万元的部分可提成5%;40万到60万之间时,高于40万元的部分可提成3%;60万到100万之间时,高于60万元的部分可提成1.5%;高于100万元时,超过100万元的部分按1%提成。从键盘输入当月利润,求应发放奖金总数.
#include 〈stdio。h>
int main()
float p,r;
scanf("%f”,&p);
if(p<=10)
r=p*0.1;
else if(p>10&&p<=20)
r=10*0.1+(p-10)*0。075;
else if(p〉20&&p〈=40)
r=10*0.1+10*0.075+(p—20)*0。05;
else if(p〉40&&p<=60)
r=10*0.1+10*0.075+20*0.05+(p—40)*0.03;
else if(p〉60&&p<=100)
r=10*0.1+10*0.075+20*0.05+20*0.03+(p-60)*0。015;
else if(p〉100)
r=10*0。1+10*0。075+20*0.05+20*0.03+40*0。015+(p—100)*0.01;
printf("%f\n",r);
return 0;
}
(  5). 输入字符,并以回车结束.将其中的小写字母转换成大写字母,而其他字符不变。
#include 〈stdio.h>
int main()
char c;
while((c=getchar())!='\n’)
{
if(c>=’a’&&c〈=’z')
c=c—32;
putchar(c);
return 0;
(  6). 输入一个正整数,求它的所有素数因子.
#include<stdio。h>
int main()
int m,k=2;
printf("输入一个正整数:\n");
scanf("%d",&m);
while(k〈m)
if(m%k==0)
{
printf(”%4d",k);
m=m/k;
}
else
k++;
printf(”%4d\n",m);
return 0;
(  7). 从键盘输入正整数a,求s=a+aa+aaa+……+a……a
#include〈stdio。h>
int main()
{
int a,n,s=0,p=0,i;
scanf(”%d %d”,&n,&a);
for(i=1;i〈=n;i++)
{
p=p*10+a;
s=s+p;
}
printf("%d\n",s);
return 0;
}
(  8). 输出用0~9这10个数字能组成的三位数
#include<stdio.h>
int main()
{
int i,j,k;
for(i=1;i〈=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
printf(”%5d",100*i+10*j+k);
return 0;
(  9). 用二分法求方程            在区间(-10,10)之间的根
}
#include〈stdio。h>
#include<math。h〉
int main()
float a=-10,b=10,x,f1,f2,f;
f1=(((2*a—4)*a+3)*a)-6;
f2=(((2*b-4)*b+3)*b)-6;
do
{
x=(a+b)/2;
f=(((2*x-4)*x+3)*x)-6;
if(f*f1〈0)
{
b=x;
f2=f;
}
else
{
a=x;
f1=f;
}
}while(fabs(f)〉=1e-6);
printf(”%6。2f\n",x);
return 0;
(10). 编写一个程序,计算                    的近似值
#include〈stdio。h>
#include<math。h〉
int main()
{
int n=2;
double eps,t,s=0,x;
scanf(”%lf %lf”,&x,&eps);
一个完整的c语言程序
t=x;
s=t;
while(fabs(t)>=eps)
t=—t*(2*n—3)*x*x/(2*n-2);
s=s+t/(2*n);
n++;
printf("%d,%lf\n",n,s);
return 0;
}
(11). 取出一个无符号的十进制整数中所有奇数数字,按原来的顺序组成一个新的数
#include〈stdio。h〉
int main()
{
unsigned long s,t=0,p=1;
scanf(”%u",&s);
while(s!=0)
{
if((s%10)%2!=0)
{
t=t+(s%10)*p;
p=p*10;
}
s=s/10;
}
printf(”%u\n”,t);
return 0;
}
第四章编程
输入一无符号整数,求所有数位上数字之和
#include〈stdio.h〉
unsigned int fun(unsigned int);
int main()
unsigned int s;
scanf(”%u”,&s);
printf(”%u\n”,fun(s));
return 0;
unsigned int fun(unsigned int s)
unsigned int p=0;
while(s!=0)
{
p=p+s%10;
s=s/10;
return p;
(  2). 求一元二次方程              的根,用3个函数分别求判别式大于0,等于0和小于0时的根,并输出结果。主函数中输入系数a、b、c
#include<stdio.h〉
#include〈stdlib.h〉
#include〈math。h>
void f1(float,float,float,float);
void f2(float,float,float,float);
void f3(float,float,float,float);
int main()
{
float a,b,c,d;
scanf(”%f %f %f”,&a,&b,&c);
if(a==0)
printf(”不是一元二次方程\n”);
exit(0);
}
d=b*b-4*a*c;
if(d〉0)
f1(a,b,c,d);
else if(d==0)
f2(a,b,c,d);
else
f3(a,b,c,d);
return 0;
void f1(float a,float b,float c,float d)
{
float x1,x2;
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("%。2f ,%.2f\n",x1,x2);
}
void f2(float a,float b,float c,float d)
{
float x1,x2;
x1=-b/(2*a);
x2=-b/(2*a);
printf("%。2f ,%.2f\n”,x1,x2);
void f3(float a,float b,float c,float d)
{
float x1,x2;
{
x1=—b/(2*a);
x2=sqrt(—d)/(2*a);