C语言问题(4-5-1)

2个程序。
1:#include "stdio.h"
main()
{
char a;
scanf("%d",&a);
switch(a)
{
case 1:printf("A\n");break;
case 2:printf("B\n");
case 3:printf("C\n");
case 4:printf("D\n");
case 5:printf("E\n");break;
default:printf("error\n");
}
}

2:#include "stdio.h"
main()
{
char a;
scanf("%d",&a);
switch(a)
{
case '1':printf("A\n");break;
case '2':printf("B\n");
case '3':printf("C\n");
case '4':printf("D\n");
case '5':printf("E\n");break;
default:printf("error\n");
}
}

为什么第一个,我输入2,执行结果为
B
C
D
E

而第二个,我输入2,执行结果为
error

scanf("%d",&a); 代表你输入的是一个整型数
’1’,’2’,'3'代表字符.

如果你把第二个修改下就正确了:
2:#include "stdio.h"
main()
{
char a;
scanf("%C",&a);
switch(a)
{
case '1':printf("A\n");break;
case '2':printf("B\n");
case '3':printf("C\n");
case '4':printf("D\n");
case '5':printf("E\n");break;
default:printf("error\n");
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答

C语言编程。输入五个整型数,其中两个数出现2次,一个数出现一次,用位运...
int main(void){ int i=0,arr[5]={0};printf("请输入五个整数,要求其中有两个数出现两次,一个数出现一次\\n");for(i=0;i<=4;++i){ scanf("%d",&arr[i]);\/\/4 5 5 1 4 } printf("只出现一次的是%d\\n",arr[0]^arr[1]^arr[2]^arr[3]^arr[4]);return 0;} ...

C语言编程,任意输入一个五位正整数,逆序输出每一位上的数 如输入54321...
\/(int) 结果为int 2: 待执行ser函数后,输出结果个位数 12345 % 10 = 5 3: 第二次执行ser函数...类比步骤1 4: 待递归执行ser函数,类比步骤2,输出十位个数 1234 % 10 = 4 5: 类比步骤1 6: 类比步骤2,输出百位个数 123 % 10 = 3 7: 类比步骤1 8: 类比步骤2,输出千位 12 %...

C语言的题,如图,请问为什么等于4?--不是在后面吗,要第二次才减,那5...
x=5 if(x--<5) 这里 x先返回原始值5 然后才减1的 所以 5不小于5 输出 else 输出(x++)执行这里 和上面一样 x先返回原始值 由于上面执行了x--所以x是4 所以输出4

一个c语言编程问题,建立一百个目录,分别叫1,2,3,4,5...100
1、创建文件夹,用CFile就可以了,里面有makeDir的函数 2、创建文件,这一步不需要可以去做,只要调用输出文件流,系统检测到文件不存在会自动生成。3、输出内容,也是CFile的函数,内容的话就不用教你怎么实现了吧。。。

C语言问题,求解释
int *ptr1 = (int*)(&a+1);&a+1表示向前移动一维,然后前置转化为int *,就是说ptr1指向了a[4]后面的一个位置,可以认为是a[5],所以,printf("%x",ptr1[-1])会打印a[4],也就是5 --- int *ptr2 = (int *)((int)a+1);比如a代表的是地址:0012FF50,(int)a就强制转换为整数...

如何用C语言将一个12345···这种数字输出出来成:1 2 3 4 5...
printf("%d ",n%10);}int main(void){ int n; printf("Input n(int n>0)...\\nn="); if(scanf("%d",&n)!=1 || n<1){ printf("Input error, exit...\\n"); return 0; } myf(n); printf("\\n"); return 0;} ...

C语言问题求解如图谢谢 冒泡排序法 这个j<10-i-1 为什么j要小于N-i...
这是因为数组的序号是从0开始的,而不是从1,你想一想啊,当i=0,即数组的第一个元素的下标的值是0,这一点你要非常注意。在冒泡排序中,第一趟是从N个数组元素中进行两两比较大小,要比较(N-i-1)次,因为i,j是从0开始计数的,所以0,1,2...N-i-2,是不是就是(N-i-1)次呢,所以...

c语言,计算1 2 3 4 5逆序数,怎么错了?
你的程序一点小问题,我帮你改正了,看注解。include<stdio.h> void conarry(int x[],int n);main(){ int a[10] ,i;for (i=0;i<10;i++)\/\/i<10因为数组下标是从0开始的,如果设置成i<=10那就是越界了 scanf("%d",&a[i]);\/\/注意scanf();函数的格式控制 conarry (a,10);fo...

C语言中求正负余数是怎么求的。比如(-11)%5=-1,但它的正余数为4,请问...
这个问题当初我也苦恼了好久好久啊,最后是找到了数学推论才弄懂的...就是这个推论 加上那个除数。比如a÷b=q...r 若r为负数,即a=bq+r 改写成:a=bq-b+b+r=b(q-1)+(b+r)即变为:a÷b=q-1...b+r 商减去1,余数加上除数b。

C语言问题~! 1 2 3 4 5 6 7 8 9 10
include<stdio.h> int main(){ int i, j;for(i=0;i<10;i++)for(j=1;j<=10-i;j++){ printf("%d", j);if(j == 10-i)printf("\\n");else printf(" ");} }

相似回答
大家正在搜