C语言两道小题

作者&投稿:绪樊 (若有异议请与网页底部的电邮联系)
C语言小题两道~

#include
double sub (double x,double y,double z)
{ //调用时传入: x=9-2.5=7.5,y=2.5,z=2.5
y-=1.0;//y=y-1=2.5-1=1.5
z=z+x;//z=2.5+9.0-2.5=9.0
return z;//返回9.0
}
main ()
{
double a= 2.5, b=9.0;
//函数调用返回了9.0,所以输出9.000000
printf("%f",sub(b-a, a , a) );
getchar();
}


#include
void sub (double x,double*y,double*z)
{//调用时传入:x=9.0-2.5=7.5,y指向a(a=2.5),z指向a(a=2.5)
*y=*y-1.0;//也就是:a=a-1.0=2.5-1.0=1.5
*z=*z+x;//也就是a=a+9.0-2.5=1.5+9.0-2.5=8.0
//此时函数虽然没有返回值,但是因为形式参数为指针,所以值的改变已经反映到了主函数中
//*z=8.0,即是指向主函数中a变量的指针的值已经改变成了8.0所以主函数中输出8.000000
}
main()
{
double a=2.5,b=9.0,*pa,*pb;
pa=&a;
pb=&b;
sub (b-a, pa ,pa);
printtf("%f",a);
}

1.
A) p=2*(int*)malloc(sizeof(int));指针乘法,一般认为没有意义
B) p=(int*)malloc(2*sizeof(int));一般写法,分配两个int
C) p=(int*)malloc(2*2);有些时候同B,但硬件依赖太强
D) p=(int*)calloc(2,sizeof(int));功能同B
2.
x<<1左移1位,不溢出相当于*2

第一题:
func((x--,y++,x+y),z--)语句里(x--,y++,x+y)是个逗号表达示,
每一条都会运算,但结果只取最后一条:
X先-1得5,Y再+1得8,最后
x+y=((x-1)+(y-1))=((6-1)+(7+1))=13
所以括号内的最终值是13,
就有func(13,8)给传递过去得结果
13+8=21(被输出)

第二题就是个纯粹的循环问题
for(k=2;k<6;k++,k++) 中:
k++,k++可以看成k=k+2;
即在执行过程中k的值只可能取2,4;(k=6就会跳出)
因为在每次执行这个for语句中的内容时s(即最终输出的变量)都会被重新赋值为1,所以只用考虑k=4时程序的执行情况
k=4时:
//s=1; for( j=k;j<6;j++) s+=j; //
第一次执行for语句: j=k=4, s= j+s = 4+1 =5
第二次执行: j=j+1=5; s= j+s = 5+5 =10
第三次执行: j=j+1=6 不能满足j<6 ;跳出for语句
//printf("%d\n",s);// => 所以输出变量 s得到10

~~你的~~明白??

新手有兴趣的加我q:826563317
加注明:"编程" 这里说话好累

关于补充的解答:
1:第一题中的r = func((x--,y++,x+y),z--)这一步大家有的说X+Y=6+7 有的说是5+8 到底哪个正确啊

回答:5+8是正确的
你思考的方向有点偏差
( x--,y++,x+y)是一个逗号表达式,他的求解顺序是从左至右执行,即先求解x-- 再求解 y++
『(注意!)这里并没有取x和y的值,其作用是使得变量的值自加或自减,为后面的x+y做准备。即求解完前两步时,x y的值已经改变,然后执行x+y』
这时的x和y值分别变为了5和8
所以最后求解x+y时是5+8

后面的z--没有问题,先取z的值进行传递,然后z变量自减1.
使用变量的自加,自减有利于提高程序效率,但也要注意场合,理解语句的执行顺序(比如这里逗号运算中只是为了改变程序中变量的值而不进行传递,但函数func的调用中z--则是为了在变量值进行传递后自减),才不容易出错.

不会

func((x--,y++,x+y),z--)语句里(x--,y++,x+y)是个逗号表达示,每一条都会运算,但结果只取最后一条,所以括号内的最终值是13,就有func(13,8)给传递过去得结果21

