实验三各种分支结构 一,实验目的 1.了解C语言中表示逻辑量的方法(以0代表“假”,以1代表“真”)。 2,正确使用C语言中的逻辑运算符和逻辑表达式」 3. 熟练掌握if语句,if-else语句和switch-case语句 二.实验要点 在C语言中主要用以下方法实现分支结构: l.if-else语句格式:if(表达式) 语句块1 else 语句块2 若表达式的值为真,就执行语句块1:否则,执行语句块2。 2.switch-case语句 if语句只有两个分支可供选择,switch语句可以提供多个分支选择。 switch-case语句格式: switch(表达式) case 常量1:语句1: case常量2:语句2: case常量3:语句3: case常量4:语句4: default: 语句” 三.实验要求 1.上机前编写好以下程序。(1为程序改错,2-6为填空) 2.上机输入和调试自己所编的程序并存在自己的软盘上。 3.检查实验结果是否正确。 4.上机结束后,整理实验报告 四.实验内容 上机调通以下程序, 并写出以下程序的输出结果 改正以下程序的错误,并上机调通,程序完成输入两个数,按由小到大的顺序 输出。 main(){ int a,b: scanf(%d,%d,a,b):
实验三 各种分支结构 一. 实验目的 1. 了解 C 语言中表示逻辑量的方法(以 0 代表“假”,以 1 代表“真”)。 2. 正确使用 C 语言中的逻辑运算符和逻辑表达式。 3. 熟练掌握 if 语句,if-else 语句和 switch-case 语句。 二. 实验要点 在 C 语言中主要用以下方法实现分支结构: 1. if-else 语句 格式:if(表达式) 语句块 1 else 语句块 2 若表达式的值为真,就执行语句块 1;否则,执行语句块 2。 2.switch-case 语句 if 语句只有两个分支可供选择,switch 语句可以提供多个分支选择。 switch-case 语句格式: switch (表达式) { case 常量 1: 语句 1; case 常量 2: 语句 2; case 常量 3: 语句 3; case 常量 4: 语句 4; default: 语句 n } 三. 实验要求 1. 上机前编写好以下程序。(1 为程序改错,2-6 为填空) 2. 上机输入和调试自己所编的程序并存在自己的软盘上。 3. 检查实验结果是否正确。 4. 上机结束后,整理实验报告。 四. 实验内容 上机调通以下程序,并写出以下程序的输出结果。 改正以下程序的错误,并上机调通,程序完成输入两个数,按由小到大的顺序 输出。 main(){ int a,b; scanf(“%d,%d”,a,b);
if(a>b) c=hh=a·a=c 4555<CR2CR2表回车 输出-55.45 改正: main(f int a,b,c scanf d,%dr,&a,&b) if(a>b) ic=b:b=a:a=c: printf(%d,%d",a,b): 以下程序的输出结果是(1 0 )。 main() printf(%dt”,3&&6&&9) printf(%dt”,36o: 有一函数 (x<1) y2x-1(1≤x<10) 、3x-11(x≥10) 用scanf函数输入x的值,求y的值。请在【】内填入正确内容,并上机把 程序调通,写出运行结果。 main(){ int x,y; printf("Please input x:"); scanf(%d”.【&X】): if(x<1) y=x: printf(“x=%d,y=x=%dn”,x,y): 1 else if(【x<10】) {y=2*x-1: printf(“x=%d,y=2*x-l=%d八n”,x,y): else {y=【3*x-11】; printf(x=%d,y=3*x-ll=%d小n”,x,y):} 运行结果: Please input x:4CR>≥<CR>表回车) 输出X=4y=2*x1=7 Please input x:-l<CR><CR>表回车)
if(a>b) c=b;b=a;a=c; printf(“%d,%d”,a,b);} 输入 45,-55<CR>(<CR>表回车) 输出 –55,45 改正: main(){ int a,b,c; scanf(“%d,%d”,&a,&b); if(a>b) {c=b;b=a;a=c;} printf(“%d,%d”,a,b);} 以下程序的输出结果是( 1 1 0 )。 main(){ printf(“%d\t”,3&&6&&9); printf(“%d\t”,3||6||!0); printf(“%d\n”,0&&1||0); } 有一函数 x (x<1) y= 2x-1 (1≤x<10) 3x-11 (x≥10) 用 scanf 函数输入 x 的值,求 y 的值。请在【 】内填入正确内容,并上机把 程序调通,写出运行结果。 main(){ int x,y; printf(“Please input x:”); scanf(“%d”,【 &x 】); if(x<1) { y=x; printf(“x=%d, y=x=%d\n”,x,y); } else if(【 x<10 】) { y=2*x-1; printf(“x=%d,y=2*x-1=%d\n”,x,y);} else { y=【3*x-11 】; printf(“x=%d,y=3*x-11=%d\n”,x,y);} } 运行结果: Please input x:4<CR>(<CR>表回车) 输出 x=4,y=2*x-1=7 Please input x:-1<CR>(<CR>表回车)
输出X=1y=x=1 einput x:20<CR>(CR>表回车) 输出x=20.y=3*x-11=49 4.以下程序对输入的一个小写字母,将字母循环后移5个位置后输出.如''成'f”, w变成b.请在【】内填入正确内容. #include“stdio.h main( char c; c=getchar(: if(【c>='a&c<=u'】)c=c+5; else if(c>=v'&最c<ez) 【c=c-21】: putchar(c) 输入X<CR<CR>表回车) 输出c 5.以下程序完成输入数字1-7,打印出对应的英文(Monday-Sunday).请在 【】内填入正确内容 #include <stdio.h main( int a printf("please input a numbern") scanf("%d",&a). if(【a>-1&&a<-7 】 switch (a) {caseI:printf("Monday"y【break】; case 2:printf("Tuesday").break. case 3:printf("Wednesday");break; case 4:printf("Thursday");break; 【case5:】:printf"Friday"),break case 6:printf("Saturday")break, case 7. p unday"),break else printf("input error"); 运行结果: please inpu I<CR><CR>表回车) 输出Monday please input a numbe 15<CR<CR>表回车)
输出 x=-1,y=x=-1 Please input x:20<CR>(<CR>表回车) 输出 x=20,y=3*x-11=49 4. 以下程序对输入的一个小写字母,将字母循环后移 5 个位置后输出.如’a’成’f’, ‘w’变成’b’.请在【 】内填入正确内容. #include “stdio.h” main() { char c; c=getchar(); if (【 c>=’a’&&c<=’u’ 】) c=c+5; else if (c>=’v’ && c<=’z’) 【 c=c-21 】; putchar(c); } 输入 x<CR>(<CR>表回车) 输出 c 5. 以下程序完成输入数字 1-7,打印出对应的英文(Monday-Sunday). 请在 【 】内填入正确内容。 #include <stdio.h> main() { int a; printf("please input a number\n"); scanf("%d",&a); if (【 a>=1&&a<=7 】) { switch (a) { case 1: printf("Monday"); 【break 】; case 2: printf("Tuesday");break; case 3: printf("Wednesday"); break; case 4: printf("Thursday"); break; 【case 5: 】: printf("Friday"); break; case 6: printf("Saturday");break; case 7: printf("Sunday"); break; } } else printf("input error"); } 运行结果: please input a number 1<CR>(<CR>表回车) 输出 Monday please input a number 15<CR>(<CR>表回车)
输出input error 6.以下程序给出一百分制成绩,要求输出成绩等级‘A'90分以上,B:80-89, C:70-79,D:60-69,E:60分以下,请在【 】内填入正确内容。 #include <stdio h> main( int score,temp,log: char grade; 10g=1 while(log) printf("pleas nter score:") scanf(%d",【&score if((score10(score<0)) printf(n error try again!\n): else log=0: if(score==100)temp=9, core-score%10)/10: 【{ case I: case 2: case 3: case 4: case 5: case 0:grade=E';break; case6:【grade=D'】break; case 7:grade='Cbreak case g. case 9. ade='B'.br grade='A' printf("score=%d,grade=%cn",score,grade); 运行结果: 输出score=-90.grade=A please enter score 68<CR<CR>表回车) 输出score-68.gade=D 作业:
输出 input error 6.以下程序给出一百分制成绩,要求输出成绩等级‘A’90 分以上,B:80-89, C:70-79,D:60-69,E: 60 分以下,请在【 】内填入正确内容。 #include <stdio.h> main() { int score,temp,log; char grade; log=1; while(log) { printf(" please enter score:"); scanf("%d",【 &score 】); if((score>100)||(score<0)) printf(“\n error,try again!\n”); else log=0;} if(score==100)temp=9; else temp=(score-score%10)/10; switch(temp) 【 { 】 case 1: case 2: case 3: case 4: case 5: case 0: grade ='E'; break; case 6: 【 grade=’D’ 】 break; case 7: grade='C';break case 8: grade=’B’;break; case 9: 【 grade=’A’; 】 } printf( "score=%d,grade=%c\n",score,grade); } 运行结果: please enter score: 90<CR>(<CR>表回车) 输出 score=90,grade=A please enter score: 68<CR>(<CR>表回车) 输出 score=68,grade=D 作业:
一 填空题 1.有intx=3,y=4,z=5;则 A)表达式!(x>y)+(y=z)(x+y)&(y-z)的值为【1】。 B)表达式x+y>zk&y=z的值为【0】 C)表达式 y*z&y-2的值为【1】 D)表达式!(xy)&!z1的值为【1】 E)表达式!(x=y)&!(y=2)川0的值为【0】 F)表达式!(x+y)+2-1&&y+Z/2的值为1 2.如下程序要求输入整数a和b,若a+b大于100,则输出a+b百位以上的数 字,否则输出两数之和,请在【 】内填入正确内容。 main() {inta,b,【x】,y: scanf ("%d %d"&a.&b) {y=【x/100】 printf("\n a+b>100,%d",y) else printf("\n a'+b*<=100 %d",a+b) 3.如下程序完成判断输入的正整数是否既是5又是7的整数倍。若是,则输出 yes,否则输出no,请在【 】内填入正确内容。 main() (int x: printf(nplease input adata" (0) &&【x%7-0】) printf("yes")方 else【printf"no” 】: 4.下面程序的执行结果是(3) main( int c.a a-((float)(72>3.5(c=2,c+2)3 printf(dn"a), 5.下面程序的执行结果是(14,4) int a=10,b=0;
一. 填空题 1.有 int x=3, y=4, z=5; 则 A)表达式 !(x>y)+(y!=z) || (x+y) && (y-z) 的值为【 1 】。 B)表达式 x+y>z&&y==z 的值为【 0 】 C)表达式 x||y+z&&y-z 的值为【 1 】 D)表达式 !(x>y)&&!z||1 的值为【 1 】 E)表达式 !(x==y)&&!(y==z)||0 的值为【 0 】 F)表达式 !(x+y)+z-1&&y+z/2 的值为【 1 】 2.如下程序要求输入整数 a 和 b,若 a 2 +b2大于 100,则输出 a 2 +b2百位以上的数 字,否则输出两数之和,请在【 】内填入正确内容。 main() {int a,b, 【 x 】,y; scanf("%d %d",&a,&b); x=a*a+b*b; if (【 x>100 】) { y=【 x/100 】; printf("\n a 2 +b2 >100, %d",y);} else printf("\n a 2 +b2 <=100 %d",a+b); } 3.如下程序完成判断输入的正整数是否既是 5 又是 7 的整数倍。若是,则输出 yes,否则输出 no,请在【 】内填入正确内容。 main() {int x; printf(“\nplease input a data:”); scanf("%d",&x); if (【x%5==0 】 && 【x%7==0 】) printf("yes"); else 【printf(“no” 】; } 4. 下面程序的执行结果是( 3 ) main() { int c,a; a=(float)(7/2)>3.5?(c=2,c+2):3; printf("%d\n",a); } 5.下面程序的执行结果是( 14,4 ) main() { int a=10,b=0;