问答题下列给定程序中,函数fun的功能是:传入一个整数m,计算如下公式的值。 t=1/2-1/3-…-1/m 例如,若输入5,则应输出-0.283333。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include<stdlib.h> #include<conio.h> #include<stdio.h> double fun(int m) double t=1.0; int i; for(i=2;i<=m;i++) /*******************found***********/ t=1.0-1/i; /*******found**********/ void main() int m; printf("/nPlease enter 1 integer number:/n"); scanf("%d",&m); printf("/n/nThe result is%lf/n", fun(m));
问答题编写函数fun,它的功能是计算:s作为函数值返回。在C语言中可调用log(n)函数求ln(n)。log函数的引用说明是:doublelog(doublex)。例如,若m的值为:20,fun函数值为:6.506583。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。1#include<math.h>2#include<stdio.h>3doublefun(intm)4{56}7main()8{9voidNONO();10printf(''%f\n'',fun(20));11NONO();12}13voidNONO()14{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/15FILE*fp,*wf;16inti,n;17doubles;18fp=fopen(''in.dat'',''r'');19wf=fopen(''out.dat'',''w'');20for(i=0;i<10;i++){21fscanf(fp,''%d'',&n);22s=fun(n);23fprintf(wf,''%f\n'',s);24}25fclose(fp);26fclose(wf);27}
问答题
给定程序MODI1.C中函数fun的功能是:判断ch中的字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
请改正程序中的错误,使它能进行正确的操作。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#include<string.h>
/**********found**********/
void fun(char str, char ch)
{ while(*str
/**********found**********/
if(*str==ch)
{ str[0]=ch;
/**********found**********/
str[1]="0";
}}
main()
{ char s[81], c;
printf("/nPlease enter a string:/n"); gets(s);
printf("/n Please enter the character to search:");
c=getchar();
fun(s, c);
printf("/nThe result is%s/n", s);
}
问答题请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCH码降序排列。 例如,原来的字符串为:CEAedca,排序后输出为:CedcEAa。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。1 #include<stdio.h>2 #include<ctype.h>3 #include<string.h>4 void fun(char *s,int num)5 {67 }8 NONO()9 {10 /*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/11 char s[10];12 FILE *rf,*wf ;13 int i=0;14 rf=fopen(''in.dat'',''r'');15 wf=fopen(''out.dat'',''w'');16 while(i<10) {17 fgets(s,10,rf);18 s[7]=0 ;19 fun(s,7);20 fprintf(wf,''%s\n'',s);21 i++;22 }23 fclose(rf);24 fclose(wf);25 }26 main()27 {28 char s[10];29 printf(''输入7个字符的字符串:'');30 gets(s);31 fun(s,7);32 printf(''\n%s'',s);33 NONO();34 }
问答题学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中。请编写函数fun,其功能是:函数返回该学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数是strcmp)。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#define N 16
typedef struct
{
char num[10];
int s;
}STREC;
STREC fun(STREC*a,char*b)
{
}
void main()
{
STREC s[N]={{GA005",85},
{"GA003",76},{"GA002",69},{"GA004",85},{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",77},{GA017",64},{"GA018",64},{"GA016",72}};
STREC h;
char m[10];
int i;
printf("The original data:/n");
for(i=0;i<N;i++)
{
if(i%4==0)
printf("/n"); /*每行输出4个学生记录*/
printf("%s%3d",s[i]num,s[i].s);
}
printf("/n/nEnter the number:");
gets(m);
h=fun(s,m);
printf("The data:");
printf(”/n%s%4d/n",h.num,hs);
printf("/n");
}
问答题给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在
下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
typedef struct
{ int num;
char name[10];
} PERSON;
/**********found**********/
void fun(PERSON______)
{
/**********found**********/
______temp;
if(std[0].num>std[1].num)
{temp=std[0]; std[0]=std[1]; std[1]=temp;}
if(std[0].num>std[2].num)
{ temp=std[0]; std[0]=std[2]; std[2]=temp;}
if(std[1].num>std[2].num)
{temp=std[1]; std[1]=std[2]; std[2]=temp;}
}
main()
{PERSON std[]={5, "Zhanghu", 2, "WangLi", 6, "LinMin");
int i;
/**********found**********/
fun(______);
printf("/nThe result is:/n");
for(i=0; i<3; i++)
printf("%d, %s/n", std[i].num, std[i].name);
}
问答题程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
试题程序:
1 #include<Stdio.H>
2 #define N 5
3 typedef struct student {
4 long sno;
5 char name[10];
6 float score[3];
7 }STU;
8 void fun(char*filename,STU n)
9 {FILE*fp;
10 /*********found*********/
11 fp=fopen(
【1】
,"rb+");
12 /*********found*********/
13 fseek(
【2】
,-(long)sizeof(STU),SEEK END);
14 /*********found*********/
15 fwrite(&n,sizeof(STU),1,
【3】
);
16 fclose(fP);
17 }
18 main()
19 {STU t[N]={{10001,"MaChao",91,92,77},{10002,"CaoKai",75,60,88},{10003,"LiSi",85,70,78),{10004,"FangFang",90,82,87},{10005,"ZhangSan",95,80,88)};
20 STU n={10006,"ZhaoSi",55,70,68},SS[N];
21 int i,j; FILE*fP;
22 fp=fopen("student.dat","wb");
23 fwrite(t,sizeof(STU),N,fp);
24 fclose(fp);
25 fp=fopen("student.da","rb");
26 freacl(ss,sizeof(STU),N,fp);
27 fclose(fp);
28 print;f("\nThe original data:\n\n");
29 for(j=0;j<N;j++)
30 {printf("\nNo:%ld Name:%一8s Scores:",ss[j].sno,ss[j].name);
31 for(i=0;i<3;i++)
32 printf("%6.2f",ss[j].score[i]);
33 printf("\n");
34 }
35 fun("student.dat",n);
36 printf("\nThe data after modif-ing:\n\n");
37 fp=fopen("student.dat","rb");
38 fread(ss,Sizeof(STU),N,fp);
39 fclose(fp);
40 for(j=0;j<N;j++)
41 {printf("\nNo:%ld Name:%-8s Scores:",ss[j].sno,ss[j].name);
42 for(i=0;i<3;i++)
43 printf("%6.2f",ss[j].score[i]);
44 printf("\n");
45 }
46 }
问答题给定程序MODI1.C中函数fun的功能是:计算函数
F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不等。
例如,当x的值为9、y的值为11、z的值为15时,函数值为 -3.50。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
给定源程序:
#include
#include
#include
/************found************/
#define FU(m,n) (m/n)
float fun(float a,float b,float c)
{ float value;
value=FU(a+b,a-b)+FU(c+b,c-b);
/************found************/
Return(Value);
}
main()
{ float x,y,z,sum;
printf("Input x y z: ");
scanf("%f%f%f",
printf("x=%f,y=%f,z=%f/n",x,y,z);
if (x==y||y==z){printf("Data error!/n");exit(0);}
sum=fun(x,y,z);
printf("The result is : %5.2f/n",sum);
}
问答题下列给定程序中,函数fun的功能是:将n个无序整数从小到大排序。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序:#include < conio.h >#include < stdio.h >#include < stdlib.h >fun(int r1,int,* a){ int i,j,p,t; for(j=0 ; j < n一1;j++) { p=j;/*********found*********/ for(i=j+1;i < n一1;i++) if(a[p] >a[i])/*********found*********/ t=i; if(p!=j) {t=a[j];a[j]=a[p];a[p]=t;} }}putarr(int n,int*z){ int i; for(i=1;i < =n;i++,z++) { printf("%4 d",* z); if(!(i%10))printf("/n"); } printf("/n");}void main(){ int aa[2 0]={9,3,0,4,1,2,5,6,8,1 0,7),n=11; system("CLS"); printf("/nBefore sorting%dnumbers:/n",n), putarr(n,aa); fun(n,aa); printf("/nAiter sorting%dnumbers:/n",r1); putarr(n,aa);}
问答题请用递归算法,求Fibonacci数列。求n阶Fibonacei数列的公式如下:
问答题请编写函数fun,其功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。例如,若二维数组中的数据为W W W WS S S SH H H H则字符串中的内容应是:WSHWSHWSHWSH。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#define M 3#define N 4void fun(char(*s)[N],char*b){}void main(){ char a[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}}; int i,j; printf("The matrix:\n"); for(i=0;i<M;i++) { for(j=0;j<N;j++) printf("%3c",w[i][j]); printf("\n"); } fun(w,a); printf("The A string:\n"); puts(a); printf("\n\n");}
问答题给定程序中,函数fun的功能是:有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。例如,若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9
计算结果为
1 0 0
6 5 0
10 14 9
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在
下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#define N 4
/**********found**********/
void fun(int (*t)______)
{ int i,j;
for(i=1;i<N;i++)
{ for(j=0;j<i;j++)
{
/**********found**********/
______=t[i][j]+t[j][i];
/**********found**********/
______=0;
}
}
}
main()
{ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;
printf("/nThe original array:/n");
for(i=0;i<N;i++)
{ for(j=0;j<N;j++) printf("%2d",t[i][j]);
printf("/n");
}
fun(t);
printf("/nThe result is:/n");
for(i=0;i<N;i++)
{ for(j=0;j<N;j++) printf("%2d",t[i][j]);
printf("/n");
}
}
问答题函数fun的功能是:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在e数的千位和十位上,b数的十位和个位数依次放在e数的百位和个位上。
例如,当a=45,b=12时,调用该函数后c=4152。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include <conio.h>
#include <stdio.h>
void fun(int a,int b,iong*c)
{
}
main()
{
int a,b;
long c;
printf("Input a,b:");
scanf("%d%d",
fun(a,b,
pfintf("The result is:%d\n",c);
}
问答题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是按分数的高低排列学生的记录,低分在前。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <stdio.h>
#define N 16
typedef struct
{
char mum[10);
int s;
}STREC;
int fun (STREC a[ ])
{
}
main ()
{
STREC s[N]={{"GA005",88},{"GA003",64},
{"CA002",77},{"GA004",89},{"GA001",54},
{"GA007",72},{"GA008",72},{"GA006",65},
{"GA015",83},{"GA013",95},{"GA012",55},
{"GA014",68},{"GA011",78},{"GA017",53},
{"GA018",92},{"GA016",82}};
int i;
FILE *out;
fun(s);
printf("The data after sorted :/n");
for(i=0;i<N;i++)
{
if((i)%4==0)
/*每行输出4个学生记录*/
printf("/n");
printf("%s %4d",s[i].num,s[i].s);
}
printf("/n");
out=fopen("out21.dat","w");
for(i=0;i<N;i++)
{
if((i)%4==0&&i)
fprintf(out,"/n");
fPrintf(out,"%4d",s[i].s);
}
fprintf(out,"/n");
fclose(out);
}
问答题给定程序MODI1.C中函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。 请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #include<math.h>3 void fun(int a,int *b,int *c)4 { int i,j,d,y;5 for(i=3;i<=a/2;i=i+2) {6 /**********found**********/7 y=1;8 for(j=2;j<=sqrt((double)i);j++)9 if(i%j==0)y=0;10 if(y==1){11 /**********found**********/12 d==a-i;13 for(j=2;j<=sqrt((double)d);j++)14 if(d%j==0)y=0;15 if(y==1)16 {*b=i;*c=d;}17 }18 }19 }20 main()21 { int a,b,c;22 do23 {printf(''\nInput a:''); scanf(''%d'',&a);}24 while(a%2);25 fun(a,&b,&c);26 printf(''\n\n%d=%d+%d\n'',a,b,c);27 }
问答题给定程序中,函数fun的功能是将不带头结点的单向链表逆置,即若原链表中从头至尾结点数据域依次为2、4、6、8、10,逆置后,从头至尾结点数据域依次为10、8、6、4、2。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include < stdio.h >
#include < stdlib.h >
#define N 5
typedef struct node{
int data;
struer node* next;
}NODE;
/*********found*********/
【1】
*fun(NODE,lc h)
{ NODE*p,*q,*r;
p=h;
if(P==NULL)
retUrr1 NULL;
q=p一 >next;
p一 >next=NULL;
while(q)
{
/*********found*********/
r=q一 >
【2】
;
q一 >next=p;
P=q;
/*********found*********/
q=
【3】
;
}
return p;
}
NODE*creatlist(int a[])
{ NODE* h,*P,*q;int i;
h=NULL;
for(i=0;i < N;i++)
{ q=(NODE*)malloc(sizeof
(NODE));
q一 >data=a[i];
q一 >next=NULL;
if(h==NULL)h=p=q;
else{p一 >next=q;p=q;)
}
return h;
}
void outlist(NODE*h)
{ NODE*p;
p=h;
if(P==NULL)
printf('The list is NULL!/n");
else
{printf("/nHead");
do
{printf("一 >%d",p一 >
data);
p=p一 >next;}
while(P!=NULL);
printf("一 >End/n");
}
}
main()
{ NODE * head;
int a[N]={2,4,6,8,10);
head=crear1ist(a);
printf("/nThe original
list:/n");
out;list(head);
head=fun(head);
printf("/nThe list after
inverting:/n");
outlist(head);
}
问答题下列给定程序中,函数fun的功能是:输出M×M整数方阵,然后求两条对角线上元素之和,并作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#define M 5
/********found********/
int fun(int n,int xx[][])
{
int i,j,sum=0;
printf("/nThe%d x%d matrix:/n",M,M);
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
/********found********/
printf("%f",xx[i][j]);
printf("/n");
}
for(i=0;i<n;i++)
sum+=xx[i][i]+xx[i][n-i-1];
return(sum);
}
void main()
{
int aa[M][M]={{1,2,3,4,5},{4,3,2,1,0},{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};
system("CLS");
printf("/nThe sum of all elements on 2 diagnals is%d",fun(M,aa));
}
问答题请编写一个函数fun(),它的功能是:根据以下公式求π的值(要求满足精度0.005,即某项小于0.005时停止迭代)。
π/2=1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+…+1*2*3*…*n/(3*5*7*…*(2n+1))
程序运行后,如果输入精度0.0005,则程序输出3.14…。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<math.h>
double fun(double eps)
{
}
main()
{
double x;
printf("Input eps: ");
scanf("%1f",
printf("/neps=%1f,PI=%1f/n",x,fun(x));
}
问答题已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。 注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序:#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#define N 10typedef struet ss/*定义结构体*/{ char num[10]; int s;}STU;fun(STU a[],STU*s){}void main(){ FILE*wf:STU a[N]={{ttA01”,81},{“A02”,89},{“A03”,66},{“A04”,87},{“A05”,77},{“A06”,90},{“A07”,79},{“A08”,61},{“A09”,80},{“A10”,71}},m; int i; system(“CLS”); printff“*****The original data*****”); for(i=0;i<N;i++) pritf(“No=%s Mark=%d/n,a[i].num,a[i].s); fun(a,&m); prinffr“*****THE RESULT*****\n”);printf(“The top:%s,%d\n”,m.num,m.s);/***************/ wf=fopen(“out.dat”,“w”); fprintf(wf,“%s,%d”,m.num,m.s); fclose(wf);/**************/}
问答题编写函数fun,它的功能是:计算并输出下列级数和:例如,当n=10时,函数值为:0.909091。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include<stdio.h>doublefun(intn){}main()/*主函数*/{printf("%f/n",fun(10));}