计算机二级C语言问题

来源:百度知道 编辑:UC知道 时间:2024/09/24 00:24:40
19)若变量已正确定义,有以下程序段

i=0;

do printf("%d,",i);while(i++);

printf("%d\n",i)

其输出结果是

A)0,0 B)0,1 C)1,1 D)程序进入无限循环
ps:问什么是b,难道不是无限循环吗
(24)有以下程序

#include<stdio.h>

main()

{int i,j,m=55;

for(i=1;i<=3;i++)

for(j=3;j<=i;j++) m=m%j;

printf("%d\n",m);

}

程序的运行结果是

A)0 B)1 C)2 D)3
ps:答案是d,过程怎样的
(34)有以下程序

#include<stdio.h>

void fun(int *a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/

{int t,i,j;

for(i=0;i<n-1;i++)

for(j=i+1;j<n;j++)

if (a[i]<a[j]) {t=a[i];a[i]=a[j];a[j]=t;}

}

main()

{int c[10]={1,2,3,4,5,6,7,8,9,0},i;

fun(c+4,6);

for (i=0;i<10;i++) printf("%d,",c[i]);
<

19题:中while(i++);i++是先运算后,再自加一;++i是先自加
一,再运算!
所以,先判断while(i++)是否成立,此时i依然为0,不成
立,跳出循环,然后,i加一,所以,答案是:B。
24题:在for(i=1;i<=3;i++) for(j=3;j<=i;j++) m=m%j;的二重循环
中,当i为1,2时,j<=i不成立,所以m=m%j未执行。直到i==3
时,条件j<=i成立,执行m=m%j也就是m=55%3,所以,m==1。
选:B。
34题:首先读主函数,再读子函数!
数组名是该数组的首地址,所以c+4,是将指针移四个位
位置,此时c+4也就是c[4]的地址,换句话说,*(c+4)等于
c[4]。
fun(c+4,6):形参为c+4,也就是给自c[4]以后的元素从大
到小排序,而c[0],c[1],c[2],c[3]未被调用,没有参与排
续,所以答案为:1,2,3,4,9,8,7,6,5,0, 选D。
38题:首先读主函数,再读子函数!
while(*t!=0)t++;中*t!=0相当于*t!='\0'。这个循环的作
是将指针移到数组元素的末端,第一个'\0'处,也就是相
当于ss[3]的位置。
while((*t++=*s++)!=0);相当于库函数strcat(t,s)的作
用。(*t++=*s++)!=0相当于(*t++=*s++)!='\0',指针描述
过于抽象,我将其转化一下,意思相当于:
int i;
for(i=0;i<strlen(aa);i++)