C语言几个小问题的详解

写出下列程序的结果
#include<stdio.h>
void main()
{ int x=0,y=2;
int func();
y=func(&x,&y);
x=func(&x,&y);
printf(“%d,%d\n”,x,y);
}

int func(int *a,int *b){
if(*a>*b) (*a)-=*b;
else (*a)--;
return ((*a)+(*b));
}

#include<stdio.h>
void main()
{ int f(int);
int x=1,k;
for(k=0;k<=3;k++)
printf("%4d",f(x));
}
int f(int x)
{ static int z=3,y=0;
y++;
z++;
return(x+y+z);
}

int f(int x)
{ int p;
if(x= =0||x= =1)
return(3);
p=x-f(x-2);
return(p);
}
void main ( )
{ printf(“%d\n”,f(9)); }

#include <stdio.h>
void main()
{ void increment(void);
increment();
increment();
increment();
}
void increment(void)
{ static int x=0;
x++;
printf("%d\n",x);
}
一共4个题,都是求结果的,求详解。。谢谢

#include<stdio.h>
int func(int *a,int *b);
void main()

 int x=0,y=2;
// int func();
//这里不规范 
 y=func(&x,&y);
 x=func(&x,&y);
 printf("%d,%d\n",x,y);
}
int func(int *a,int *b)
{
 if(*a>*b) 
  (*a)-=*b;
 else (*a)--;
 return ((*a)+(*b));
}结果-1,1
调用func(int *a,int *b)
a指向x的地址,b指向y的地址,即*a = x,*b = y;第一次调用后x = -1,y = 1;
第一次调用后x = -1,y = 1;


#include<stdio.h>
void main()
{ int f(int); 
int x=1,k;
  for(k=0;k<=3;k++)
    printf("%4d",f(x));
 }
 int  f(int x)
 { static int z=3,y=0;
   y++;
   z++;
   return(x+y+z);
 }结果6 8 10   局部static,函数调用后其存储空间不空释放 
 
#include<stdio.h>
int f(int x)

 int p;
 if(x==0||x==1) 
 return(3);
 p=x-f(x-2);
 return(p);

void main()

 printf("%d\n",f(9)); 

//结果为7
//p = 9 -f(7) = 9 - (7 - f(5)) = 9 - (7 - (5 - f(3))) 

//= 9 - (7 - (5 - (3 - f(1)))) = 9 - (7 - (5 - (3 - 3)) = 7

// int f(int x)
//是一个递归掉用函数,调用到直到能计算出f(3)的值

 #include <stdio.h>
void main()
{  
 void  increment(void);    
 increment();    
 increment();    
 increment();
}
void increment(void)
{  
 static int x=0;    
 x++;    
 printf("%d\n",x);
}结果为 1 2 3

//还是一个局部静态变量的问题

温馨提示:内容为网友见解,仅供参考
无其他回答

c语言问题求解!!!谢谢!!!
2、字符串长度问题。字符串赋初值时,系统自动给字符串分配一个空间存储‘\\0’字符结束判定字符。他是一个隐藏字符。求字符长度时,strlen求字符长度时会自动忽略‘\\0’,但sizeof不会,所以求字符长度时,sizeof() = strlen() +1;3、自增运算符的运算机制问题。自增运算符放在变量后面,如a++,...

c语言的几个问题
1:字母只读一个,而数字可以很多个一起读。(我汗,以前都没注意着,C的题目越出越细了)2.空格也是字母的一种如果是10 20 AB,那么10 20 读的没错,但c1=‘_’,c2='A'。先读空格(补充下1的回答)3:那个逗号有,你输数据的时候也要相应的有逗号,D里z是double型,应该用%lf;4:长度...

关于2级C语言的几个问题(详细解答一下,谢谢!)
(1)选A char x='A'; 是定义一个变量x并赋值为字符A x=(x>'A'&&x<='Z')?(x+32):x; 这是个选择语句,括号里的x>'A'&&x<='Z'表示条件,意思就是在A到Z之间的字母,也就是所有大写字母,因为是 >'A'不是>=‘A',所以不包括A,当条件满足时就执行x=x+32,大写字母 +32就...

搞懂这8个C语言问题,你也能进大厂
·e)一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10pointers to integers)。·f)一个指向有10个整型数数组的指针(A pointerto an array of 10 integers)。6、关键字static的作用是什么?在C语言中,关键字static有三个明显的作用:第一、在修饰变量的时候,static修饰的静...

几个简单的c语言小问题 解决一题给十分
一。 d=20 if(a) d=d-10; a=0 if条件语句为假不执行 else if(!b) 不执行 if(!c) d=15; else d=25;是 else if(!b)下的语句 也不执行 二。 x=1 y=z=x; 赋值语句 x先赋给z 再赋给y x=y==z 先判断条件语句 y==z 是真 的...

学生来看这8道C语言谜题你能答对几个
C语言8个语言谜题答对几个 1、下面的程序并不见得会输出"hello-std-out"你知道为什么吗?参考答案:stdout和stderr是不同设备描述符。stdout是块设备,stderr则不是。对于块设备,只有当下面几种情况下才会被输入:遇到回车; 缓冲区满;flush被调用。而stderr则不会。2、下面的程序看起来是正常的,...

c语言编程问题,求高手解答(高分)
你的程序没有大的问题,可以执行,只是以下几个小问题:一、第一行包含的文件不存在,这一行应该删除。二、定义了argc、argv两个变量没有使用,编译会有警告,可以删除他们或者不管,最好改为:int main()三、scanf输入n和k的时候,中间有个逗号分隔,这样输入的时候会麻烦,最好改为:scanf("%d%d...

几道C语言的入门问题,给过程,在线等
1、C A选项表示8进制的1;B选项表示十六进制的1;C选项错误,0开头的表示八进制的整数常量,范围是0-7,08显然超过了8进制的表示范围;D选项表示十进制的8;2、B f表示单精度,不写的话默认都是双精度;3、0X10;两个十六进制的数进行按位与运算,首先把两个十六进制数化成二进制OX14:0010 ...

C语言程序设计中几个很基础的问题,求大神帮忙解答,感激不尽~~_百度...
x\/3为int存储为3 y==3为true 取反则为0 B. y!=x%7 x%7=3 y!=3为false 则为0 C. x>0&&y<0 x>0 满足 y<0不满足 求同则为false 则为0 D. x!=y||x>=y x!=y满足 为true x>=y不满足 为false true||false 为true ...

二级c语言有几个不懂的问题,希望大家帮忙解疑
{ t=a[i];a[i]=a[j];a[j]=t;} } } 则总共消除了(n-1+n-2+...+1+0)个逆序,即N*N\/2个,所以可消除所有逆序,即从小到大排好。这其实就是“冒泡法排序”,LZ还有疑问可以找相关资料看看,或者问度娘搜冒泡法排序。fun(c+4, 6)就是从第5个数:5开始排,即9、8、7、6、5...

相似回答