c语言关于函数的专题,c语言的基本函数

c语言 简单题 关于函数问题 200分 先谢谢各位高手

第三次答复:

十多年的太平网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整太平建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“太平网站设计”,“太平网站推广”以来,每个客户项目都认真落实执行。

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=2

rear_add=3d24d8,rear_value=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=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=item;

printf("tem_addr=%x,tem_value=%d\n",tem,tem-data);

(*rear)-next=tem;

//这样才能赋值

(*rear)=tem;

printf("rear_add=%x,rear_value=%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语言解决 带参宏定义(函数专题)

举个例子吧:

#include stdio.h

//宏定义:

#define MAX(a,b) (ab) ? a : b

int main()

{

int x,y,max;

printf("input two numbers: ");

scanf("%d%d",x,y);

max = MAX(x,y);//调用宏

printf("max=%d\n",max);

}

C语言关于scanf函数的问题?

答:scanf()的功能是从键盘获取数据赋值给对应的变量,括号内包括输入控制符和输入参数两部分。

从键盘输入的数据需要转化成输入控制符的格式数据,然后存入输入参数。

scanf("%3d",a);

是通过十进制整数3指定输入的宽度,即字符数,超出部分不赋值,故题中只把123赋值给a。

scanf("%3c",ch);

通常%3c可以用来读入三个连续的字符,由于这里ch是一个变量,而不是一个数组,所以只能放下一个字符,即题中将4作为一个字符型数据,赋值给ch变量。

超出的部分没有被保存,所以不显示。

如果有不懂的,可以继续提问。

c语言函数的重点

1、函数如何定义,函数有什么分类,函数的基本语法知识,函数编写常见的错误。

2、记住一些常用的函数,其他的函数需要用到的时候查表就ok了。

c语言的函数知识其实不难(个人认为),难点在c语言的指针(指针是c语言的灵魂,学不好等于没学c语言)指针和数组、指针和函数、指针和结构体、动态内存分配等混合内容知识比较难,并且c语言循环控制一定要会。楼上所说的链表,需要学习数据结构这门课。

希望能帮助到楼主

关于C语言函数调用的程序设计题

#includestdio.h

#includemath.h

void f(int x)

{

int j=0,i;

double k;

k=sqrt(x);

for(i=2;ik;i++)

{

if(x%i==0)

j++;

}

if(j==0)

printf("%4d",x);

}

int g(int x)

{

int a,b,c;

a=x/100;

b=x%100/10;

c=x%10;

if(a*a*a+b*b*b+c*c*c==x)

return 1;

else

return 0;

}

void main()

{

int array[100],i,n=300;

for(i=0;i99;i++,n++)

array[i]=n;

for(i=0;i99;i++,n++)

printf("%4d,",array[i]);

printf("素数为:");

for(i=0;i99;i++,n++)

f(array[i]);

printf("水仙花数为:");

for(i=0;i99;i++,n++)

if(g(array[i])==1)

printf("%4d,",array[i]);

}

提问几个C语言的问题,关于函数概念的

1、返回值是int,还有,你的指针概念不明确,这里稍微跟你讲一下,具体详细的还是看一下书吧

例如有如下定义:int * p;int a = 10;表示定义了一个int型的指针变量p和一个int型的变量a,并且a的值为10,使用时,要给p赋值,并且赋值应该是一个地址,即p = a;现在p的值就是a的地址,所以p就相当于a了,取出a的值就相当于取出p指向地址的值,所以*p就表示10这个值。

2、这里涉及到了强制类型转换,因为在fun2里的return 用了(int)把a+b的结果强制转化成了int型变量,例如:double a = 1.6; 执行了(int)a;之后,a的值就为1了,小数部分被省略。

3、fun(32,32)正确,而fun("abchina",32.0)不正确,在函数的形参里面定义的是一个char型和一个float型变量,而“abchina”是一个字符串,与函数中变量类型不同。


网站栏目:c语言关于函数的专题,c语言的基本函数
当前网址:http://azwzsj.com/article/hshhes.html