当前位置:文档之家› C语言实验(分支结构程序设计)

C语言实验(分支结构程序设计)

实验1 分支结构程序设计
(假期自学用)
【实验目的】
1.掌握C语言逻辑量的表示方法(以0代表“假”,1代表“真”)。

学会正确地使用关系表达式和逻辑表达式。

2.掌握用if语句实现选择结构。

3.掌握用switch语句实现多分支选择结构。

4.掌握选择结构的嵌套。

【样例】
实验内容:从键盘输入一年份,判断年份是否为闰年。

说明:注意程序的输入和输出分别是什么。

参考程序如下:
#include <stdio.h>
void main( )
{
int year;
scanf("%d", &year); /*键盘输入年份值*/
if (year%4==0&&year%100!=0 || year%400==0)
printf("This year is a leap year!\n"); /*如果是则输出是闰年*/
else
printf("This year is not a leap year!"); /*否则输出不是闰年*/ }
注意:程序的书写风格,要求或括号对齐,程序采用缩进排列。

题目一:完善下列程序并回答问题
???实验内容:已知一函数:
-1 x<0
y= 0 x=0
1 x>0
现有4个程序段:
A) if(x<0) y=-1; else if(x= =0) y=0;
else y=1;
B) y=-1;
if(x! =0)
if(x>0) y=1;
else y=0; C) y=0;
if(x>=0)
{if(x>0) y=1;} else y=-1;
D) if(x>=0)
if(x>0) y=1;
else y=0;
else y=-1;
问题:哪个程序段不能实现此函数关系?为什么?请用缩进格式编写完整的程序并上机调试。

题目二:运行程序并回答问题
void main( )
{ int a,b,max,min;
scanf("%d%d",&a,&b);
if(a>b)
{ max=a;min=b;}
else
{ min=a;max=b; }
printf("max=%d,min=%d\n",max,min);
}
实验内容:
a、此程序的功能是什么? 比较两个数的大小,输出最大和最小值。

b、请用条件表达式语句(?:)修改程序使之完成相同的功能。

Void main()
{ int a,b;
scanf("%d%d",&a,&b);
(a>b)?printf(“a,b”):printf(max=b,a)
}
题目三:判断正整数。

实验内容:输入一个不大于4位的正整数,判断它是几位数,然后输出各位之积。

参考程序:
void main( )
{ int x,a,b,c,d,n;
printf("请输入个不大于4位的正整数X:");
scanf("%d",&x);
if(x>999)
n=4;
if(x>99)
n=3;
if(x>9)
n=2;
else
n=1;
a=x/1000; /* x的个,十,百,千位分别用d,c,b,a表示*/
b=(x-a*1000)/100;
c=(x-a*1000-b*100)/10;
d=x%10; /*最低位可用求余方法计算*/
swith(D)
{
case 4:printf("%d*%d*%d*%d=%d\n", a,b,c,d, a*b*d*c); /*a b c d 四个数相乘=*/ break;
case 3:printf(“%d*%d*%d=%d\n”,b,c,d,b*c*d);
break;
case 2:printf(“%d*%d=%d\n”,c,d=c*d);
break;
case 1:printf(“%d\n”,d);
break;
}
}
题目四:
实验内容:三个整数a,b,c,由键盘输入这三个数,求三个数中最大的值。

main()
{ int a,b,c;
printf(“input a,b,c:”);
scanf(“%d;%d;%d”,&a,&b,&c);
if(a<b)
if(b<c)
printf(“max=%d\n”,c);
else
printf(“max=%d\n”,b);
else
if(a<c)
printf(“max=%d\n”,c);
else
printf(“max=%d\n”,a);
}
问题:运行上面的程序,分析if和else是哪两个相互“配对”,在书写程序时,分出层次,这样有利于程序的可读性,容易查找出错误。

此程序还有更加简明的方法实现,就是利用三目运算符?:。

main()
{ int a,b,c,max,t;
printf(“input a,b,c:”);
scanf(“%d,%d,%d”,&a,&b,&c);
t=(a>b)? a : b;
max=(t>c)?t : c;
printf(“max=%d”,ma x);
}
问题:可利用此程序,考虑怎样修改求出三个数中的最小值。

题目五:
????实验内容:先读下面程序,分析if和else是哪两个相互“配对”,重新给程序进行缩排,分出层次。

分析程序的执行结果,然后再上机运行,看结果是否一致。

main()
{ int x,y=1,z;
if (y!=0) x=5;
printf(“x=%d\t”,x);
if (y= =0) x=3;
else x=5;
printf(“x=%d\t\n”,x);
x=1;
if(z<0)
if(y>0) x=3;
else x=5;
printf(“x=%d\t\n”,x);
if (z=y<0) x=3
else if (y= =0) x=5;
else x=7;
printf(“x=%d\t”,x);
printf(“z=%d\t\n”,z);
if (x=z=y) x=3;
printf(“x=%d\t”,x);
printf(“z=%d\t\n”,z);
}
题目六:百分制成绩
实验内容:给出一个百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。

(90分以上为‘A’,81~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。


#include<stdio.h>
main()
{
Int score,mark;
printf(“Please enter score:”)
scanf(“%d”,&score);
mark=score/10; /*采用整除的方法,将mark取值压缩到有限的取值范围内*/ switch(mark)
{
case 10:
case 9:
printf(%d—A\n”,score);
break
case 8:
printf(%d—B\n”,score);
break
case 7:
printf(%d—C\n”,score);
break
case 6:
printf(%d—D\n”,score);
break
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
printf(%d—E\n”,score);
break
default:
printf(“input error!\n”);
}
}。

相关主题