请教三道C语言问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 22:16:57
一、对以下程序,从第一列开始输入数据:2473〈CR〉,程序输出结果是
main()
{ int c;
while((c=getchar())!="\n" \*这里的双引号应该为单引号*\
{ switch(c-"2")
{case o:
case 1:putchar(c+4);
case 2:putchar(c+4); break;
case 3:putchar(c+3);
default :putchar(c+2); break;
}
}
printf("\n");
这道题请给我尽量详细的过程
二、
以下程序的输出结果是
main()
{ intk=2,m=4,n=6;
int*pk=&k,*pm=&m,*p;
p=&n;
p=*pk*(*pm); (主要是不理解这一句,请告诉我它的运算过程)
printf("%d\n",n);
三、以下程序是否会出现编译错误
int max(intx,y)
{intz;
z=x>y?x:y;
return z;
}
答案说会有编译错误,错在哪里呢

你的输入问题可不少啊,兄弟~
第一题,答案668977
我修正了一下你的代码
#include<stdio.h>
main()
{ int c;
while((c=getchar())!='\n')
{
switch(c-'2')
{
case 0:
case 1:putchar(c+4);
case 2:putchar(c+4); break;
case 3:putchar(c+3);
default :putchar(c+2); break;
}
}
printf("\n");
}

1)c='2' c-'2'='0'
因为没有break,继续执行2+4=6 putchar
又因为没有break,继续执行2+4=6 putchar break
2)c='4' c-'2='2' 4+4=8 putchar break
3)c='7' c-'2'='5' 7+2=9 putchar break
4)c='3' c-'2'='1' 3+4=7 putchar 无break 再putchar(7)

第二题
整个程序并没有修改n的值,所以输出n的值还是为6
那一句的意思是指针pk指向的地址的值乘以pm指针指向地址的值

第三题
首先该程序没有main函数,不出错才怪
其次两个形参应分别声明,应为 int max(int x,int y)

main()
{ int c;
while((c=getchar())!="\n" \*这里的双引号应该为单引号*\
{ switch(c-"