C语言问题,高手请教~~谢谢了;阿

作者&投稿:顾良 (若有异议请与网页底部的电邮联系)
~ 你好,
关于switch
-
case
语句的使用有以下几点是需要注意的:
(1)switch后面的括号里的式子成为“控制表达式”,可以是一个变量名(如:a),也可以是一个表达式,就像你题中的a+b那样。
(2)case后面所跟的一定要是一个确切的值,不能是变量名。而且,这个确切的值只支持两种类型,整形和字符型。比如说:1,2,300,这样的都是整形,'a','b'
'\n',
这样的在单引号里面的成为字符型。case后面只支持这两种类型,其他的不支持,比如说浮点型数(像1.0这样的)。
所以你的题目中D是正确的,switch后面可以是一个表达式a+b的,其中的第二个case后面是1+2,看似是一个式子,其实是一个很确切的数值3,所以也是正确的。
A的错误原因:case后面跟了浮点型1.0和2.0;
B的错误原因:case后面只能跟一个数值,case1,2这样的形式是不正确的,如果真想表达这个意思的话,可以这样:
B.switch(x)
{case
1:case
2:printf(“*\n”);
case.3:printf(“**\n”);
}
就是说把逗号改成冒号就可以了,这样不管检测到1还是2都执行同一个语句printf(“*\n”);
C的错误原因:2*a不是一个确切的数值,所以不正确。但是如果是case
2*3,这样就是正确的,因为编译器在读到语句2*3的时候,相当于读到的是case
6,这符合case的用法。
呵呵,大概就是这样了,不懂的话再留言,我会一直关注你这个问题的,
有问必答的哦~
祝你早日解决问题,成为一个编程高手!


请教c语言高手。。error C2109: subscript requires array or pointer...
首先有两个问题先得解决一下才能谈得上其他的。由于代码不全,不能正确修改: 1.声明的这两个函数 float process9(float a); float process25(float a); 的形式参数都是float型,函数的实现名中也是float型,可函数体中却是二维数组;这样由于类型不匹配,造成出现error C2109: subscript requires ...

请教C语言高手教教我:18\/4*sqrt(4.0)\/8的计算顺序和最后的资料型别...
请教C语言高手教教我:18\/4*sqrt(4.0)\/8的计算顺序和最后的资料型别! 从左到右,最后型别为double,因为sqrt(4.0)返回的是double型别; 注:有高优先顺序的型别参与,计算结果就自动转化为高优先顺序型别; 18\/4由于都是整形,所以结果为4;4*sqrt(4.0)=8.0;8.0\/8=1.0,最后等于...

请教高手一道C语言的问题
a与b被定义为整形变量,不可负值为浮点型,所以前两次输入有误,第三次除数不能为0,所以第三次结果也异常,第四次的结果是完全正确的,整形相除结果还为整形,即相除后自动取整,所以C中只有整数部分

C语言编程中出了一个问题!请教高手!
这个估计就是输入时的一个毛病,应该注意的!当你在输入数字类型后,再接收数字类型的数据,这时因为上一次输入的是 numeric + [enter];在C语言中,会把[enter]这个当成字符串留给下一次接收语句,而下一个又是接收数字的,遇到非法字符串时就结束,[enter]依然留给下一次,所以下面的接收都将无效!

请教C语言高手,C语言常量变量能通过地址去修改吗?
针对问题2:我单步调试了VS2010,从反汇编的代码发现:通过 int *p=(int*)(&a);后确实a的地址和p的值是相同的,运行*p=20;后 a在内存中的值确实已经变成20了,但是 printf("【%d,%d】",a,*p);中a的值不是从内存中取的,由于const int a=10;VS2010已经进行了优化在编译的时候直接把用到...

请教一个关于C语言赋值的问题,高手指点~~
在最后的输出语句中有错误,那样的话没有输出列表,当然结果不对,可改为 printf("%d\\n",q);printf("%f\\n"w);

