有关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==,第1张

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写出来吗麻烦最好能写出来程序谢谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10137720.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存