❶ c语言中debug调试,如果不小心调过头了,怎么返回上一个
如果不影响你需要的变量的值,点击上一句,右键,选Set Next Statement,如果变量值被改变,先把值恢复了
❷ C语言中返回上一层怎样用代码实现
for
for 吗?
用
break;
❸ c语言控制台程序加入什么代码才能实现,输入错误可以返回上一步重新输入,而不是重启程序在输入
#include<stdio.h>
void main()
{
int n;
lable:
printf("please input n: ");
scanf("%d",&n);
if(n =< 0)
goto lable;
printf("%d\n",n);
}
举一个简单的例子,如果输入的是负数就重新输入
please input n: -4
please input n: -5
please input n: 7
7
Press any key to continue
❹ C语言函数返回值的问题
你说的是函数的返回者吧函数的值是指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。如调用正弦函数取得正弦值。对函数的值(或称函数返回值)有以下一些说明:
1)
函数的值只能通过return语句返回主调函数。
return
语句的一般形式为:
return
表达式;或者为:
return
(表达式);该语句的功能是计算表达式的值,并返回给主调函数。在函数中允许有多个return语句,但每次调用只能有一个return
语句被执行,因此只能返回一个函数值。
2)
函数值的类型和函数定义中函数的类型应保持一致。如果两者不一致,则以函数类型为准,自动进行类型转换。
3)
如函数值为整型,在函数定义时可以省去类型说明。
4)
不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。如例8.2中函数s并不向主函数返函数值,因此可定义为:
void
s(int
n)
{
……
}
一旦函数被定义为空类型后,就不能在主调函数中使用被调函数的函数值了。例如,在定义s为空类型后,在主函数中写下述语句
sum=s(n);
就是错误的。为了使程序有良好的可读性并减少出错,
凡不要求返回值的函数都应定义为空类型。
❺ C语言程序定义函数过程中,数值返回错误。
#include<stdio.h>
//usingnamespacestd;
floatx,y,z;
floatdivide(floata,floatb);
intmain(void)
{
printf(" Entertwofloatnumbers: ");
scanf("%d%d",&x,&y);
{
z=divide(x,y);
system("pause");
} return0;
}
floatdivide(floata,floatb)
{
if(b==0)
puts(" Thesecondnumbercan'tbeevaluatedas0!");
//这个情况没有return
else
printf(" Thevalueis%f",a/b);
//既然是函数,这应该用形参,(指针另说)
returna/b;
}
形参 实参 搞混了 函数里直接用的全局变量还不是函数的形参 还有 那个printf("
The value is %f",a/b); 应该放到函数里或者在MAIN里加判断决定是否输出,而且divide函数里只有 在Y!=0时才有返回值 这样不对
❻ C语言中关于函数返回值与函数调用的问题
第一份代码,没有返回值是错误的,就不讨论了。
第二份代码是基本正确的,只是你调用函数的时候写错了,
把 if(!is_leap_year)
改成 if(!is_leap_year(x))
就行了。
你写成 if(!is_leap_year) 这样,因为is_leap_year是函数地址,是非0的,所以!is_leap_year永远是0,永远进入else语句所以一直打印"it is a leap year"。
❼ C语言函数返回值问题,高手进啊
还有就是你比较也只比较了一次你出现了简单的逻辑性错误
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode
{ char data;
struct LNode *next;
}LinkList;
int flag=0,Llength;
void main()
{ LinkList *CreateList(LinkList *L,int n);
void Displist(LinkList *L);
int JudgeCenter(LinkList *L,int length);
LinkList *L;
int length,JCenter;
L=(LinkList *)malloc(sizeof(LinkList));
printf("请输入你要建立的单链表的长度:");
scanf("%d",&length);
fflush(stdin);
Llength=length;
printf("请输入要建立的单链表的每一个元素:\n");
L=CreateList(L,length);
printf("你刚才建议的单链表的元素分别为:");
Displist(L);
printf("\n");
JCenter=JudgeCenter(L,length);
printf("%d",JCenter);
}
/*建立单链表*/
LinkList *CreateList(LinkList *L,int n)
{
LinkList *s,*r;
int i,j=1;
L->next=NULL;
r=L;
for(i=0;i<n;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
printf("请输入第%d个结点的元素:",j++);
scanf("%c",&s->data);
fflush(stdin);
r->next=s;
r=s;
}
r->next=NULL;
return L;
}
/*输出单链表*/
void Displist(LinkList *L)
{
LinkList *p=NULL;
p=L->next;
while(p!=NULL)
{
printf("%c\n",p->data);
p=p->next;
}
}
int JudgeCenter(LinkList *L,int length)
{ int i=1,j;
LinkList *p,*q;
flag++;
j=flag;
p=L->next;
q=p;
if(length<=(Llength+1)/2)
return 1;
else
{
while(j>1)
{
j--;
p=p->next;
}
while(i<length)
{
i++;
q=q->next;
}
if(p->data!=q->data) return 0;
else
return JudgeCenter(L,length-1);
}
return 2;
}
试下这个
❽ c语言编程问题(不知道哪错了,返回值应该是什么
这个C语言里最入门的知识了吧,先不说功能,就语法上来看,前面声明了一个返回值为int型的swap函数,后面却定义了一个无返回值的swap函数?
从功能上说,你的swap函数根本就无法完成数值交换,C语言的书籍中都会把这个函数作为一个典型的例子进行讲解,其中提到了传值操作和传地址操作的不同:通过传值操作而进行的数据交换只影响形参的值,而不能改变实参的值!
//版本1:试图通过传值方式进行数据交换
void swap(int a,int b) {...} 再这个函数中a的值是x的一个副本,b的值是y的一个副本,该函数仅仅是交换了两个副本的值,对实参x和y没有丝毫影响。
//版本2:通过引用方式进行数据交换,前面的声明也要改成一致的!
void swap(int *a,int *b)
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
main()函数中这样使用:swap(&x,&y);
指针a直接指向了实参x的地址,指针b直接指向了实参y的地址,然后再函数中将两个地址中保存的值(即实参的值)进行了交换。
除此以外,在C++语言中还有一种方式:引用。不过C语言里没有引用的概念。
❾ C语言,执行一个语句,如果正确/错误执行,会返回什么值(老师好像说正确返回一个非零值,错误返回0
scanf是返回正确读取的变量的个数,这里读取了一个nc,所以返回值1
printf是返回正确输出的字符个数,\n和%d和\n对应三个字符,所以输出3.
❿ 关于C语言结构体的问题。为什么返回一直错误代码如下。
函数范围一个结构体对象Load;
但是你的返回的load的类型是Load load[];是一个数组,或者说是一个指针。
可以把函数返回改成: Load* Input(Load load[], int n);