请教汇编语言高手解答一下问题
mov eax,104 ;eax赋值104 mov eax,ebx ; ebx的数传送到eax mov eax,a ;a的值传送到eax lea eax,message1 ;message1的地址传送给eax mov eax,[ebx] ;ebx地址中的值传送给eax []表示间接寻址 mov eax,[table+esi] ;table+esi为地址中的值传送给eax mov eax,table[esi...

请教c语言高手,。在下面这个八皇后问题里,int Place(int k,int *x...
程序里是采用一个整型数组来表示每一行皇后的位置,对于n阶棋盘,x[0]没用,x[1]表示第一行皇后在第几列... x[n]标识第n行皇后在第几列 这个数组是用malloc动态分配的,使用时把首地址传给DFS搜索函数 C语言里数组可以用指针来传递,换句话说 这里 int Place(int k,int *x) 与 int Place...

请教高手一道C语言题
样例输入 4 表示有四组输入 然后对应的5 | 9 | 16 | 11就是四个输入 输入5 对应的输出 5 输入9 对应的输出9 7 11 17 13 5 输入16对应的输出No number can be output !输入11对应的输出11 17 13 5

为什么C语言程序输入运行总说有个错误?请教高手解答
新手用C语言经常犯的一个错误就是 scanf("%d",&n);里面丢掉了"&"当然程序出错的原因是非常多的,既然你问程序出错原因,可是又不提供足够的信息,抱歉,那我只能推测你是新手了。C语言编程习惯很重要啊,否则,内存非法访问这种错误会经常发生,下标越界、丢个星号,或者&号,又或者定义了一个指针...

洛阳市18432199779: C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因 -
父兰普西: 已修改,看注释#include int main() { char a[20],b[20],c[50],*p1,*p2,*p3; p1=a,p2=b,p3=c; gets(a); while(*p1) { *p2 = (*p1)+3; //对字符串中的每个字符用加3的方法加密并存入数组b p1++; p2++; }*p2='\0'; //串结束符 p2=b ; //p2重新指向b的开始位置 while(*p2) { *p3 = (*p2)-3; //对b中的字符串解密存入数组c p3++; p2++; }*p3='\0'; puts(a); //puts是输出一个串 puts(b); puts(c); return 0; }

洛阳市18432199779: 高分急求!C语言编程问题,求高手解答 -
父兰普西: 1、首先第四行是定义的一个子函数,在主函数内部定义的所以后面要加分号2、设定abc三个变量是题目所需,因为比较大小两个数来比较第三个变量来保存比较结果,你也可以设定两个变量,把比较结果保存到输入值中不过就会覆盖原来的值3、Z是一个子函数变量,设定在主函数中在子函数不能使用,z的生存期只有在那个max函数中才会分配内存空间4、第18行没有出来,第16行倒是可以给你解释哈,在16行他是返回比较值保存在z当中的然后在第7行那个c就会接收到max的比较结果

洛阳市18432199779: C语言小问题请高手不吝赐教; -
父兰普西: 如下 while(1){ printf("请输入要查的值\n"); ret=scanf("%d",&n); //输入正确的情况下ret=1,既输入为数字的话scanf返回的是1,否则返回是0 printf("ret=%d\n",ret); if(ret==0){ printf("输入错误,请重新输入\n"); continue; } break; }

洛阳市18432199779: 我有一个C语言问题,谁能帮帮我,我是刚刚学C语言,自己做了好久但是总是出错,求高手指教. -
父兰普西: 你好,我也是C语言初学者,我来试试帮你解答.我要说的是“插入排序法”,我不会把答案全给你,我把方法全交给你,你自己...

洛阳市18432199779: C语言问题 求高手解答 谢谢
父兰普西: 解答如下: #include <stdio.h> void main() { int i,j,a[10],temp; for(i=0;i<=9;i++) scanf("%d",&a[i]); // 一定要用变量地址 for(j=0;j<=9;j++) for(i=0;i<9-j;i++) { if(a[i]>a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } } for(i=0;i<=9;i++) printf("%d ",a[i]); // 加空格容易看结果 }

洛阳市18432199779: C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因.. -
父兰普西: #include<stdio.h> void findmin(int *s,int t,int*k)//找到最小值的函数.这个*s是数组的第一个元素,*k是指向第一个i的位置,就是k存储的是i的存储单元的地址 { int p; for(p=0,*k=p;p<t;p++)这点 if(s[p]<s[*k])这个s数组首地址的地址依然是指向a数组...

洛阳市18432199779: C语言简单问题,请高手回答下,谢谢了! -
父兰普西: 这是我改了你内存出错地方后在程序.#include "stdio.h"void main(){void copy_string(char *from,char *to); char *a="I am a teacher."; char *b="...

洛阳市18432199779: 求助C语言高手,两个C程序问题.,谢谢
父兰普西: 1 #include<stdio.h> main() { int i,j,k,n scanf("%d",&n); i=n/100; j=n%100/10 ; k=n%10; printf ("百位是%d,十位是%d,个位是%d", i,j,k); } 2 #include<stdio.h> main() { int i,j,a[10]; scanf("%d",&a[10]); for(i=0;i<=9;i++) a[i]=j; for(i=9;i.=0;i--); printf("%d",&j); }

洛阳市18432199779: 请教C语言高手几个简单的问题 -
父兰普西: C语言是从B语言发展来的:(1)ALGOL60语言:1960年出现的ALGOL60语言是一种面向问题的高级语言,他距硬件比较远,不宜用来编写系统软件.(2)CPL语言:1963年英国的剑桥大学推出了CPL...

洛阳市18432199779: C语言编程中出了一个问题!请教高手! -
父兰普西: 这个估计就是输入时的一个毛病,应该注意的!当你在输入数字类型...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网