几道c语言题,还请高手帮忙做下,最好能跟我讲解下,感激不尽
1.输出结果:func(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}main(){intk=4,m=1,p...
1.输出结果:
func(int a, int b)
{static int m=0, i=2;
i+=m+1;
m=i+a+b;
return(m);}
main()
{int k=4,m=1,p;
p=func(k,m);printf("%d",p);
p=func(k,m);printf("%d\n",p);
}
2、执行以下程序后,a的值变为多少
main()
{int a,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
printf("%d\n",a);
}
3、运行下面程序,如果从键盘上输入:
ab<回车>
c<回车>
def<回车>
则输出结果为
#include<stido.h>
#define N 6
main()
{ char c[N];
int i=0;
for(;i<N;c[i])=getchar(),i++;
for(i=0;i<N;i++)
putchar(c[i];printf("\n');)
}
第三题,最后应该是for(;i<N;c[i])=getchar(),i++); 展开
func(int a, int b)
{static int m=0, i=2;
i+=m+1;
m=i+a+b;
return(m);}
main()
{int k=4,m=1,p;
p=func(k,m);printf("%d",p);
p=func(k,m);printf("%d\n",p);
}
2、执行以下程序后,a的值变为多少
main()
{int a,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
printf("%d\n",a);
}
3、运行下面程序,如果从键盘上输入:
ab<回车>
c<回车>
def<回车>
则输出结果为
#include<stido.h>
#define N 6
main()
{ char c[N];
int i=0;
for(;i<N;c[i])=getchar(),i++;
for(i=0;i<N;i++)
putchar(c[i];printf("\n');)
}
第三题,最后应该是for(;i<N;c[i])=getchar(),i++); 展开
4个回答
展开全部
第一题:
#include <stdio.h>
func(int a, int b)
{
static int m=0, i=2;//静态变量和全局变量差不多,它的值在本文件中都可以使用
i+=m+1;//第一次调用i=3,第二次调用i=3+8+1=12
m=i+a+b;//第一次调用m=8,第二次调用m=12+4+1=17
return(m);
}
void main()
{
int k=4,m=1,p;
p=func(k,m);printf("%d",p);//输出8
p=func(k,m);printf("%d\n",p);//输出17
}
第二题:
main()
{int a,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;//这里a的值是表达式p1==&m的值,即如果p1==&m成立,那么a=1,否则a=0,从上面就可以看出p1==&k,所以a=0,即p1==&m不成立
printf("%d\n",a);
}
第三题:
for(;i<N;c[i])=getchar(),i++;这儿有错吧!!
#include <stdio.h>
func(int a, int b)
{
static int m=0, i=2;//静态变量和全局变量差不多,它的值在本文件中都可以使用
i+=m+1;//第一次调用i=3,第二次调用i=3+8+1=12
m=i+a+b;//第一次调用m=8,第二次调用m=12+4+1=17
return(m);
}
void main()
{
int k=4,m=1,p;
p=func(k,m);printf("%d",p);//输出8
p=func(k,m);printf("%d\n",p);//输出17
}
第二题:
main()
{int a,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;//这里a的值是表达式p1==&m的值,即如果p1==&m成立,那么a=1,否则a=0,从上面就可以看出p1==&k,所以a=0,即p1==&m不成立
printf("%d\n",a);
}
第三题:
for(;i<N;c[i])=getchar(),i++;这儿有错吧!!
更多追问追答
追问
额,少打了一个括号,应该是for(;i<N;c[i])=getchar(),i++);答案是
ab
c
d
能不能告诉我第三题呀,很急,谢谢!
追答
恩,对,恩为回车也算是一个字符!
展开全部
(1)p=func(k,m);传到func(int a, int b),m为静态变量。i=m+1则i=1;m=1+4+1=6;第二次调用func函数时吗,求解过程相同,但m的值经过上次运算后变成1了(静态变量的值会保留至下次运算),所以求出的m=7;
(2)这个输出是一个地址,&是取地址符,通过赋值给p1再赋值给p2,所以最后a=m的地址。
(3)第一个是a
b
只不过是输出ab之间隔了一行而已,因为for(i=0;i<N;i++)
putchar(c[i];printf("\n');
这个语句是提示每输出一个字符换一个行。
希望能对你有所帮助!
(2)这个输出是一个地址,&是取地址符,通过赋值给p1再赋值给p2,所以最后a=m的地址。
(3)第一个是a
b
只不过是输出ab之间隔了一行而已,因为for(i=0;i<N;i++)
putchar(c[i];printf("\n');
这个语句是提示每输出一个字符换一个行。
希望能对你有所帮助!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1 . 第一次 p : 8 第二次 p: 17
由于func中m, i 为static,分配的空间在堆上,程序没结束,不会销毁,所以每调用一次,都是在上一 次值的基础上再做运算;
2. 0
按照运算符的优先级,应该结合为:a=p1==&m => a=(p1==&m) p1指向的地址为K,与m的地址不相等,所以为 a 被赋值为 0
3 . 你目前的程序有问题,请先检查是否正确
由于func中m, i 为static,分配的空间在堆上,程序没结束,不会销毁,所以每调用一次,都是在上一 次值的基础上再做运算;
2. 0
按照运算符的优先级,应该结合为:a=p1==&m => a=(p1==&m) p1指向的地址为K,与m的地址不相等,所以为 a 被赋值为 0
3 . 你目前的程序有问题,请先检查是否正确
追问
已经改了,能不能告诉我第三题呀,很急,谢谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c[0]=a c[1]=b c[3]=c c[5]=d 回车也是一个字符,但它显示的是换行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询