C语言菜鸟问题?

作者&投稿:干养 (若有异议请与网页底部的电邮联系)
C语言菜鸟问题~

看了前面几位说的,感觉有点乱,这么给你说应该会让你更加明白点:
printf("%d
%d
%d
%d
",++i,--i,i++,i--);

其中,++i,--i,i++,i--;
这是逗号表达式,执行顺序为从右向左,++i,会先i自增1,然后作为++i这个表达式的返回值;对于i--,在基础的时候就应该知道C程序是用分号“;”分割每条语句的,那么整个的printf()就是一条语句,所以i--这个表达式会先返回i本身的值,然后再该条完整语句结束后,再自减1;

对于改到题目:首先执行运算过程最右面的
i--返回值为8,i的值也为8,
然后运算i++返回值为8,i的值也为8,
在执行--i先i自减1,返回值为7,i的值也变为7,
再执行++i先字加1,返回值8,i的值也为8,
但输出还是从左向右依次输出,
所以输出为8
7
8
8;
输出之后在执行
i
=
i
-
1;
i
=
i
+
1;

你你你……

运行结果:
a回车
a
b回车;
b
cdef回车
c


解释:
getchar() 是输入一个字符;
putchar() 输出一个字符; 比如putchar(c) 就是输出c,可是c是个变量,即输出c的变量的值……

再说那个循环,k=0开始知道k=5,一共六次。
回车意思是结束输入
(它也是作为一个字符存入缓存的,假如多个相同输入函数一起并列使用的时候,它们是从缓存中调用的,假如回车恰巧排在顺序中,就会调用,比如:
scanf(“%c”,&a);
scanf(“%c”,&b);
这个时候你要是输入: a回车b回车,那么a被赋值a,可是b被赋值为回车符,即空,打印不出东西。

那么,继续上面的解释,你输入a回车,这个时候c被赋值a,然后putchar(c) 在屏幕上打印出c的值a;
可是回车也被存在缓存中,这个时候循环继续k++,k=1了,也就是第二次循环了,getchar调用缓存中的回车符,然后打印出回车符,即什么都不打印(不是空格,而是换行!!等效于putchar('
');)

继续,换行后进入k=2第三次循环了,同上,输出了b,回车符到缓存。
k=3,getchar调用缓存中回车符,打印putchar('
')
k=4,第五次循环了,你输入cdef 回车,这个时候getchar只能录入字符,从而录入c赋值给变量c。
你可能会问,那么第六次循环是不是应该输出d呢?
错!! 回车号是结束标志也是字符,那么当你输入cdef的时候回车,意味着这次个getchar这个函数的输入结束了,getchar从里面选c这个第一个字符,而字符串cdef未被选中的def字符串则被丢弃。(有点绕吧~~~)

好,我们继续,k=5了,后一次循环了,getchar调用什么东东呢??对了,就是缓存中刚才录入的回车符!
打印putchar('
') 即换行后循环结束了。

累死我了………………

问题1:
(*prt)[3]是一个指针所指向的数,其中*prt是一个指针,指向数组的行向量,意义是指针ptr所指向的行的第三个数。如a[2][3],则当*prt=a[2]的时候,(*prt)[3]=a[2][3].
问题2:
答案选C,因为do……while循环里第一次x-=2得x=1,while(!(--x))的结果是while(!0),所以满足循环条件再循环一次,这次输出-2.

答案为:C
1.就是一个二维数组,只不过它的列数已经确定为3列,行数动态开辟。
2.do while语句,该循环的结束状态为(!(--x))为假,因为while里面试非语句,所以只要判断--x<0循环结束。所以第一次x=x-2==1,输出x==1,在x--,x==0时返回;在执行第二次,输出x=x-2=-2,在执行while语句,因为x<0所以循环结束 。

1.*prt是指向具有3个元素的一维数组的指针。
2.
答案应该是C。第一次x-=2等价于x=x-2,此时输出x=1,--x值为0,!(--x)值为1,因此循环继续(此时x=0)。
接着输出x=-2,--x=-3 ,!(--x)=0,
(因为非零的数逻辑判断真值为1.)循环结束。

1、一个int型指针数组

2、答案是c吧?

do循环里x-=2了,也就是x=1,while(!(--x))相当于是while(!0),也就是while(1),继续执行do,输出-2,while(!(-2)),相当于while(0),退出循环。

表示*p有3元素的一维数组,每个元素为整型.
选C
x=3,x-=2输出x=1
执行while(!--x)这时x=0,
即!0为真,再循环x-=2,
x=-2.最后再执行(!--x)为假,退出!


C语言菜鸟问题
include<stdio.h> main(){ int arr[3],max;int i;for(i=0;i<3;i++) \/\/录入a,b,c三个数 scanf("%d",&arr[i]);max=arr[0]; \/\/设最大值为a[0];for(i=1;i<3;i++) \/\/循环找出最值 if(arr[i]>max)max=arr[i];printf("%d",max);} 上机执行一下吧,这对你...

菜鸟C语言几个小问题
呵呵 === 针对你所提出的第一个问题:首先阐明一个名词哈--- “不带参数的宏定义”:用一个指定的标识符(即名字)来代表一个字符串,正如你上面定义的一样,它的一般形式为 define标识符字符串 在预编译时将所定义的标识符替换成指定字符串的过程称为“宏展开”。好啦,接下来就来回答你所提出...

关于C语言的菜鸟问题
楼上扯淡,small和big已经初始化了。1. 语法错误。i没有赋予初值。改发1:for(i>0; i<=10; i++)应为 for(i=0; i<=10; i++)这样实现11次循环;改法2:定义改成:int small, big, i=1;实现10次循环。2.inp=getchar();和putchar(inp);加在最后,去掉getch();前者表示从键盘读入...

C语言菜鸟2个问题,送分!!!送分!!!
问题二:是说的这个意思 (1)printf(“%d,%d”,i,f);其中%d和%d是格式说明,i和f是输出表列。另外printf(“%d” “%d”,i,f);和上面的用法是一样的,两个%d是格式说明,i和f是输出表列 问题1:首先说明,char中存放的是字符的ASCII码值.浮点数赋给字符型时,先把浮点数变成整型在赋值...

C语言菜鸟级问题
include<stdio.h> include<stdlib.h> main(){ char c;int d;printf("请输入一个8进制数:");scanf("%o",&d);printf("\\n换算成10进制数:%d\\n",d);printf("转换成16进制数:%x\\n",d);printf("\\n请输入一个字符:");scanf(" %c",&c); \/\/在%c前加一空格即可 printf("\\n转换...

c语言 菜鸟级问题 急待高手解答~~~详细分析步骤~~
这个题应该是这样的,首先要知道运算符的优先级和结合性,另外还要知道++k和k++的区别,++k是即时生效的,即当时就会生效,而k++是这一句执行完才会生效 先说前半边k++*++k 因为*、++是右结合的,而且*优先级最高,因为是右结合,所以此时最先看++k,这样k就是3,然后是k++还是3,所以前边是3...

C语言菜鸟级问题……
(a=2,b=5,b++,a+b)a=2, \/\/将2赋给a,这时a为2 b=5, \/\/将5赋给b,这时b为5 b++, \/\/将b先使用然后加1,这时b为5,这条语句以后b为6(就是b++, 的","以后)\/\/如果改为++b 就是直接加1,这时b为6,就是++b, 的","以后也为6 a+b \/\/2+6=8 最简单的:void main()...

菜鸟C语言几个小问题
呵呵 === 针对你所提出的第一个问题:首先阐明一个名词哈--- “不带参数的宏定义”:用一个指定的标识符(即名字)来代表一个字符串,正如你上面定义的一样,它的一般形式为 define 标识符 字符串 在预编译时将所定义的标识符替换成指定字符串的过程称为“宏展开”。好啦,接下来就来回答你...

菜鸟c语言问题 重定义时类型不匹配
编译时主函数的max调用 这时还没把max函数编译,也没给出声明 所以编译器无法知道max是什么东西,不认识 因此报错 解决方法有两种:1.把max函数定义在main 前面,定义同时给出声明了 include "stdio.h"float max(float x,float y){ float z;if(x>y) z=x;else z=y;return z;} main(){float a...

c语言菜鸟级问题
你只给出了程序一部,我没看出错误,.cpp是源文件的后缀名,没有什么*号。你可以自己确定错误的位置,在调试的对话框双击提示语句,就能找到错误所在处。如图移动下拉条,你将看到提示语句,双击它。很简单的。

五常市17187288038: 关于C语言的菜鸟问题 -
布底天麻: 出现这样的原因是因为你写的程序已经运行完了 窗口被关闭了.以后出现这样的问题就在你的程序的最后加几个 getch(); (getch();这个在TC中,如果VC6.0就用getchar();) 这个函数可以让你的程序暂时"停"下来.比如下面这个程序:#include<stdio.h>int main(){printf("C language.");} 一运行就没有了 如果你改成下面这样:#include<stdio.h>int main(){printf("C language."); getch();} 我想你应该明白了吧,祝你成功.

五常市17187288038: c语言菜鸟问题 -
布底天麻: 不一样 比如 int a[10]; 则定义了 10个 数组元素a[0]-a[9]而 a[0]就是首地址 其他的地址如 a[1]是 a[0]地址加1 以此推... 用数组的方便一直就是找到了 首地址 就可以找到其他数组元素

五常市17187288038: 菜鸟级的C语言问题 -
布底天麻: 呵呵,只是上一个程序,for循环体不对,改成下面这样的就对了:main() { float k1=0,k2=0,k3=0; int i; float c=0,b=0; for(i=1;i<=100;i++) k1=k1+i; for(i=1;i<=50;i++) {b=i*i; k2=k2+b; } for(i=1;i<=10;i++) { c=1/i; k3=k3+c;} printf("%f",k1+k2+k3); } 你可以试一试

五常市17187288038: 自学C语言,菜鸟级问题 -
布底天麻: 第一个%d,就是后面的变量c的值,第二个就是变量d的值,那个\n ,是个转义字符,就是换行的意思(和word中的回车一样),目的是为了显示好看一点楼主可以把那个\n去掉看看没有换行的效果printf(“a+u=%d,b+u=%d”,c,d);

五常市17187288038: C语言菜鸟问题 -
布底天麻: 你调用的这句sort( &aa[3], 5) ;明显是只对4,5,6,7,8这几个元素进行排序嘛 所以结果应该是1,2,3,8,7,6,5,4,9,10, 改成sort( &aa[0], 10)就行了

五常市17187288038: C语言 菜鸟题 -
布底天麻: 程序的功能就是输入7个数字,然后程序会将你输入的打印出来 代码说明如下:main() { int i,*p,a[7]; p=a; //p执行数组的头,可以通过p对数组进行操作 for(i=0;i<7;i++) //for循环,输入7个数字到数组a中 scanf("%d",p++); //输入,p执行数组的具体成员 printf("\n"); p=a; for(i=0;i<7;i++,p++) //变量数组,输出数组内容 printf("%d",*p);}

五常市17187288038: C语言的菜鸟问题...表达清楚的进!大家速度啊!!
布底天麻: if(a=5)相当于a=5;if(a);这个条件是永远成立的.if条件中要么是真,要么是假.C语言中0表示假,非0表示真,a的值是非0,这个条件就永远成立,if(a)就与if(5)、if(1)、if(10000)等价,只要条件里的不为0就是真,它就成立!

五常市17187288038: C语言的菜鸟问题,大家帮帮忙 我是自学的 -
布底天麻: 你有如下问题:1.变量必须先声明后使用,并且变量的声明要放在开头.我不明白int x=a的本意,你是想直接定义个整形变量x,且值为a吗?如果是,有如下问题:如问题1所述,声明放在前面.x=a;a是浮点类型、x是整形,这样的赋值,浮点数的小数部分会丢失,就是说x中只有a的整数部分.看看我改的程序是不是你想表达的意思:#include #include main(){ float a; int x; scanf("%f\n",&a); x=a; printf("%d\n",x); system("pause");}

五常市17187288038: 菜鸟的c语言问题
布底天麻: #define ReadFlash(adress) (*((volatile INT16U *)(adress<<1))) 这是一个带参宏定义,一般写在程序的开头. 它表示在下面的程序中 出现的ReadFlash(adress)的地方全部用(*((volatile INT16U *)(adress<<1)))进行替换,其中adress是参...

五常市17187288038: c语言超级菜鸟问题... -
布底天麻: 因为C语言中定义变量必须是在给变量赋值之前完成的,第一个例子中,int i 定义前面有赋值语句,所以会报错,但是C++中没有这个要求,他可以随时定义.

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