C语言问题详解
函数是值传递,但是你这里传递的是k的地址啊是&k,不是k啊!
int *a;
a=&k;
那么 *a表示的就是k所存储的值,所以*a的修改,就反应到k上面了。
#include#includeint fun(char ss[],char n){int j=0;//j用来记录n出现的次数,初始化为0for(int i=0;i<strlen(ss);i++)//strlen()是测字符串长度的函数{if(ss[i]==n)//如果找到一次j++;//就记录一次}return j;//返回出现的次数}void main(){char ss[20]={0},n;//定义一个数组,最好初始化为{0},不然会出现"烫烫烫"的字符int k;//k记录fun函数的返回值(其实有没有都可以,有就好理解一些).printf("请输入字符串
");scanf("%s",ss);printf("请输入要查找的字符
");scanf("%s",&n);k=fun(ss,n);printf("您查找的字符出现的次数为:%d
",k);}
while(条件),当条件值为1时,则进入while语句执行;当条件值为0,则不执行。
这个条件可以是int型的数值,可以是字符,但是注意char型的字符一般可以换算成ascii码,然后对应的有相应的int数值,所以一般‘?’,这种asci表示都可以看做1;条件还可以是表达式判断,这个就不多说了,可以好好看看表达式的应用。
while(0) 肯定就不需要循环
while('0') '0'对应的ascii十进制值肯定不是0,所以需要循环
while(‘\0’) 这个判断可以参见上一条,需要循环
while(\0) 这个属于数学判断,非0就是1呗,所以需要循环。
while(*p++) 这种判断条件,则p应该是个指针,而且是一个指向数组的指针
所以,p所指向的下一个数组元素中的值为0或者为空(null)时,则不需要循环
指针*p++的含义容易弄混。
第一个不需要,第二个需要,第三个需要,第四个需要
*p++值是0的时候结束循环
: szdxl 你好,你可能不小心看错了吧。
while()是判断()里面表达式的值,注意是值
while(0) 肯定就不需要循环
while('0') '0'对应的ascii十进制值肯定不是0,所以需要循环
while(‘\0’) 这个里面‘\0' 就是ascii码值为0 ,注意是值阿,那它不就是0了么,又不是字符'0'当然不循环拉,
while(\0) 这个我编译都没过带\号的只有在"" 和' '之间才表示转意字符而且后面的数字是表示八进制的,如‘\36'这个36就是八进制的036.建议楼主去看一下书上的.
PS:VC6.0编译的
c语言问题求详解不要只有答案
第1题 b a选项,例:void f(){ int i;...} int j;int main(){ return 0;} 很明显 全局变量j的作用域仅限于main函数 局部变量i作用域为f函数,但main函数中未使用j,实际上j的作用域为无。c选项 函数的形参都是局部变量 d选项 auto变量只有调用的时候才赋值,调用结束就释放,所以...
c语言问题 详解
正确答案是:109 分析如下:x--,先将x的值为10赋值给%d,然后x自减1变成9,所以输出10 --y,先让y自减1,此时y=9,然后将y的值赋值给%d,所以输出9
C语言问题,求详解 特别是(*ptr)[2]是什么意思,
2:int (*ptr)[2] 解释为:声明一个指针ptr,这个指针是个什么样的指针呢?是一个指向一个数组的指针。这个数组是个什么样的数组呢?是一个包含了两个元素,并且元素为int型的数组。于是ptr连起念就是:ptr为一个指向了数组元素个数2个,类型为int型的数组指针。3:你程序中ptr++,多余了,因...
C语言问题详解
while(条件),当条件值为1时,则进入while语句执行;当条件值为0,则不执行。这个条件可以是int型的数值,可以是字符,但是注意char型的字符一般可以换算成ascii码,然后对应的有相应的int数值,所以一般‘?’,这种asci表示都可以看做1;条件还可以是表达式判断,这个就不多说了,可以好好看看表达式的...
C语言问题 i=5 (++i)+(++i)+(++i)的值是多少?求详解瓦
等式里面有++i,所有的i都自增1,有i++,等式里面i值不变,运算完后i变为i+1。我主要讲一下第三个,应该是18,有三个++i,所以每个i都是3+1+1+1=6,所以结果是18.
...性问题,我很难理解。希望C理解的深的给我详细解释解释。Thank you...
1.首先,因为[]优先级(顶级)高于*(次顶级),所以应先算[]。所以先只看(a+i)[j]。2.然后,这里一堆的东西不好看,做个简化:因为a是二维数组的名字,故a+i是第i行的行指针,相当于一个一位数组的数组名。把a+i记作x,那么(a+i)[j] 就可以记成 x[j]。3.由取下标运算的含义:x...
C语言问题,本人菜鸟,跪求大神详解!!
a-b+++1的意思是a-b+1;b++;所以结果是10-3+1=8;b=b+1=4。d=(c++,c+10,100-c);是逗号表达式,括号内从左至右算,但只把最后一个表达式100-c的值赋给d。那就是c=c+1=11,然后把最后100-c=89赋给d,所以最后a=10,b=10,c=11,d=89。c=(d=a+b),(b+d);也是逗号...
C语言问题,求详解
1、A,a & 3 == 3,3的二进制为0000 0000 0000 0000 0000 0000 0000 0011,这样就好比忽略a的高30位的值,只取其低2位。如果最低两个位 为二进制的 11,那么该表达式的值就等于 二进制的11(十进制的3),这两个位只要有任何一个位不为1那么该表达式就不可能成立 2、D,因为不能对...
c语言位运算问题?
c语言位运算问题解答:要解答这个问题我们先来看一个例子,代码如下图一,图中右边是问题中得到代码,左边是这段代码的汇编指令。两种情况的不同点详细说明如下:第一种情况:printf("%d",2>>64);由图中的汇编代码可以看出,如果两个数都是常数的情况下,代码中是不含对应的汇编指令的,因为编译器...
C语言问题 请详细解释一下
int *p=a; 指针p指向数组a的第一个元素 while(p<a+n&&*p!=x) p++; 循环语句判断指针p指向的位置是否在位置n之前而且指针p指向的单元不等于x(指针比较大小就是比较位置的前后),如果不符合条件,指针加1指向下一位置。if(p
尚都速莱: #include<stdio.h> main() {int x=1,y=2,z=3;if(x>y) { if(y<z)printf("%d",++z);elseprintf("%d",++y); } printf("%d\n",x++); }if(y<z)else 是一个语句 如果if(x>y)为真 才执行括号里面.所以没有输出z和y的值 只执行了一个输出函数 printf("%d\n",x++); 这个函数输出的是x++ 的值 但x++ 的意思是 先把x输出 在+1 所以输出的结果是1
石柱土家族自治县13625198522: C语言问题,解析绝对给分哦 哦已知a=10,b=15,c=1,d=2,e=10, 则表达式a++&&e++&&c++的值为1 为什么 - ?
尚都速莱:[答案] 显然子表达式a++ e++ c++的值都为非零,即都为真,故而整个表达式的值为真,即为1
石柱土家族自治县13625198522: C语言问题,求详解 以下选项中,合法的一组C语言数值常量是__________.(标准答案:D) ( - ?
尚都速莱:[选项] A. ) 0x8A 10,000 3.e5 ( B. ) .177 4e1.5 0abc ( C. ) 028 .5e-3 -0xf ( D. ) 12. 0Xa23 4.5e0
石柱土家族自治县13625198522: C语言问题?求详解每步答案.? - ?
尚都速莱: 第一句是++i,表示再输出操作前先自加1,即输出为9,此时i=9 第二句是--i,表示在输出操作前先自减1,即输出为8,此时i=8 第三句是i++,表示在输出后对i自加1,即输出为8,此时i=9 第四句是i--,表示在输出后对i自减1,即输出为9,此时i=8 第五句是-i++,表示先算i++,再算负号运算,由于i++需要先让i参与运算再自加,所以输出为-8,此时i=9 第六句是-i--,表示先算i--,再算负号运算,由于i--需要先让i参与运算再自减,所以输出为-9,此时i=8
石柱土家族自治县13625198522: C语言问题,求详解~~~~ - ?
尚都速莱: 先把q下一个元素连接到上一个:p=q->next然后再释放q:free(q)答案是B...
石柱土家族自治县13625198522: c语言编程问题求详解 - ?
尚都速莱: #include <stdio.h> int sum(int n) { int i, s = 0; for (i = 1; i <= n; i++) s += i; return s; } int main() { printf("1 + 2 + ... + 300 = %d\n", sum(300)); return 0; } #include <stdio.h> int main() { int i, j; for (i = 1; i <= 9; i++) { for (j = 1; j <= i; j++) printf("%d*%d=%-...
石柱土家族自治县13625198522: c语言题目(详解)?
尚都速莱:这段代码里面重点是理解指针 指针P开始的时候指向数组a的第一个数 而for(k=0;k<=9;k++)printf(“%2d”,*(p+9-k));这句话里面*(p+9-k)意思是(p+9-k)这个地址的值 所以答案就是从数组后面到前面逐个打印出来
石柱土家族自治县13625198522: c语言题要详解?
尚都速莱: 这是一个破程序,问题百出 可运行程序为: #include <stdio.h> int a=2; int f(int a) { return (a)++; } main() { int s=0; { int a=5; s+=f(a); } s+=f(a); printf("%d\n",s); } 不解释. 然后选7 里面的{ int a=5; s+=f(a); } 后 s为5 外面的运行后s+=f(a);//此处a为2,f(a)返回2,先返回后加 s+2=7.
石柱土家族自治县13625198522: c语言 疑题 求详解?
尚都速莱: 28,这个问题其实是这样的,编译的时候,先看到的是a,3个a就是24,然后看++,总共有4对++ ++ ++ ++所以就连加4,就是二十吧!类似的情况也可这样分析,呵呵,这都是经验,以前老碰到这样的情况.
石柱土家族自治县13625198522: C语言题,求详解 - ?
尚都速莱: if ...elseif....else...是一组条件语块,满足其中一条就执行后面相应语句.因为x=2.0所以满足x<10.0,这样y=1.0/x=1.0/2.0=0.5,这样输出语句printf("%f")将显示0.500000