X=0;y=2;Z=3
在你的代码片段中switch(x)的每个case后面都跟了一条switch语句,下面我给你整理了一下它们的隶属关系,然后进行了分析:
switch(x)
{
case
0:switch(y==2)
{
case
1:printf("");break;
case
2:printf("%");break;
}
case
1:switch(z)
{
case
1:printf("$");
case
2:printf("");
defalut
:printf("#")
;
}
}
首先
switch(x)由于x的值为0,所以进入case
0:而后面的语句又是一switch语句即switch(y==2)由于y的值为2,所以y==2的值为1,因此进入
switch(y==2)
{
case
1:printf("");break;
case
2:printf("%");break;
}
中的case
1:
输出,然后break结束这个switch(y==2),然后进入外层switch的case
1:进入switch(z)由于z的值为3,所以执行printf("#")
;
输出#,结束。
因此最终输出结果为:#
很简单,for循环里面嵌套一个switch语句,所以我们从for循环开始看
首先k的初值是5,然后每次循环递减1(k--),所以k在6次循环中的取值分别为:
5, 4, 3, 2, 1, 0
接下来把这6个值按从左到右的顺序代入switch语句中,就和解方程一样:
1、k=5,switch中执行的语句为 case 5:s++;break; 所以s此时为1(s初值为0),接着执行 break跳出此次switch。
2、k=4,switch中执行语句为:case 4: break; 即什么都不执行就直接break。
3、k=3,switch中执行语句为:case 3:
case 4:break;(两个语句,直到看见break才停止)。
4、k=2,switch中执行语句为:case 2:s+=2;break; 此时s = 3 (1 + 2 = 3),跳出switch。
5、k=1,switch中执行语句为:case 1:
case 5:s++;break; 此时s = 4,跳出switch。
6、k=0,switch中执行语句为:case 0:
case 2:s+=2;break;此时s = 6,跳出switch。
接着k的值 = -1,此时不满足for循环条件,跳出for循环,输出 s = 6
可以。
#include<stdioh>
int main()
{
int cs;
do {
printf("input times -- the value must > 0\n");
scanf("%d",&cs);
} while (cs<0);
switch(cs){
case 0: printf("0\n");break;
case 1: printf("1\n");break;
case 2: case 3: printf("2\n");break;
case 4: printf("4\n");break;
case 5: printf("5\n");break;
case 6: printf("6\n");break;
case 7: printf("7\n");break;
case 8:case 9:case 10: printf("8\n");break;
default: printf("10\n");break;
}
return 0;
}
int a=15,b=21,m=0;
switch(a%3) // 由于a=15,所以a%3=0
{
case 0: // 执行这个代码。
m++;
break; // 执行完后,由于有一个break;所以跳出了这个switch(a%3)。
case 1:
m++;
switch(b%2) // 这个switch是在case 1:里面。所以不会执行。
{
default:
m++;
case 0:
m++;
break;
}
}
printf("%d\n",m);
这位同学,你还没有弄明白m++和++m区别!
①m++:++是在后面,很形象的可以看出,m的值是先使用,再+1;就是你的SWITCH语句中,先使用m的值,当下面再次出现m时,m的值便是m+1;
②++m:++是在前面,也就是说,m的值是先+1,再使用!你的SWITCH语句中,用这个++m,才能是先把m的值+1,变成'D',才能得到你的结果!
所以,你的SWITCH语句中并没有执行m+1这条指令。还是m='C'!而case'c':case'C'printf("pass");后面没有break;,如果你加上break,结果就是"pass“了!
很简单,就是区别m++和++m;打字不容易,希望能帮到你!
#include<stdioh>
int main() {
// 金额的四个梯度
int arrAmount[] = { 1000, 500, 200, 0 };
// 每个梯度对应的折扣
double arrDiscount[] = { 07, 08, 09, 10 };
int index = -1, i = 0;
double discount = 10, realAmount = 0;
printf("请输入金额:");
int amount;
scanf("%d", &amount);
if (amount < 0) {
printf("输入金额必须为非负数");
return 1;
}
// 查找当前输入金额所对应的折扣率
for (i = 0; i < 4; i++) {
if (amount >= arrAmount[i]) {
index = i;
break;
}
}
// 当前金额对应的折扣率计算
switch(index) {
case 0:
discount = arrDiscount[0];
realAmount = amount arrDiscount[0];
break;
case 1:
discount = arrDiscount[1];
realAmount = amount arrDiscount[1];
break;
case 2:
discount = arrDiscount[2];
realAmount = amount arrDiscount[2];
break;
case 3:
discount = arrDiscount[3];
realAmount = amount arrDiscount[3];
break;
default:
return 1;
}
printf("折扣率:%2lf, 实际金额:%2lf", discount, realAmount);
return 0;
}
这道题真正的难点在于根据金额查找到对应的折扣率,通过从1000到0所有梯度的金额对比就能得到输入金额对应的折扣率。
以上就是关于有关c语言的题目 X=0;y=2;Z=3 switch(x) {case 0:switch(y==全部的内容,包括:有关c语言的题目 X=0;y=2;Z=3 switch(x) {case 0:switch(y==、C语言switch循环题就解答、这道c语言题可以用switch写出来吗麻烦最好能写出来程序谢谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)