第一章程序设计和C语言
- 例1.1 要求在屏幕上输出以下一行信息
- 例1.2求两个整数之和
- 例1.3求两个整数中的较大值
- 例2.19(求5!)用C语言表示
- 例2.19(求多项式1-1/2+1/3-1/4+···+1/99-1/100)
- 例3.1有人用温度计测量出用华氏法表示的温度(如64),今要求把它转换为以摄氏法表示的温度
- 例3.2计算存款利息。有1000元,想存一年。有3种方法可选:(1)活期,年利率为r1;(2)一年期定期,年利率为r2;(3)存两次半年定期,年利率为r3。请分别算出一年后按3种方法所得的本息和。
- 例3.3 给定一个大写字母,要求用小写字母输出
- 例3.4给出三角形的三边长,求三角形的面积
- 例3.5求ax*x+bx+c=0方程的根。a,b,c由键盘输入,设b*b-4ac>0
- 例3.6用%f输出实数,只能得到6位小数
- 例3.7float型数据的有效位数
- 例3.8先后输出BOY三个字符
- 例3.9 从键盘输入BOY3个字符,然后把它们输出到屏幕
- 例3.10改例3.3程序,使之可以适用于任何大写字母,从键盘输入一个大写字母,在显示屏上显示对应的小写字母
- 例4.1在例3.5的基础上对程序进行改进。题目要求解得ax*x+bx+c=0方程的根。由键盘输入a,b,c。假设a,b,c旳值任意,并不保证b*b-4ac>=0.需要在程序中进行判别,如果b*b-4ac>=0,就计算并输出方程的两个实根,如果b*b-4ac<0,就输出 “此方程无实根”的信息。
- 例4.2输入两个实数,按由小到大的顺序输出这两个数。
- 例4.3输入三个数a,b,c,要求按由小到大输出
- 例4.4输入一个字符,判别它是否为大写字母,如果是,将它换成小写字母;如果不是,不转换。然后输出最后得到的字符。
- 例4.5有一阶跃函数
- 例4.6要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70~84分,C等为60···69分,D等为60分以下,成绩的等级由键盘输入。
- 例4.7 用switch语句处理菜单命令。在许多应用程序中,用菜单对流程进行控制,例如从键盘输入一个‘A’或'a'字符,就会执行A操作,输入一个‘B’或‘b’字符,就会执行B操作。
- 例4.8写一程序,判断某一年是否为闰年
- 例4.9求ax*x+bx+c=0方程的根
- 例4.10运输公司对用户计算运输费用。路程越远,运费越低。标准如下
- 例5.1求1+2+3+····+100
- 例5.2用do···while语句求1+2+3+····+100
- 例5.3while和do···whil循环比较
- 例5.4在全系1000名学生中举行慈善募捐,当总数达到10万元时就结束,统计此时募捐的人数以及每人捐款的数目
- 例5.5要求输出100~200的不能被3整除的数
- 例5.6输出下列4*5的矩阵
- 例5.7用公式π/4≈1-1/3+1/5-1/7+····求π的近似值,直到发现某一项的绝对值小于10的负六次方为止(该项不累加)
- 例5.8求Fibonacci(斐波那契)数列的前40个数。这个数列有如下特点:第1,2,两个数为1,1.从第3个数开始,该数是其前面两个数之和。即该数列为1,1,2,3,5,8,13,···,用数学方式表示为F1=1 (n=1) F2=1 (n=2) F3=F(n-1)+F(n-2) (n>=3)这是一个有趣的古典数学问题:有一对兔子,从出生后第3个月起每个月都生一对小兔子。小兔子长到3个月后又生一对小兔子。假设所有小兔子都不死,问每个月的兔子总数为多少?
- 例5.9输入一个大于3的整数n,判定它是否为素数
- 例5.10求100~200的全部素数
- 例5.11译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文
- 例6.1对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。
- 例6.2用数组来除理求Fibonacci数列问题
- 例6.3有10个地区的面积,要求对它们按由小到大的顺序排列。
- 例6.4将一个二维数组行和列的元素互换,存到另一个二维数组中。例:a={1 2 3 4 5 6}b={1 4 2 5 3 6}
- 例6.5有一个3*4的矩阵,要求编程序求出其中值最大的那个元素的值,以及所在的行号和列号。
- 例6.6 输出一个已知的字符串
- 例6.7输出一个菱形图
- 例6.8输入一行字符,统计其中有多少单词,单词之间用空格分隔开。
- 例6.9有3个字符串,要求找出其中“最大”者
- 例7.1想输出一下的结果,用函数调用实现******************How do you do!******************
- 例7.2输入两个整数,要求输出其中值较大者。要求用函数来找到最大数。
- 例7.3将例7.2稍作改动,将在max函数中定义的变量z改为float型。函数返回值的类型与指定的函数类型不同,分析其处理方法。
- 例7.4 输入两个实数,用一个函数求出它们之和。
- 例7.5 输入4个整数,找出其中最大值,用函数的嵌套调用来处理
例1.1 要求在屏幕上输出以下一行信息
#include<stdio.h>
int main ( )
{
printf("This is a C program.\n");
return 0;
}
例1.2求两个整数之和
#include<stdio.h>
int main ( )
{
int a,b,sum;
a=123;
b=456;
sum=a+b;
printf("sum is %d\n",sum);
return 0;
}
例1.3求两个整数中的较大值
#include<stdio.h>
int main()
{
int max(int x,int y);
int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b);
printf("max=%d\n",c);
return 0;
}
int max(int x,int y)
{
int z;
if(x>y)
z=x;
else
z=y;
return(z);
}
第二章 算法——程序的灵魂
- 例1.1 要求在屏幕上输出以下一行信息
- 例1.2求两个整数之和
- 例1.3求两个整数中的较大值
- 例2.19(求5!)用C语言表示
- 例2.19(求多项式1-1/2+1/3-1/4+···+1/99-1/100)
- 例3.1有人用温度计测量出用华氏法表示的温度(如64),今要求把它转换为以摄氏法表示的温度
- 例3.2计算存款利息。有1000元,想存一年。有3种方法可选:(1)活期,年利率为r1;(2)一年期定期,年利率为r2;(3)存两次半年定期,年利率为r3。请分别算出一年后按3种方法所得的本息和。
- 例3.3 给定一个大写字母,要求用小写字母输出
- 例3.4给出三角形的三边长,求三角形的面积
- 例3.5求ax*x+bx+c=0方程的根。a,b,c由键盘输入,设b*b-4ac>0
- 例3.6用%f输出实数,只能得到6位小数
- 例3.7float型数据的有效位数
- 例3.8先后输出BOY三个字符
- 例3.9 从键盘输入BOY3个字符,然后把它们输出到屏幕
- 例3.10改例3.3程序,使之可以适用于任何大写字母,从键盘输入一个大写字母,在显示屏上显示对应的小写字母
- 例4.1在例3.5的基础上对程序进行改进。题目要求解得ax*x+bx+c=0方程的根。由键盘输入a,b,c。假设a,b,c旳值任意,并不保证b*b-4ac>=0.需要在程序中进行判别,如果b*b-4ac>=0,就计算并输出方程的两个实根,如果b*b-4ac<0,就输出 “此方程无实根”的信息。
- 例4.2输入两个实数,按由小到大的顺序输出这两个数。
- 例4.3输入三个数a,b,c,要求按由小到大输出
- 例4.4输入一个字符,判别它是否为大写字母,如果是,将它换成小写字母;如果不是,不转换。然后输出最后得到的字符。
- 例4.5有一阶跃函数
- 例4.6要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70~84分,C等为60···69分,D等为60分以下,成绩的等级由键盘输入。
- 例4.7 用switch语句处理菜单命令。在许多应用程序中,用菜单对流程进行控制,例如从键盘输入一个‘A’或'a'字符,就会执行A操作,输入一个‘B’或‘b’字符,就会执行B操作。
- 例4.8写一程序,判断某一年是否为闰年
- 例4.9求ax*x+bx+c=0方程的根
- 例4.10运输公司对用户计算运输费用。路程越远,运费越低。标准如下
- 例5.1求1+2+3+····+100
- 例5.2用do···while语句求1+2+3+····+100
- 例5.3while和do···whil循环比较
- 例5.4在全系1000名学生中举行慈善募捐,当总数达到10万元时就结束,统计此时募捐的人数以及每人捐款的数目
- 例5.5要求输出100~200的不能被3整除的数
- 例5.6输出下列4*5的矩阵
- 例5.7用公式π/4≈1-1/3+1/5-1/7+····求π的近似值,直到发现某一项的绝对值小于10的负六次方为止(该项不累加)
- 例5.8求Fibonacci(斐波那契)数列的前40个数。这个数列有如下特点:第1,2,两个数为1,1.从第3个数开始,该数是其前面两个数之和。即该数列为1,1,2,3,5,8,13,···,用数学方式表示为F1=1 (n=1) F2=1 (n=2) F3=F(n-1)+F(n-2) (n>=3)这是一个有趣的古典数学问题:有一对兔子,从出生后第3个月起每个月都生一对小兔子。小兔子长到3个月后又生一对小兔子。假设所有小兔子都不死,问每个月的兔子总数为多少?
- 例5.9输入一个大于3的整数n,判定它是否为素数
- 例5.10求100~200的全部素数
- 例5.11译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文
- 例6.1对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。
- 例6.2用数组来除理求Fibonacci数列问题
- 例6.3有10个地区的面积,要求对它们按由小到大的顺序排列。
- 例6.4将一个二维数组行和列的元素互换,存到另一个二维数组中。例:a={1 2 3 4 5 6}b={1 4 2 5 3 6}
- 例6.5有一个3*4的矩阵,要求编程序求出其中值最大的那个元素的值,以及所在的行号和列号。
- 例6.6 输出一个已知的字符串
- 例6.7输出一个菱形图
- 例6.8输入一行字符,统计其中有多少单词,单词之间用空格分隔开。
- 例6.9有3个字符串,要求找出其中“最大”者
- 例7.1想输出一下的结果,用函数调用实现******************How do you do!******************
- 例7.2输入两个整数,要求输出其中值较大者。要求用函数来找到最大数。
- 例7.3将例7.2稍作改动,将在max函数中定义的变量z改为float型。函数返回值的类型与指定的函数类型不同,分析其处理方法。
- 例7.4 输入两个实数,用一个函数求出它们之和。
- 例7.5 输入4个整数,找出其中最大值,用函数的嵌套调用来处理
例2.19(求5!)用C语言表示
#include<stdio.h>
int main()
{
int i,t;
t=1;
i=2;
while(i<=5)
{
t=t*i;
i=i++;
}
printf("%d\n",t);
return 0;
}
例2.19(求多项式1-1/2+1/3-1/4+···+1/99-1/100)
#include<stdio.h>
int main()
{
int sign=1;
double deno=2.0,sum=1.0,term;
while(deno<=100)
{
sign=-sign;
term=sign/deno;
sum=sum+term;
deno=deno+1;
}
printf("%f\n",sum);
return 0;
}
第三章 最简单的C程序设计——顺序程序设计
- 例1.1 要求在屏幕上输出以下一行信息
- 例1.2求两个整数之和
- 例1.3求两个整数中的较大值
- 例2.19(求5!)用C语言表示
- 例2.19(求多项式1-1/2+1/3-1/4+···+1/99-1/100)
- 例3.1有人用温度计测量出用华氏法表示的温度(如64),今要求把它转换为以摄氏法表示的温度
- 例3.2计算存款利息。有1000元,想存一年。有3种方法可选:(1)活期,年利率为r1;(2)一年期定期,年利率为r2;(3)存两次半年定期,年利率为r3。请分别算出一年后按3种方法所得的本息和。
- 例3.3 给定一个大写字母,要求用小写字母输出
- 例3.4给出三角形的三边长,求三角形的面积
- 例3.5求ax*x+bx+c=0方程的根。a,b,c由键盘输入,设b*b-4ac>0
- 例3.6用%f输出实数,只能得到6位小数
- 例3.7float型数据的有效位数
- 例3.8先后输出BOY三个字符
- 例3.9 从键盘输入BOY3个字符,然后把它们输出到屏幕
- 例3.10改例3.3程序,使之可以适用于任何大写字母,从键盘输入一个大写字母,在显示屏上显示对应的小写字母
- 例4.1在例3.5的基础上对程序进行改进。题目要求解得ax*x+bx+c=0方程的根。由键盘输入a,b,c。假设a,b,c旳值任意,并不保证b*b-4ac>=0.需要在程序中进行判别,如果b*b-4ac>=0,就计算并输出方程的两个实根,如果b*b-4ac<0,就输出 “此方程无实根”的信息。
- 例4.2输入两个实数,按由小到大的顺序输出这两个数。
- 例4.3输入三个数a,b,c,要求按由小到大输出
- 例4.4输入一个字符,判别它是否为大写字母,如果是,将它换成小写字母;如果不是,不转换。然后输出最后得到的字符。
- 例4.5有一阶跃函数
- 例4.6要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70~84分,C等为60···69分,D等为60分以下,成绩的等级由键盘输入。
- 例4.7 用switch语句处理菜单命令。在许多应用程序中,用菜单对流程进行控制,例如从键盘输入一个‘A’或'a'字符,就会执行A操作,输入一个‘B’或‘b’字符,就会执行B操作。
- 例4.8写一程序,判断某一年是否为闰年
- 例4.9求ax*x+bx+c=0方程的根
- 例4.10运输公司对用户计算运输费用。路程越远,运费越低。标准如下
- 例5.1求1+2+3+····+100
- 例5.2用do···while语句求1+2+3+····+100
- 例5.3while和do···whil循环比较
- 例5.4在全系1000名学生中举行慈善募捐,当总数达到10万元时就结束,统计此时募捐的人数以及每人捐款的数目
- 例5.5要求输出100~200的不能被3整除的数
- 例5.6输出下列4*5的矩阵
- 例5.7用公式π/4≈1-1/3+1/5-1/7+····求π的近似值,直到发现某一项的绝对值小于10的负六次方为止(该项不累加)
- 例5.8求Fibonacci(斐波那契)数列的前40个数。这个数列有如下特点:第1,2,两个数为1,1.从第3个数开始,该数是其前面两个数之和。即该数列为1,1,2,3,5,8,13,···,用数学方式表示为F1=1 (n=1) F2=1 (n=2) F3=F(n-1)+F(n-2) (n>=3)这是一个有趣的古典数学问题:有一对兔子,从出生后第3个月起每个月都生一对小兔子。小兔子长到3个月后又生一对小兔子。假设所有小兔子都不死,问每个月的兔子总数为多少?
- 例5.9输入一个大于3的整数n,判定它是否为素数
- 例5.10求100~200的全部素数
- 例5.11译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文
- 例6.1对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。
- 例6.2用数组来除理求Fibonacci数列问题
- 例6.3有10个地区的面积,要求对它们按由小到大的顺序排列。
- 例6.4将一个二维数组行和列的元素互换,存到另一个二维数组中。例:a={1 2 3 4 5 6}b={1 4 2 5 3 6}
- 例6.5有一个3*4的矩阵,要求编程序求出其中值最大的那个元素的值,以及所在的行号和列号。
- 例6.6 输出一个已知的字符串
- 例6.7输出一个菱形图
- 例6.8输入一行字符,统计其中有多少单词,单词之间用空格分隔开。
- 例6.9有3个字符串,要求找出其中“最大”者
- 例7.1想输出一下的结果,用函数调用实现******************How do you do!******************
- 例7.2输入两个整数,要求输出其中值较大者。要求用函数来找到最大数。
- 例7.3将例7.2稍作改动,将在max函数中定义的变量z改为float型。函数返回值的类型与指定的函数类型不同,分析其处理方法。
- 例7.4 输入两个实数,用一个函数求出它们之和。
- 例7.5 输入4个整数,找出其中最大值,用函数的嵌套调用来处理
例3.1有人用温度计测量出用华氏法表示的温度(如64),今要求把它转换为以摄氏法表示的温度
#include<stdio.h>
int main ( )
{
float f,c;
f=64.0;
c=(5.0/9)*(f-32);
printf("f=%f\nc=%f\n",f,c);
return 0;
}
例3.2计算存款利息。有1000元,想存一年。有3种方法可选:(1)活期,年利率为r1;(2)一年期定期,年利率为r2;(3)存两次半年定期,年利率为r3。请分别算出一年后按3种方法所得的本息和。
#include<stdio.h>
int main( )
{
float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3;
p1=p0*(1+r1);
p2=p0*(1+r2);
p3=p0*(1+r3/2)*(1+r3/2);
printf("p1=%f\np2=%f\np3=%f\n",p1,p2,p3);
return 0;
}
例3.3 给定一个大写字母,要求用小写字母输出
#include<stdio.h>
int main ( )
{
char c1,c2;
c1='A';
c2=c1+32;
printf("%f\n",c2);
printf("%d\n",c2);
return 0;
}
例3.4给出三角形的三边长,求三角形的面积
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,s,area;
a=3.67;
b=5.43;
c=6.21;
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%f\tb=%f\t%f\n",a,b,c);
printf("area=%f\n",area);
return 0;
}
例3.5求axx+bx+c=0方程的根。a,b,c由键盘输入,设bb-4ac>0
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,disc,x1,x2,p,q;
scanf("%lf%lf%lf",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2.0*a);
q=sqrt(disc)/(2.0*a);
x1=p+q;
x2=p-q;
printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);
return 0;
}
例3.6用%f输出实数,只能得到6位小数
#include<stdio.h>
int main()
{
double a=1.0;
printf("%f\n",a/3);
return 0;
}
例3.7float型数据的有效位数
#include<stdio.h>
int main()
{
float a;
a=10000/3.0;
printf("%f\n",a);
return 0;
}
例3.8先后输出BOY三个字符
#include<stdio.h>
int main()
{
char a='B', b='O', c='Y';
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
return 0;
}
例3.9 从键盘输入BOY3个字符,然后把它们输出到屏幕
#include<stdio.h>
int main()
{
char a,b,c;
a=getchar();
b=getchar();
c=getchar();
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
return 0;
}
例3.10改例3.3程序,使之可以适用于任何大写字母,从键盘输入一个大写字母,在显示屏上显示对应的小写字母
#include<stdio.h>
int main()
{
char c1,c2;
c1=getchar();
c2=c1+32;
putchar(c2);
putchar('\n');
return 0;
}
#include<stdio.h>
int main()
{
char c1,c2;
c1=getchar();
c2=c1+32;
printf("大写字母:%c\n小写字母:%c\n",c1,c2);
return 0;
}
第四章 选择结构程序设计
- 例1.1 要求在屏幕上输出以下一行信息
- 例1.2求两个整数之和
- 例1.3求两个整数中的较大值
- 例2.19(求5!)用C语言表示
- 例2.19(求多项式1-1/2+1/3-1/4+···+1/99-1/100)
- 例3.1有人用温度计测量出用华氏法表示的温度(如64),今要求把它转换为以摄氏法表示的温度
- 例3.2计算存款利息。有1000元,想存一年。有3种方法可选:(1)活期,年利率为r1;(2)一年期定期,年利率为r2;(3)存两次半年定期,年利率为r3。请分别算出一年后按3种方法所得的本息和。
- 例3.3 给定一个大写字母,要求用小写字母输出
- 例3.4给出三角形的三边长,求三角形的面积
- 例3.5求ax*x+bx+c=0方程的根。a,b,c由键盘输入,设b*b-4ac>0
- 例3.6用%f输出实数,只能得到6位小数
- 例3.7float型数据的有效位数
- 例3.8先后输出BOY三个字符
- 例3.9 从键盘输入BOY3个字符,然后把它们输出到屏幕
- 例3.10改例3.3程序,使之可以适用于任何大写字母,从键盘输入一个大写字母,在显示屏上显示对应的小写字母
- 例4.1在例3.5的基础上对程序进行改进。题目要求解得ax*x+bx+c=0方程的根。由键盘输入a,b,c。假设a,b,c旳值任意,并不保证b*b-4ac>=0.需要在程序中进行判别,如果b*b-4ac>=0,就计算并输出方程的两个实根,如果b*b-4ac<0,就输出 “此方程无实根”的信息。
- 例4.2输入两个实数,按由小到大的顺序输出这两个数。
- 例4.3输入三个数a,b,c,要求按由小到大输出
- 例4.4输入一个字符,判别它是否为大写字母,如果是,将它换成小写字母;如果不是,不转换。然后输出最后得到的字符。
- 例4.5有一阶跃函数
- 例4.6要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70~84分,C等为60···69分,D等为60分以下,成绩的等级由键盘输入。
- 例4.7 用switch语句处理菜单命令。在许多应用程序中,用菜单对流程进行控制,例如从键盘输入一个‘A’或'a'字符,就会执行A操作,输入一个‘B’或‘b’字符,就会执行B操作。
- 例4.8写一程序,判断某一年是否为闰年
- 例4.9求ax*x+bx+c=0方程的根
- 例4.10运输公司对用户计算运输费用。路程越远,运费越低。标准如下
- 例5.1求1+2+3+····+100
- 例5.2用do···while语句求1+2+3+····+100
- 例5.3while和do···whil循环比较
- 例5.4在全系1000名学生中举行慈善募捐,当总数达到10万元时就结束,统计此时募捐的人数以及每人捐款的数目
- 例5.5要求输出100~200的不能被3整除的数
- 例5.6输出下列4*5的矩阵
- 例5.7用公式π/4≈1-1/3+1/5-1/7+····求π的近似值,直到发现某一项的绝对值小于10的负六次方为止(该项不累加)
- 例5.8求Fibonacci(斐波那契)数列的前40个数。这个数列有如下特点:第1,2,两个数为1,1.从第3个数开始,该数是其前面两个数之和。即该数列为1,1,2,3,5,8,13,···,用数学方式表示为F1=1 (n=1) F2=1 (n=2) F3=F(n-1)+F(n-2) (n>=3)这是一个有趣的古典数学问题:有一对兔子,从出生后第3个月起每个月都生一对小兔子。小兔子长到3个月后又生一对小兔子。假设所有小兔子都不死,问每个月的兔子总数为多少?
- 例5.9输入一个大于3的整数n,判定它是否为素数
- 例5.10求100~200的全部素数
- 例5.11译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文
- 例6.1对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。
- 例6.2用数组来除理求Fibonacci数列问题
- 例6.3有10个地区的面积,要求对它们按由小到大的顺序排列。
- 例6.4将一个二维数组行和列的元素互换,存到另一个二维数组中。例:a={1 2 3 4 5 6}b={1 4 2 5 3 6}
- 例6.5有一个3*4的矩阵,要求编程序求出其中值最大的那个元素的值,以及所在的行号和列号。
- 例6.6 输出一个已知的字符串
- 例6.7输出一个菱形图
- 例6.8输入一行字符,统计其中有多少单词,单词之间用空格分隔开。
- 例6.9有3个字符串,要求找出其中“最大”者
- 例7.1想输出一下的结果,用函数调用实现******************How do you do!******************
- 例7.2输入两个整数,要求输出其中值较大者。要求用函数来找到最大数。
- 例7.3将例7.2稍作改动,将在max函数中定义的变量z改为float型。函数返回值的类型与指定的函数类型不同,分析其处理方法。
- 例7.4 输入两个实数,用一个函数求出它们之和。
- 例7.5 输入4个整数,找出其中最大值,用函数的嵌套调用来处理
例4.1在例3.5的基础上对程序进行改进。题目要求解得axx+bx+c=0方程的根。由键盘输入a,b,c。假设a,b,c旳值任意,并不保证bb-4ac>=0.需要在程序中进行判别,如果bb-4ac>=0,就计算并输出方程的两个实根,如果bb-4ac<0,就输出 “此方程无实根”的信息。
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,disc,x1,x2,p,q;
scanf("%lf%lf%lf",&a,&b,&c);
disc=a*b-4*a*c;
if(disc<0)
printf("This equation hasn't real roots\n");
else
{
p=-b/(2.0*a);
q=sqrt(disc)/(2.0*a);
x1=p+q;
x2=p-q;
printf("real roots:\nx1=%7.2f\n%7.2f\n",x1,x2);
}
return 0;
}
例4.2输入两个实数,按由小到大的顺序输出这两个数。
#include<stdio.h>
int main()
{
float a,b,t;
scanf("%f,%f",&a,&b);
if(a>b)
{
t=a;
a=b;
t=b;
}
printf("%5.2f,%5.2f\n",a,b);
return 0;
}
例4.3输入三个数a,b,c,要求按由小到大输出
#include<stdio.h>
int main()
{
float a,b,c,t;
scanf("%f,%f,%f",&a,&b,&c);
if(a>b)
{
t=a;
a=b;
b=t;
}
if(a>c)
{
t=a;
a=c;
c=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
printf("%5.2f,%5.2f,%5.2f\n",a,b,c);
return 0;
}
例4.4输入一个字符,判别它是否为大写字母,如果是,将它换成小写字母;如果不是,不转换。然后输出最后得到的字符。
#include<stdio.h>
int main()
{
char ch;
scanf("%c",&ch);
ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
printf("%c\n",ch);
return 0;
}
例4.5有一阶跃函数
y= -1 (x<0)
0 (x=0)
1 (x>0)
编一程序,输入一个x值,要求输出相应的y值
#include<stdio.h>
int main()
{
int x,y;
scanf("%d",&x);
if(x<0)
y=-1;
else if(x==0)
y=0;
else
y=1;
printf("x=%d,y=%d\n",x,y);
return 0;
}
#include<stdio.h>
int main()
{
int x,y;
scanf("%d",&x);
if(x>=0)
if(x>0) y=1;
else y=0;
else y=-1;
printf("x=%d,y=%d\n",x,y);
return 0;
}
例4.6要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70~84分,C等为60···69分,D等为60分以下,成绩的等级由键盘输入。
#include<stdio.h>
int main()
{
char grade;
scanf("%c",&grade);
printf("Your score:");
switch(grade)
{
case 'A':printf("85~100\n"); break;
case 'B':printf("70~84\n"); break;
case 'C':printf("60~69\n"); break;
case 'D':printf("<60\n"); break;
default:printf("enter date error!\n");
}
return 0;
}
例4.7 用switch语句处理菜单命令。在许多应用程序中,用菜单对流程进行控制,例如从键盘输入一个‘A’或’a’字符,就会执行A操作,输入一个‘B’或‘b’字符,就会执行B操作。
#include<stdio.h>
int main()
{
void action1 (int,int),action2 (int,int);
char ch;
int a=15,b=23;
ch=getchar();
switch(ch)
{
case 'a':
case 'A':action1(a,b); break;
case 'b':
case 'B':action2(a,b); break;
·
·
·
default:putchar('\a');
}
return 0;
}
例4.8写一程序,判断某一年是否为闰年
#include<stdio.h>
int main()
{
int year,leap;
printf("enter year");
scanf("%d",&year);
if(year%4==0)
{
if(year%100==0