C语言问题:请选出以下程序的输出结果

C语言问题:请选出以下程序的输出结果,第1张

答案选C

此题主要考的是指针数据传递和函数返回值的用法。

解析:

首先看下面这个函数:

for(i=0; i<4; i++)

{ sub(a,x); printf("%d",x);}

printf("\n");

}

请弄清楚这里的for 函数一共执行了四次。每一次都会执行一次sub(a,x)函数,所以接下来我们需要关注的是sub(a,x)函数。程序进入sub(a,x)函数后,注意函数参数中这里用到了指针,指针的特点是链上参数地址了,所以sub函数的第一参数会随着for函数的变化跟着变化,而sub的第二个参数是从for函数中传递过来的,不具备指针功能,于是在没有return函数的前提下,是不能回传的。

所以for函数中的对参数x的打印始终保持着原来x的值,因此程序打印出来的结果:0 0 0 0

题中知识点归纳:

1、c语言指针使用的过程中,除非改变指针的指向或直接改变指针所指向的内容,否则指针指向内容是不会变化的。

2、c语言中,如果需要回传参数,请使用return()函数。

3、c语言中,static 关键字可以是的参数不会因为第二次进入而回归0值。

c语言程序设计 参考书籍/文献:

1、《c primer plus》

2、《数据结构(c语言版)例题详解与课程设计指导》第二版

只要别心烦意乱很简单

首先第一个循环 q=r=p就是把p分别赋值给r和q for循环有初值也就是q和r和p初值都是外循环处理的指针(也就是字符串顺序指向的某个字母)内嵌循环很简单 就是只要r指向的字母比p大就把r指向q 等这个内嵌循环结束了r就指向了字符串当前指针(p)之后最小的字母

第一个循环意思是 遍历字符串做如下动作:1,找到当前指针后面最小字母并用r指向它 2,若r有移动过(if(r!=p))就把最小字母(就是p后面的最小字母)和当前指向的字母交换 等第一个大循环结束后 字符串就是从小到大排列了

第二个循环也很简单是取 *** 作啊 外面循环一样就是遍历 内嵌for循环有分号意思是不做任何 *** 作 那么这个循环结束后q就指向了和p指向字母不一样的”下一个不同字母“,下面的拷贝当然是要把这个“下一个不同字母”拷贝到p的后面了

所以第二个循环结束后 有重复的字母都会变成一个字母

这个程序总体意思就是 排序 去掉重复多余字母

一定要胆大(数俩个循环,可以猜想大概)心细(就说有分号 其实就是把指针调好) 语言的考试很好猜 呵呵 时间也很多 真羡慕你还上学

因为你这里的数组a是二维数组,所以指针a是一个二维指针,可以表示为a,这么写了之后你就能清楚看到你的p=a就错了,一个一维指针是不能赋值给二维指针的。这里应该写成p=a就可以了

以上就是关于C语言问题:请选出以下程序的输出结果全部的内容,包括:C语言问题:请选出以下程序的输出结果、C程序,已有代码,写出结果,用到了指针,请高手进,看看这到底输出什么,被弄疯了:、为什么这个c程序输出时不能用指针等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10209633.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存