c语言考研题,求问运行过程
发布网友
发布时间:2022-04-28 11:08
我来回答
共2个回答
热心网友
时间:2023-10-02 09:04
运行过程:
int main()
{
int a[10],s,p,j=0,k=0;
scanf("%d",&s);//输入的第一个数字
while(s>-1)//连续输入,将大于-1的数字保存,遇到第一个小于-1的数字结束输入
{
a[++k]=s;
//由于是++k,所以先++再取值,所以大于-1的数字保存在数组a[1],a[2],a[3]...中
//注意:a[0]没有赋值
scanf("%d",&s);
}
//输入结束,a[10]保存的元素值为{随机值,7,8,3,18}。k等于4。s等于-1
for(p=1;p<k;p++)
//迭代数组元素a[1]~a[3],如果元素值能整除-1,那么保存在数组a[0],a[1],a[2]...中
if(a[p]%s==0)
a[j++]=a[p];//这里是j++,所以先取值再++,依次a[0]=a[1],a[1]=a[2],a[2]=a[3]
//上一个迭代结束,a[10]保存的值为{7,8,3,3,18},j等于3
for(p=0;p<j;p++)//打印a[0],a[1],a[2]
printf("%d ",a[p]);
return 0;
}
1、所以最后打印7 8 3。(a[10]中保存{7,8,3,3,18})。
2、第一个for循环结束,j等于3。(如上图)。
3、while,++k改成k++,就是先取值再++,
那么一开始数组就从下标0开始保存。输入结束状态:a[10]={7,8,3,18}。k等于4。s等于-1。
第一个for循环结束状态:a[10]={8,3,18,18}。
最后打印就是8 3 18。
热心网友
时间:2023-10-02 09:04
1: 运行结果是8
2: j=0
3: 运行结果是:8 18 (8在第一行,18在第二行)
具体可以看图
望采纳
追问额,原来的程序我都看不懂了,哥你还给我搞个有指针的程序,太看的起我啦,哈哈