依波路女士手表皮表带:几道C问题

来源:百度文库 编辑:神马品牌网 时间:2024/05/10 23:18:47
1.运行以下程序后,如果从键盘上输入65 14<回车>,则输出结果为:c
A) m=3 B) m=2 C) m=1 main()
{ int m, n;
printf("Enter m,n;"); scanf("%d%d", &m,&n):
while (m!=n)
{ while (m>n)m-=n;
while (n>m)n-=m;
}
printf("m=%d\n",m);
}
2. 以下程序运行后,输出结果是B
A) 10000 B) 10010 C) 00110 D) 10100
main()
{ int y=18,i=0,j,a[8];
do
{ a[i]=y%2; i++
y=y/2;
} while(y>=1)
for(j=i-1;j>=0;j--) printf("%d",a[j];
printf("\n");
}
3. 下面程序的输出结果是 ABCDCD
char b[]="ABCD";
main()
{ char *chp;
for(chp=b; *chp: chp+=2) printf("%s",chp);
printf("\n");
4.下面程序输出的结果是 024
#define MAX 3
int a [MAX];
main()
{ fun1( ); fun2( a ); printf("\n");}
fun1( )
{ int k, t=0;
for (k=0; k<MAX; K++,t++) a[k]=t+t;
}
fun2(int b[])
{ int k;
for(k=0; k<NAX; k++) printf("%d", *(b+K));
}
能都详细的说明下怎么做的吗?谢谢了

1.
main()
{ int m, n;
printf("Enter m,n;");
scanf("%d%d", &m,&n): /*输入数据,按你的输入,m=65,n=14 */
while (m!=n) /*当m不等于n时为真,执行大括号内语句 */
{ while (m>n)m-=n; /*当m>n 时执行m=m-n,一直到m<=m-n为止. */
while (n>m)n-=m; /*同上,m和n 互换 */
}
printf("m=%d\n",m); /*执行结果:第一次循环:m=65-14*4=9,n=14-9=5;第二次循环:m=9-5=4;n=5-4=1;第三次循环:m=4-1-1-1=1;n=1;此时m=n=1了.输出当然是1 */
}
2.
main() /* 这是一个十进制转换为二进制的程序.算法是,定义一个数组来存二进制,然后把一次次地y除以2,每次的余数依次放在数组里面.最后除到最后一位为0为止.你自己拿笔算算就知道了.程序很明了,就不写注了. */
{ int y=18,i=0,j,a[8];
do
{ a[i]=y%2;
i++;
y=y/2;
} while(y>=1)
for(j=i-1;j>=0;j--) printf("%d",a[j];
printf("\n"); /* */
}
3.
char b[]="ABCD"; /* 等于b[4]={'A','B','C','D'}; */
main()
{ char *chp;
for(chp=b; *chp; chp+=2) printf("%s",chp); /* 执行条件,chp指向不为空,则执行打印输出.程序共循环了两次,第一次,chp指向第一个字符,而输出定义为%s,即为输出chp和以后所有位置字符,就是ABCD,第二次,chp指向C,同理,输出CD,合起来就是ABCDCD了. */
printf("\n");
4.
#define MAX 3
int a [MAX];
main()
{
fun1( );
fun2( a );
printf("\n");
}
fun1( )
{ int k, t=0;
for (k=0; k<MAX; K++,t++)
a[k]=t+t;/*执行这一循环后,a[0]=0+0=0; a[1]=1+1=2; a[2]=2+2=4;*/
}
fun2(int b[])
{ int k;
for(k=0; k<NAX; k++) printf("%d", *(b+K)); /*%d输出,只输出当前所指字符循环三次,依次输出三个数.如是%s输出,则结果是024244. */
}

我现在 只弄好第一题
你用的循环while函数没有写结束条件吧
我想运行是这样的,
1)m=65 n=14 执行第一次循环 后
2)m=65-14=41 此时仍然是m>n 所以再次循环
3)m=41-14=27 m>n
4)m=27-14=13 此时n>m 所以执行下一个循环
5)n=n-m=14-13=1 m>n
6)m=m-n=13-1=12.....m=3-1=2,m=2-1=1所以m=1
我也不是很懂~~不知道我错了没

1 求最小公约数 记住算法就行了
2 2除18的余数。。2除9的余数。。2除4的余数。。2除2的余数。。2除1的余数。。
01001反过来输出10010
3 chp=b时*chp=A printf输出ABCD
chp+=2 指针加2 *chp=C chp指向"CD" printf输出CD
4 a[0]=0+0 a[1]=1+1 a[2]=2+2

第三个是 先定义一个数组用来存放“b[]=ABCD” 再定义 一个指针 *chp
在for中 让指针 *chp指向b[]数组 第一次循环是输出b[]的元素 第两次是输出b[2]以后的元素 for中的(*chp) 是判断是否为空