c语言 简单题 关于函数问题 200分 先谢谢各位高手第三次答复:
void
createLine(struct
Node
*rear,int
item)
跟
void
createLine(struct
Node
**rear,int
item)
实际上本质是一样的,你理解引用就可以了 , 不过这个改法挺巧妙,只要改一个字符,比我的好 。
类似于函数int
add(int
a)
int
b;
add(b);
你在add函数里面是可以改函数外变量b的值一样 。
你的函数加了 , 这样就可以在createline函数里改函数外变量node的值了 。
*******************************************
第二次答复:
我是一楼
输出是:
1.--0
2.--0
3.--3d2470
tem_addr=3d24d8,tem_value=https://www.04ip.com/post/2
rear_add=3d24d8,rear_value=https://www.04ip.com/post/2
after
createLine:
1.--2
2.--2
3.--3d24d8
完全符合楼主的要求 。
刚才有事走了,没解释一下,现在解释一下 。
void
createLine(struct
Node
*rear,int
item)
这样子声明函数,你在函数里面只能改rear指针对应的对象值,而rear本身的值就是传入的node的值你是改不了的,
所以函数里面的
rear=tem;
你知识改变了函数局部变量rear值 , 但改不了传入的node的值 。
所以得用指针的指针就可以改传入的node的值了 。
传入的是node的地址 , 所以就可以根据node的地址改node的值了,当然也可以根据node的值改node对应的对象的值
(*rear)-next=tem;
就如我改的程序一样 。
好像ywsbbdf
-
举人
四级
法也是一种改法 , 用的是引用,实际上跟指针的指针差不多 , 不过安全一点 。不过引用一直理解起来比较难,不如指针的指针理解方便 。
******************************************
第一次答复:
得用指针的指针
还有上面一处代码tem-data=https://www.04ip.com/post/NULL;应该是tem-next=NULL;
修改代码如下
#include
"stdio.h"
#include
"stdlib.h"
struct
Node{
int
data;
struct
Node
*next;
};
struct
Node
*createNode()
{struct
Node
*tem;
if((tem=(struct
Node*)malloc(sizeof(struct
Node)))==NULL)
{printf("error");
exit(1);
}
else{
tem-next=NULL;
}
return
tem;
}
void
createLine(struct
Node
**rear,int
item)
//指针的指针
{struct
Node
*tem;
if((tem=(struct
Node*)malloc(sizeof(struct
Node)))==NULL)
{printf("error");
exit(1);
}
tem-data=https://www.04ip.com/post/item;
printf("tem_addr=%x,tem_value=https://www.04ip.com/post/%d/n",tem,tem-data);
(*rear)-next=tem;
//这样才能赋值
(*rear)=tem;
printf("rear_add=%x,rear_value=https://www.04ip.com/post/%d/n",*rear,(*rear)-data);
}
main()
{struct
Node
*Node;
Node=createNode();
printf("1.--%d\n2.--%x\n3.--%x\n",Node-data,Node-data,Node);
createLine(Node,2);
//Node指针的地址
printf("after
createLine:\n\n1.--%d\n2.--%x\n3.--%x\n",Node-data,Node-data,Node);
system("pause");
}
关于C语言函数的题 求解#includestdio.h
#includestring.h
#includestdlib.h//exit函数头文件
int main(void)
{
char a[30],b[30];//存放字符串数组,数组长度可以稍微长点
char ch;//存放临时字符
int length_a,length_b;//统计字符串长度
int i = 0,j = 0;
//scanf("%s",a);
//为什么不用scanf %sc语言关于函数的练习:scanf遇到空格即停止c语言关于函数的练习 , 所以如果输入abc 123c语言关于函数的练习的话只会存入abc.下面用条件语句实现
//存入字符串a
printf("请输入字符串a并按enter键结束:");
while((ch = getchar()) != '\n')
{
i;
if(i30)
{
printf("输入的字符串太长,请按enter键退出重试 。\n");
exit(1);
}
else
a[j] = ch;
}
a[j] = '\0';//添加字符串结束标识
i = 0;//重置计数变量
j = 0;
//存入字符串b
printf("请输入字符串b并按enter键结束:");
while((ch = getchar()) != '\n')
{
i;
if(i30)
{
printf("输入的字符串太长,请按enter键退出重试 。\n");
exit(1);
}
else
b[j] = ch;
}
b[j] = '\0';
//得出两字符串长度
length_a = strlen(a);
length_b = strlen(b);
printf("您输入的a、b字符串依次为:\n");
printf("a:%s\n",a);
printf("b:%s\n",b);
//如果a长度大于b长度,则交换
if(length_alength_b)
{
printf("\na较长,需交换,交换后的结果为:\n");
for(i = 0; ilength_a;i)
{
ch = a[i];
a[i] = b[i];
b[i] = ch;
}
for(i = length_a; ilength_b; i)
{
b[i] = a[i];
}
a[length_b] = '\0';
b[length_a] = '\0';
}
else
printf("\na较短 , 不需交换 , 结果仍为:\n");
printf("a:%s\n",a);
printf("b:%s\n\n",b);
return 0;
}
c语言函数习题1、 函数调用:strcat(strcpy(str1,str2),str3)的功能是________ 。
C) 将串str2复制到串str1中后再将串str3连接到串str1之后
2、 若有以下调用语句,则正确的fun函数首部是
main()
{∶
∶
int a;float x;
∶
∶
fun(x,a);
∶
∶
}
B) void fun(float a,int x)
3、 有如下程序
int func(int a,int b)
{ return(a b); }
main()
{ int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d\n",r);}
该程序的输出结果是__________ 。
D) 15
4、 函数pi的功能是根据以下近似公式求π值:
(π*π)/6=1 1/(2*2) 1/(3*3) …… 1/(n*n)
请你在下面程序中的划线部分填入________,完成求π的功能 。
#include"math.h"
double pi(long n)
{ double s=0.0; long i;
for(i=1;i=n;i) s=s ________;
return (sqrt(6*s));}
A) 1.0/i/i
5、 在调用函数时 , 如果实参是简单变量,它与对应形参之间的数据传递
方式是________ 。
B) 单向值传递
6、 对于C语言的函数 , 下列叙述中正确的是________ 。
A) 函数的定义不能嵌套 , 但函数调用可以嵌套(这答案有待斟酌)
7、 函数f的功能是:测定字符串的长度 , 空白处应填入________ 。
int f(char s[ ])
{ int i=0;
while(s[i]!='\0') i;
return (________);}
main( )
{ printf("%d\n",f("goodbye!")); }
B) i
8、 若主调用函数类型为double,被调用函数定义中没有进行函数类型
说明,而return语句中的表达式类型为float型,则被调函数返回
值的类型是________ 。
C) double 型
9、 以下叙述中,错误的是________ 。
D) 形参可以是常量、变量或表达式
10、 以下叙述中,不正确的是________ 。
B) 在main函数体内定义的变量是全局变量
c语言的函数题目函数参数值传递是单向c语言关于函数的练习的c语言关于函数的练习,如果c语言关于函数的练习你想通过函数改变参数值c语言关于函数的练习,可以使用C里面的引用调用,相当于你给结构体变量a取c语言关于函数的练习了个小名,或者是用传递地址的方式来达到你想要的效果
(1)typedef struct{int b,p;}A;
void f(A c) /* 注意:为引用调用符号*/
{int j;
c.b =1;c.p =2;
}
main()
{ int i;
A a={1,2};
f(a);
printf("%d,%d\n",a.b,a.p); }
(2)typedef struct{int b,p;}A;
void f(A *c) /* 定义A类型的指针c,这时会把结构体a的地址传递给c*/
{int j;
(*c).b =1;(*c).p =2;
}
main()
{ int i;
A a={1,2};
f(a); /*取结构体变量a的地址*/
printf("%d,%d\n",a.b,a.p); }
c语言关于函数的选择题A和B都不能完成该功能,A中p定义的是一个指针,由于没有初始化指向的地址空间 , 所以不能直接用*p,B中由于x, y是值传递,传递的是实参变量的拷贝,所以这里交换的值不影响调用部分变量的值的改变 。
【c语言关于函数的练习 c语言关于函数的知识点】c语言关于函数的练习的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于c语言关于函数的知识点、c语言关于函数的练习的信息别忘了在本站进行查找喔 。
推荐阅读
- 唯美益智解谜游戏,唯美益智解谜游戏大全
- 南昌新媒体运营收入如何,南昌新媒体运营收入如何
- html背景下浮动代码,html向下浮动代码
- 重力感飞行器赛车游戏,重力感应飞行竞速游戏
- 手机版windows系统的简单介绍
- mysql单表权限控制,mysql有关权限的表
- chatgpt如何做项目,如何让chatGPT做会记
- 服务器联通问题,服务器通讯异常wifi
- java免杀代码 java免登录