程序3:求一个四位整数的各个数据位。
#include “stdio.h” /*文件包含命令*/
main( ) /*主函数*/
{ int num,bit1,bit2,bit3,bit4; /*定义四个实型变量*/ printf(“input a number:”) /*显示提示信息*/ scanf(“%d”,&num); /*接收一个整型数据*/ bit1=num; /*求个位数字*/ bit2=num/10; /*求十位数字*/ bit3=num/100; /*求百位数字*/ bit4=num/1000 ; /*求千位数字*/
printf(“%d个位:%d,十位:%d,百位:%d,千位:%d”,num,bit1,bit2,bit3,bit4); /*输出整数和各数据位*/ }
运行结果:
input a number:2345
2345个位:5,十位:4,百位:3,千位:2 程序4:交换两个变量的值。 #include “stdio.h” main( )
{ int a,b,t;
printf(“input two numbers:”)
scanf(“%d%d”,&a,&b);
printf(“a=%d,b=%d”,a,b); /*输出交换之前变量的值*/ t=a;a=b;b=t; /*交换处理*/
printf(“a=%d,b=%d”,a,b); /*输出交换之后变量的值*/ }
运行结果:
input two numbers:34 56 a=34,b=56 a=56,c=34
程序5:求一元二次方程的根。
#include “stdio.h”
# include “math.h” /*数学函数的头文件*/ main( ) {
float a,b,c,disc,x1,x2,p,q;
scanf(“a=%f,b=%f,c=%f”,&a,&b,&c); disc=b*b-4*a*c; p= -b/(2*a);
q=sqrt(disc)/(2*a); x1=p+q; x2=p-q;
printf(“x1=%5.2f; x2=%5.2f\\n”,x1,x2); } 运行结果:
a=1,b=5,c=3
x1=-0.70; x2=-4.30 实训题目
1、编程求两个实数之差,保留两位小数。 2、编程把小写字母转换为大写字母。
3、编程把一个三位数倒序输出,如输入是123,输出为321。
第三部分 结构化程序设计与算法认识
(分支结构程序设计)
[实训目的及要求]通过本次实训,掌握if语句的使用和switch多分支选择结构的实现,并能熟练的进行应用。
程序1、任意输入一个年份,判断是否是闰年。闰年的条件是符合下面条件之一: (1)能被4整除,但不能被100整除; (2)能被4整除,又能被400整除。 算法思路:
(1)输入年份(如:2007); (2)判断是否为闰年; 判断闰年的表达式: 条件一:
能被4整除:year%4= =0
不能被100整除:year0!=0 组合:(year%4= =0 && year0!=0) 条件二:
能被4整除:year%4= =0 能被400整除:year@0==0 组合:(year%4= =0 && year@0==0) 总条件式:(year%4= =0 && year0!=0)||(year%4= =0 && year@0==0) 可改写为:((year%4= =0) && (year0!=0)) || (year@0==0)
(3)若是,输出“2007是闰年”信息;若不是,则输出“2007不是闰年”。 #include “stdio.h” main() {int year;
printf(“请输入年份:”); scanf(“%d”,&year);
if((year%4= =0) && (year0!=0)) || (year@0==0) printf(“%d 是闰年\\n”,year); else printf(“%d 不是闰年\\n”,year); }
程序2、输入三角形的三边长,求三角形的面积。 算法思路:
(1)通过键盘输入三边长的值a,b,c; (2)判断是否构成三角形;
条件式: (a+b>c)&&(b+c>a)&&(a+c>b)
(3)若能构成,计算三角形的面积并输出;若不能构成则输出错误提示信息。 #include “stdio.h”
#include “math.h” main()
{float a,b,c,l,s;
printf(“请输入三角形的三个边长:”); scanf(“%f%f%f”,&a,&b,&c);
if((a+b>c)&&(b+c>a)&&(a+c>b)) {l=(a+b+c)/2;
s=sqrt(l*(l-a)*(l-b)*(l-c)) printf(“面积S=%.2f”,s); }
else printf(“构不成三角形!\\n”); }
程序3、任意输入一个成绩,给出评语:
90-100:优秀; 80-89:良好; 60-79:及格; 0-59:不及格。 算法思路:
(1)输入一个成绩数,存入变量score; (2)判断score在哪个分数段中;
(3)根据所在分数段输出对应的评语。 #include “stdio.h” main() {
int score;
printf(“input your score:”); scanf(“%d”,&score);
if(score>100||score<0) printf(“input error.\\n”); else if(score>=90) printf(“优秀.\\n”);
else if(score>=80) printf(“良好.\\n”);
else if(score>=60) printf(“及格.\\n”);
else printf(“不及格.\\n”); }
实训题目
1、用if语句实现菜单功能。
************************************* * 1---成绩输入 *
* 2—成绩插入 * * 3---成绩查询 * * 4---成绩排序 * * 5---成绩删除 * * 6---成绩输出 * * 0---退出 * ************************************* 请输入你的选择(0---6): 2、任意输入三个数据按从大到小的顺序输出。
3、编程实现:读入两个整型数据及一个运算符(+ - * /),计算表达式的值。 4、用switch语句实现菜单功能。
5、用switch语句编程实现:读入两个整型数据及一个运算符(+ - * /),计算表达式的值。 6、用switch开关语句实现猜词游戏。
第三部分 结构化程序设计与算法认识
(C循环结构程序设计)
[实训目的及要求]通过本次实训,掌握循环语句for、while和do-while的使用和break和continue的功能,并能熟练的进行应用。 程序1、编程求1+2+3+···+100的和。 算法思路:
1、用变量sum作为累加器,存放和;
2、用变量i表示累加变量,分别存放1,2,3,…,100; 3、当i≤100时,执行sum=sum+i;(等价于sum+=i;);
4、当i的值超过100的时候, 不再执行sum=sum+i; 输出sum的值。 方法一(while结构) #include “stdio.h” main( ) {
int sum=0, i=1; /*变量初始化*/ while (i<=100) {
sum=sum+i; i++; } printf(\ }
方法二(do-while结构) #include “stdio.h” main( ) {
int sum=0, i=0; do {
sum=sum+i; i++;
} while (i<=100)
printf(\ }
方法三(for结构)
#include “stdio.h” {
int i,sum=0;
for(i=0;i<=100;i++) sum=sum+i;
printf(“sum=%d\\n”,sum); }
程序2、求1到100之间的奇数之和,偶数之积 。 思路:
1、用变量sum存放奇数之和,用变量mul存放和; 2、用变量i表示累加变量,分别存放1,2,3,…,100; 3、当i≤100时,若i是奇数执行sum=sum+i; 是偶数执行mul=mul*i;
4、当i的值超过100的时候,不再执行求和和求积操作;输出sum和mul的值。 方法一(while结构) #include “stdio.h” main( ) { double mul=1; /*双精度类型*/ int i=1,sum=0; while (i<=100) {
if (i%2!=0) sum=sum+i; else mul=mul*i; i++;
} printf(\ printf(“mul=%e\\n”,mul); /*科学计数法输出*/ } 方法二(for 结构) #include “stdio.h” main( ) {
int i,sum=0; double mul=1;
for(i=1;i<=100;i++)
if(i%2= =1) sum=sum+i; else mul=mul*i;
printf(“sum=%d,mul=%e\\n”,sum,mul); }
程序3、把输入的一行字符原样输出,若是大写字母需要转换成小写的。 思路:
1、通过键盘接收一个字符;
2、判断该字符是否为回车符;是转第4步,不是转到第3步;
3、判断接收的字符是否为大写字母,是转换为小写字母并输出,不是则直接输出,程序转回到第1步; 4、程序结束。