【求助】一道编程题,求帮忙看看;
c语言吧
全部回复
仅看楼主
level 7
___微xue 楼主
题目:
请编写函数void countValue(int *a,int *n),它的功能是:求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数,其结果按从小到大的顺序存放在数组a中,并通过n返回这些数的个数。
注意:部分源程序存放在PROG1.C中。请勿改动主函数main()和写函数writeDAT()的内容。
【试题程序】
#include <stdlib.h>
#include <stdio.h>
void writeDAT();
void countValue(int *a,int *n)
{
}
void main()
{
int aa[1000],n,k;
system("CLS");
countValue(aa,&n);
for(k=0;k<n;k++)
if((k+1) %10 ==0)
{
printf("%5d",aa[k]);
printf("
}
else
printf("%5d",aa[k]);
writeDAT();
}
void writeDAT()
{
int aa[1000],n,k;
FILE *fp;
fp=fopen("OUT.DAT","w");
countValue(aa,&n);
for(k=0;k<n;k++)
if((k+1)%10==0)
{
fprintf(fp,"%5d",aa[k]);
fprintf(fp,"
}
else
fprintf(fp,"%5d",aa[k]);
fclose(fp);
}
2013年03月17日 15点03分 1
level 7
___微xue 楼主
我自己写的,提示是错的,但我不清楚错在哪里,我会附上运行结果。
#include<stdio.h>
#include<stdlib.h>
void writeDAT(); void countValue(int *a,int *n)
{
int i,j,temp;
*n=0;
for(i=0;i<1000;i++)
//if((i%7==0 && i%11!=0)||(i%7!=0 && i%11==0)) if((i%7==0||i%11==0)&&i%77!=0)
a[(*n)++]=i;
for(i=0;i<(*n)-1;i++)
for(j=0;j<(*n);j++)
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
} } void main()
{
int aa[1000],n,k;
system("CLS");
countValue(aa,&n);
for(k=0;k<n;k++)
if((k+1) %10 ==0)
{
printf("%5d",aa[k]);
printf("\n");
}
else printf("%5d",aa[k]);
writeDAT();
} void writeDAT()
{
int aa[1000],n,k;
FILE *fp;
fp=fopen("out.dat","w");
countValue(aa,&n);
for(k=0;k<n;k++)
if((k+1)%10==0)
{
fprintf(fp,"%5d",aa[k]);
fprintf(fp,"\n");
}
else fprintf(fp,"%5d",aa[k]);
fclose(fp);
}
2013年03月17日 15点03分 2
上面两句If处有个换行符,第一行被我屏蔽了
2013年03月17日 15点03分
level 7
___微xue 楼主
运行结果:
2013年03月17日 15点03分 3
level 7
___微xue 楼主
标准答案 :
void countValue(int *a,int *n)
{ int i; /*定义循环控制变量*/
*n=0 ; /*初始化计数器变量*/
for(i=1;i<=1000;i++) /*在这个范围内寻找符合条件的数*/
if((i%7==0 && i%11!=0)||(i%7!=0 && i%11==0))
/*如果当前的数可以被7整除而不可以被11整除,或者可以被11整除而不可以被7整除*/
{
*a=i; /*保存符合条件的数*/
*n=*n+1; /*统计个数*/
a++;
}
}
运行结果:
2013年03月17日 15点03分 4
level 7
___微xue 楼主
从运行结果来看,
自己写的最后 990 和994 排序出了问题。
不知道问题到底出在哪儿呢?
求大神帮助。
2013年03月17日 15点03分 5
1