第二题就是个纯粹的循环,你把循环给看懂了就会了,这个讲起来很麻烦,因为不好用文字来形容。自己去看看循环的运算规律,一层一层推就是了。

#include <stdio>
int func (int a,int b)
{ int c;
c=a+b;return c;
}
main()
{ int x=6,y=7,z=8,r;
r = func((x--,y++,x+y),z--);printf(%d\n",r)
}

x--,y++,x+y 逗号表达式 取最后1个``5+8=13``
调用函数 z++ ++在后 所以先调用再++ 13+8=21``
C语言两道小题
悬赏分:15 - 离问题结束还有 14 天 23 小时
#include <stdio>
int func (int a,int b)
{ int c;
c=a+b;return c;
}
main()
{ int x=6,y=7,z=8,r;
r = func((x--,y++,x+y),z--);printf(%d\n",r)
}
程序的输出结果是
21

int k,j,s;
for(k=2;k<6;k++,k++)
{s=1;
for( j=k;j<6;j++) s+=j;
}
printf("%d\n",s0;
``

当k=4时```j=4`` s=s+j=5
j=5 s=s+j=10``
然后k=6跳出循环``
只有着2步有用 `

=============================================
问题补充:看了大家给的解答很详细但有一点没明白
第一题中的r = func((x--,y++,x+y),z--)这一步大家有的说X+Y=6+7 有的说是5+8 到底哪个正确啊
5+8``因为先x-- y++ x,y的值都变了``成了5 和8``

后面的Z--最终取的是Z值8,因此应该是先用后增减。那么前面的那步是不是也应该先用后增减是6+7呢
逗号表达式中是从左往右算的````
所以先算x--```这里还没减 `是先在着句里用```用完了自减````再算y++ 这里还没加``是先在着句里用````最后到x+y着时x,y都已经+-过了````先用后用关键看位置````
`
像这样的表达式,用的时候是取表达式的值还是X Y 本身的值呢
着是逗号表达式 用的时候取整个表达式的值 也就是最后1个式子的值````如x=(1,2,3,4,5)
则 x=5``

r = func((x--,y++,x+y),z--);printf(%d\n",r)

因为是x-- y-- 所以在这个表达试(x--,y++,x+y)先用x y,用完后在把x y 增加1。 所以这个表达式的值是 x + y =6+7=13
要注意(x--,y--,x+y)是个逗号表达试,最终的结果是x+y的值。x--,y--在这个表达式中得先用再自增
同样 先用z 再把z增加1。也就是把13 和z的值8 传递给函数fun
之后在fun中算得的结果是13+8 =21;

int k,j,s;
for(k=2;k<6;k++,k++)
{s=1;
for( j=k;j<6;j++) s+=j;
}
printf("%d\n",s);

s是最后一次循环得到的结果
这里当k =2 的时候,运行完循环体中的语句后,因为有两个k++语句
所以这个时候k 为4。
再次运行循环体中的代码
这个时候j 从k 变到 6,也就是从 4 变到6
那么就是s= 1 +4 +5=10 (因为s在每次运行第二层循环的时候都被赋值为1了)。

这个时候再执行k++ k++ k变成6了 不满足循环条件。于是循环结束。
最后输出s为10

主函数中r = func((x--,y++,x+y),z--);相当于func(13,8);所以就为13+8=21.输出21.

第二程序中经过for(k=2;k<6;k++,k++)第一次循环k变成了4,s=10,循环后k=6,结束循环

有关++y y++ --y y--
只要清楚:他们都是表达式,表达式的值才能代表他们;
++y相当于 a=y+1;y=y+1;
y++ a=y;y=y+1;
--y a=y-1;y=y-1;
y-- a=y;y=y-1;


急需小题狂做(语文)强化篇 答案 满意者追加500分
高一语文期中考试题 一、选择(30分,每小题2分)1.下列加点字读音无误的一项是:( )A.佝偻( l ó u ) 挥斥方遒( q i ú) 百舸( k ě )争流 分( f è n )外香 B.颓( t u í ) 废 上溯( s h u ò ) 流岚( l á n ) 宫阙( q u è )C....

人教版初二年级上学期期末考试试卷
一、语言积累及运用【本题满分20分】(一)汉字书写【本题满分4分,共2道小题,每小题2分】1、将下列两个词语写在相应的田字格中。(要求:书写正确、规范、美观)字 斟 句 酌 认 真 思 考2、依据拼音在田字格中填写恰当的汉字。(要求:书写正确、规范、美观) 转弯mò 角 在 jié 难 逃(二)诗文默写【本题...

文言文常识选择题
小题2:B。小题3:D。小题4:A。小题5:C。小题6:D。 点评:词的古今异义古今传承的义异词同指的是由于词义的新陈代谢使古今词义产生了或大或小的差距。概括起来,大致有如下几种情况:(1)词义扩大。如 “好”,古代指女子相貌好看,现在泛指一切美好事物的性质。(2)词义缩小。 “让”,...

2021年福建成考高起本《语文》预习试题及答案1?
一、语言知识与语言应用(24分。每小题4分) 1.下列各组词语中加点的字的读音,与所给注音全都相同的一组是( ) A.帖tie 妥帖 请帖 字帖 俯首帖耳 B.屏bing 屏息 屏退 屏障 屏除成见 C.模mo 楷模 模糊 模具 模棱两可 D.创chuong 首创 创伤 创新 创造幸福 参考答案:C 2.下列各组词语中,字形、词义解释...

以语言为话题写作文6
2) 有了一种固定的,可以反复重写的书写字体后,这个语言在於传播信息和知识的用途上就有了相当高的准确...写作时将“大话题”进行切割,使之变成若干“小话题”,然后从中进行筛选,选取自己最熟悉的、最得心应...如2002年全国高考题“心灵的选择”,审题时要注意:话题中的“选择”,是指在两种或多种可能中,经过...

观察下图漫画《“文化”人》,完成下面两道题。 小题1:请将漫画中顾客的...
小题1:此题答案不唯一。示例:同志,用旧报纸包食品很不卫生,既不利于身体健康,也影响了你的声誉,而且还会受到工商执法部门的处罚,请你换用健康卫生的包装袋装食品,好吗?(4分)小题1:示例:(叔叔)你好,我是XX学校的小记者,想请你谈谈对食品卫生安全的认识,好吗?(3分) 小题1...

英语二的题型是什么?
选择一种进行考查,或者是两种题型组合考察。总共有5道题,每小题两分,总共10分。英译汉:这一部分的目的就是为了考察每一个考生理解所给语言材料,并且翻译成汉语的能力。总共有15分。写作:主要由ab两节组成,为的就是考察每一个学生的书面表达能力,总共有两道题,分值是25分。

现代汉语语法研究的自考试题及答案
二、单项选择题(每小题 1 分,共 20 分)在下列每小题的四个备选答案中选出一个正确答案,并将其字母标号填入题干的括号内。11.在分析一种语言的语音结构时,最小的单位是(A ) A音位 B音节 C语素 D元音12.汉语的语素绝大部分都是(C )A两个音节的 B三音节的 C单音节的D多音节的13.在多音节单纯词里...

c语言2\/4是什么意思(图片第一小题)
2\/4 这个是整数除法,结果不是0.5, 而是0,即取了整数部分。2.0\/4 这个才是0.5。如果想得到一个浮点数的结果,就要考虑让两个操作数至少有一个是浮点数,强行乘一个1.0也是一个办法。

高考语文各题型标准时间
第II卷 (共108分)第四大题 包括3道小题(15~17题) (18分)第15题 文言文翻译 (8分) 该题应首先把握住原文中的考查点:哪几个关键词、什么句式等,然后采用直译,直译不通则适当意译。第16题 古诗词鉴赏 (6分)该题可先读题干,带着问题读材料,一时不能完全理解,可以考虑这首诗的类型,...

昌邑区17382486014: C语言小题两道 -
芮狡格列: #include <stdio.h> double sub (double x,double y,double z) { //调用时传入: x=9-2.5=7.5,y=2.5,z=2.5 y-=1.0;//y=y-1=2.5-1=1.5 z=z+x;//z=2.5+9.0-2.5=9.0 return z;//返回9.0 } main () { double a= 2.5, b=9.0;//函数调用返回了9.0,所以输出9....

昌邑区17382486014: 求两道C语言题的答案1. 将一个数组中的值按逆序重新存放.例如,原来顺序为8,6,5,4,1.要求改为1,4,5,6,8. 2. 编一程序,将两个字符串连接起来,不要用... -
芮狡格列:[答案] #include //1. 将一个数组中的值按逆序重新存放.例如,原来顺序为8,6,5,4,1.要求改为1,4,5,6,8. void Asc(int arr[],int len) { int i,j,tmp; for(i=0;i

昌邑区17382486014: 关于C语言的两道题?请知道的亲给我说一下这两道题的答案,顺便给我讲讲为什么?1、又以下程序#includemain(){int x=1,y=0,a=0,b=0;switch(x){case 1:... -
芮狡格列:[答案] 答案已运行验证第一题为D,其中printf("a=%d,b=%d\n",a,b)句末少分号;第二题为2345,其中程序中default;应该改成default:以上都是语法错误,所以我自行地改了.以下是具体分析:第一题switch(x){case 1:// 这里是满足...

昌邑区17382486014: 入门C语言程序求解两道入门题目:1.假如我国国民生产总值的年增长率为9%,计算10年后我国国民生产总值与现在相比增长多少百分比.计算公式为p=(1+r... -
芮狡格列:[答案] 第一题答案 #include #include main() { double i,j,k; j=0.09; k=10; i=(1+j); printf("%lf arised to %lf is %lf",i,k,pow (i,k)); 第二题太简单,你自己做.

昌邑区17382486014: 关于C语言的两道习题,请写出具体的解题步骤.(1).表达式3&5 - 4|5+2^7+~3的值.(2).表达式2>>3 - 3<<2的值. -
芮狡格列:[答案] 3&5:011&101 ( 按位与运算 对应相同为1则为1) 等于001 1 4|5:100|101 (按位或运算 对应有一个1则为1) 等于101 5 2^7:010^111(按位异或运算 相异为1) 等于101 5 ~3: (按位取反) 100 4 所以1-5+5+4=5 (2) 2>>3 ( 右移3个单位 10 >>3得 ...

昌邑区17382486014: 两道非常简单的编程题(C语言)!!
芮狡格列: 这俩题与其说是C语言题 不如说是数学题了 第一道题很著名 当n无穷大时候 S = ln(n) + c c是欧拉常数 C语言的话 #include <cstdlib> #include <iostream> #include <iomanip> using namespace std; int main() { double result = 0; int n; cin >> n; for (...

昌邑区17382486014: 急!急!急!急!两道C语言程序题,请大家赐教,谢谢了!! -
芮狡格列: 1. #include void main() { int i,j,n...

昌邑区17382486014: 两道简单的C语言题 -
芮狡格列: 将c1=92,c2=92 编程二进制数,进行位运算.void *fun();代表返回值为指向Void类型的指针,抽象的讲就是无值型的指针类型.这是规则、

昌邑区17382486014: C语言的两道题
芮狡格列: #include<stdio.h> main() { int i,j,m,s=0; for(i=1;i<11;i++) { for(j=1,m=1;j<=i;j++) m*=j; s+=m; } printf("%d\n",s); }main() { int i,j; for(i=1;i<7;i++) { for(j=1;j<=2*i-1;j++) printf("*"); printf("\n"); } } 需要解释吗? 还有背代码的话,一般来说就是记些...

昌邑区17382486014: 两道简单的C语言题目 -
芮狡格列: 一、首先分析这段函数实现的功能 main() {int op1,op2,res; char opertor; scanf ("%d",&op1); //op1为输入的整数 opertor=getchar(); //opertor为输入的字符 while(opertor!='=') //如果输入的字符不是'='则继续 { scanf ("%d",&op2); //op2 为输...

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