快递客服人员工作总结:找人帮我解这几个题!

来源:百度文库 编辑:中科新闻网 时间:2024/05/04 21:58:47
1,不正确的二维数组定义是:C
A,int a[2][]={{1,2},{2,4}} B, int a[][2]={1,2,3,4}
C, int a[2][2]={{1},{2},{3}} D, int a[2][]={{1,2},{3,4}}
为什么A,D能这样定义,不是说第二维一定要给定长度的吗?

2,有以下程序:
char fun(char x,char y)
{
if(x<y) return x;
return y;
}
main()
{
int a='9',b='8',c='7';
printf("%c\n",fun(b,c));
}
其中a,b,c所取的值不是一个字符吗,怎么能定义成int型?

3,f(g(x,y),z=x+y,(x,y));中,实参的个数是:3
这里怎么会有3个实参呢?倒底是怎么定义实参和形参的?

4,有以下程序:
#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);
case 4:putchar(c+2);break;
}
}
printf("\n");
}
从键盘输入:2743<CR>
结果:66877
为什么会等于这个结果呢?搞不明白这个题!

5,以下程序的结果:C
int x=3;
do
{
printf("%d",x-=2);
}while(!(--x));
A,1 B,3.0 C,1-2 D,死循环
为什么是这个结果呢?

6,运行以下程序后,如果从键盘上输入china#<回车>,结果是:C
A.2,0 B.5,0 C.5,5 D.2,5
#include<stdio.h>
main()
{
int v1=0,v2=0;
char ch;
while((ch=getchar()!='#')
switch(ch)
{
case 'a':
case 'h':
default: v1++;
case 'o': v2++;
}
printf("%d,%d\n",v1,v2);
}
为什么是这个结果呢?
没人帮我吗????

拙见(仅个人意见,不对的话请高手指正):
1、定义二维数组的时候可以省略第二个[]中的数字,因为根据你给出的第一个[]中的数字和你后面数组的具体内容,它自己就可以确定第二个[]中的大小了。但是第一个[]中的大小和数组具体内容不能省略。

2、a,b,c中存放的是“9”“8”“7”的ASCII码值,当然应该是int。

3、看不太懂你的问题,不过那确实是三个参数。形参可以定义缺省值,这样在给出实参的时候如果参数个数不够,就使用相应的缺省值进入函数。

4、你想出现什么样的值呢?你把程序的第6行改成这样子就好理解了,单步执行一下就看特清楚了
int d = c-'2';
switch(d)
其实还是c中存放的是什么的问题。跟第2题意思差不多。还有case中的匹配问题,如果不遇到break;的话它会一直执行下去直到遇到break;或者switch段结束为止。

5、do-while先执行一次再判断进入循环。第一次执行是1,第判断(--x)是0,再取反应该是非零,所以判断成功,第二次执行循环体。这时0-2当然是-2,所以输出。第三次判断结果是零,失败。

6、还是用单步执行就能看清楚了。getchar()是一个一个的读字符的。

你用的什么编译器,TC吗?换VC会比较好,你用F11和F10进行单步执行,其中各个变量是如何变化的就看得很清楚了,程序的执行过程也就了解了。