1.拾遗补缺;
2.了解C语言及其语句的更多细节.
任务1提示:在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。
例如,
int b=2,c=7,d=5;
a1=(++b,c--,d+3);
a2=++b;c--,d+3;
对于第二行代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是d+3,为8,所以a1=8。
对于第三行代码,那么也是有三个表达式,这时的三个表达式为a2=++b、c--、d+3,(这
是因为赋值运算符比逗号运算符优先级高)所以最终表达式的值虽然也为8,但a2=4。
注意:逗号运算的结合性是从左至右,完毕之后整个表达式的值是最后一个表达式的值。
任务1:分析下面的例子,给出z和w的计算值、说明为什么?
例子:
int z,w,x=2,y=5;
z= (x+3,y++,x++);
w = (x++,x+3,x+7);
解释:因为z的数值是等于最后一个,即z=x=x+1,所以Z=2,而式子本身还是在运算的,所以X的值一直在发生改变,所以W=4+7=11
------------------------------------任务分割线------------------------------------
任务2提示:除了if...else外,C语言还提供了另一种用于多分支选择的switch语句, 其一般形式为:
switch(表达式){
case常量表达式1: 语句1;
case常量表达式2: 语句2;
…
case常量表达式n: 语句n;
default:语句n+1;
}
其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
下面是switch语句典型用法:
#include <stdio.h>
int main()
{
int a;
printf("输入星期: ");
scanf_s("%d",&a);
switch (a){
case 1:printf("Monday\n");break; // 如果输入1,执行此行代码
case 2:printf("Tuesday\n"); break; // 如果输入2,执行此行代码
case 3:printf("Wednesday\n");break; // 如果输入3,执行此行代码
default:printf("error\n");
return 0;
}
}
任务2:自行设计一个程序,程序须运用switch语句。要求有一定技术含量!
程序代码:
#include <stdio.h>
int main()
{
int a,b,c,d,e,f,m,n,g,h,k;
printf("欢迎来到有奖竞答栏目,请选择1-5的数字:");
loop:printf("欢迎再次来到该栏目,请重新选择数字:");
scanf_s("%d",&a);
switch (a)
{
case 1:printf("1. 什么样的路不能走\n");
printf("1 公路 2 马路 3 电路\n");
scanf("%d",&b);
if (b==3){
printf("恭喜你答对了,请选择是否继续 ,1or0\n");
scanf("%d",&m);}
else
{printf("遗憾 你错了,请选择是否继续 ,1or0\n");
scanf("%d",&m);}
if (m==1)
goto loop ;break ;
case 2:printf("2. 举重时运动员为什么搓白粉?\n");
printf("1 使手变的粗糙 2 吸取手上的汗 3 刺激肌肉\n");
scanf_s("%d",&c);
if (c==2){
printf("恭喜你答对了,请选择是否继续 ,1or0\n");
scanf_s("%d",&n);}
else
{printf("遗憾 你错了,请选择是否继续 ,1or0\n");
scanf("%d",&n);}
if (n==1)
goto loop ;
break ;
case 3:printf("3. 18世纪德国贵族热衷于收集并定制各种树木做的“木头书”,以木头做成的盒子,盒面用树皮制作,你知道盒子里面都用来装什么?\n");
printf("1 情人来往的信件 2 首饰 3 与此木头有关的如树叶,果实等\n");
scanf_s("%d",&d);
if (d==3){
printf("恭喜你答对了,请选择是否继续 ,1or0\n");
scanf_s("%d",&g);}
else
{printf("遗憾 你错了,请选择是否继续 ,1or0\n");
scanf("%d",&n);}
if (g==1)
goto loop ;
break ;
case 4:printf("4. 鸵鸟遇到惊吓或敌害时可能会?\n");
printf("1 把头埋进沙子里 2 将脖子平贴地面 3 把全身都埋进沙子里\n");
scanf_s("%d",&e);
if (e==2){
printf("恭喜你答对了,请选择是否继续,1or0\n");
scanf_s("%d",&h);}
else
{printf("遗憾 你错了,请选择是否继续 ,1or0\n");
scanf("%d",&n);}
if (h==1)
goto loop ;
break ;
case 5:printf("5. 问仓储超市与其它超市最大的不同点是什么?\n");
printf("1 铺房简陋 2 储售场地合一\n");
scanf_s("%d",&f);
if (f==2){
printf("恭喜你答对了,请选择是否继续 ,1or0\n");
scanf_s("%d",&k);}
else
{printf("遗憾 你错了,请选择是否继续 ,1or0\n");
scanf("%d",&n);}
if (g==1)
goto loop ;
break ;
default:printf("error\n");
return 0;
}
}
图片如下:
任务3: 自行设计一个程序,程序须运用break和continue语句。要求有一定技术含量!..
------------------------------------任务分割线-----------------------------------
程序:
#include<stdio.h>
int main()
{ int a=1,b;
while (a>0)
{ b=a%2;
if(b==1)
{printf("%3d",a);
a++;
continue;}
if (a==32)
break;
a++;
}
}
图片: