比较难的题!!!
请编写一个函数fun,它的功能是:求出1到m(含m)之内能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
例如,若传给m的值为50,则程序输出:
7 11 14 21 22 28 33 35 42 44 49
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#define M 100
void fun(int m, int *a, int *n)
{
}
void main()
{
FILE *wf;
int aa[M],n,k;
system("CLS");
fun(50,aa,&n);
for(k=0;k<n;k++)
if((k+1)%20==0) /*每行输出20个数*/
{printf("%4d",aa[k]);
printf("\n");
}
else
printf("%4d",aa[k]);
printf("\n");
/******************************/
wf=fopen("out.dat","w");
for(k=0;k<n;k++)
fprintf(wf,"%4d",aa[k]);
fclose(wf);
/*****************************/
}
我的回答是如下但是不知道哪里错了,希望大家帮帮忙!
做法一:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#define M 100
void fun(int m, int *a, int *n)
{int k=0,i,a[m]={0,0,0,0};
n=a;
for(i=1;i<=m;i++,n++)
*n=i;
for(i=0;i<m;i++)
if(a[i]%7==0||a[i]%11==0) a[k++]=a[i];
else continue;
}
void main()
{
FILE *wf;
int aa[M],n,k;
system("CLS");
fun(50,aa,&n);
for(k=0;k<n;k++)
if((k+1)%20==0)
{printf("%4d",aa[k]);
printf("\n");
}
else
printf("%4d",aa[k]);
printf("\n");
wf=fopen("E:\\out.dat","w");
for(k=0;k<n;k++)
fprintf(wf,"%4d",aa[k]);
fclose(wf);
}
做法二:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#define M 100
void fun(int m, int *a, int *n)
{int k=0,i,a[m]={0,0,0,0};
n=a;
for(i=1;i<=m;i++,n++)
*n=i;
for(i=0;i<m;i++)
if(a[i]%7==0||a[i]%11==0) a[k++]=a[i];
else continue;
}
void main()
{
FILE *wf;
int aa[M],n,k;
system("CLS");
fun(50,aa,&n);
for(k=0;k<n;k++)
if((k+1)%20==0)
{printf("%4d",aa[k]);
printf("\n");
}
else
printf("%4d",aa[k]);
printf("\n");
wf=fopen("E:\\out.dat","w");
for(k=0;k<n;k++)
fprintf(wf,"%4d",aa[k]);
fclose(wf);
}
37)对于下述程序,在方式串分别采用"wt"和"wb"运行时,两次生成的文件TEST的长度分别是
#include<stdio.h>
void main()
{ FILE *fp=fopen("TEST",);
fputc(′A′,fp);fputc(′\n′,fp);
fputc(′B′,fp);fputc(′\n′,fp);
fputc(′C′,fp);
fclose(fp); }
A)7字节、7字节
B)7字节、5字节
C)5字节、7字节
D)5字节、5字节
考生答案: C 正确答案: B
39)下面的程序段运行后,输出结果是
int i,j,x=0;
static int a[8][8];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=2*i+j;
for(i=0;i<8;i++)
x+=a[i][j];
printf("%d",x);
A)9
B)不确定值
C)0
D)18
考生答案: B 正确答案: C