C语言,程序改错,要求用数组:输出15-100之间能被3整除的数且至少有一位数是5?
不允许增加和删除语句,只允许移动或者修改语句#include<stdio.h>intmain(){inti,j,n,m,k,a[100],b[5];for(i=15;i<...
不允许增加和删除语句,只允许移动或者修改语句
#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;
} 展开
#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;
} 展开
展开全部
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]
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];
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询