C语言,程序改错,要求用数组:输出15-100之间能被3整除的数且至少有一位数是5?

不允许增加和删除语句,只允许移动或者修改语句
#include<stdio.h>
int main()
{
int i, j, n, m, k, a[100], b[5];
for (i = 15; i <= 100; i++)
if (i % 3 == 0)
{
i = m;
j = 0;
k = 0;
do
{
b[j] = m % 10;
m /= 10;
if (b[j] == 5)
k++;
j++;
} while (m < 0);
if (k > 0)
a[n++] = i;
}
for (i = 0; i < n; i++)
printf("%4d", a[i]);
return 0;
}

第1个回答  2020-12-12
i = m;将i赋值给m,应该是m=i
do...while (m < 0)里m应该在大于0的情况下才要除以10来取出十位百位,应该是do...while (m >0)
printf("%4d", a[i]);因为上面两行的是a[n++]=i,所以a[i]数组是从a[1]开始存放数的,应该所以这边输出也要改成a[i+1]追问

还有一个变量n没有初始化

追答

int i, j, n, m, k, a[100], b[5];变量声明的同时可以初始化,改成int i, j, n=0, m, k, a[100], b[5];

本回答被提问者和网友采纳
相似回答