问答题给定程序MODI1.C中函数fun的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。
例如,若字符串为abcd,则应输出:dcba。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
/*********** found* ***********/
fun (char a) { if (*a)
{ fun(a+1);
/*********** found* ***********/
printf("%c" *a) ;
}
}
main ()
{ char s[10]="abcd";
printf ("处理前字符串=%s\n处理后
字符串=", s);
fun(s); printf ("/n");
}
问答题给定程序MODI1.C中函数fun的功能是:逐个比较p、q所指两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c所指数组中,形成一个新的字符串。
例如,若主函数中a字符串为:aBCDeFgH,主函数中b字符串为:ABcd,则c中的字符串应为:aBcdeFgH。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include
#include
void fun(char *p,char *q,char *c)
{
int k= 1;
while (*p != *q )
else c [k]=*p;
k++;
}}
main ()
{ char a [10]="aBCDeFgH",
fun (a,b,c) ;
printf ("The string a: ") ; puts (a) ;
printf ("The string b:") ; puts (b) ;
printf ("The result: ") ; puts (c) ;
}
问答题编写函数fun,其功能是:利用下面的简单迭代方法求方程cos(x)-x=0的一个实根。
xn+1=cos(xn) 迭代步骤如下:
(1)取x1初值为0.0;
(2)x0=x1,将x1的值赋给x0;
(3)x1=cos(x0),求出一个新的x1;
(4)若x0-x1的绝对值小于0.000001,执行步骤(5),否则执行步骤(2);
(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。
程序将输出结果Root=0739086。 注意:部分源程序给出如下。
请勿改动主函数数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序:
#include<conio.h> #include<math.h>
#include<scdio.h> double fun() {
} main() { double
f=fun(); printf("Root=%f/n",f); }
问答题给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#include
#define N 5
typedef struct node {
int data;
struct node *next;
} NODE;
/**********found**********/
__1__ * fun(NODE *h)
{ NODE *p, *q, *r;
p = h;
if (p == NULL)
return 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
{ 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=creatlist(a);
printf("/nThe original list:/n");
outlist(head);
head=fun(head);
printf("/nThe list after inverting :/n");
outlist(head);
}
问答题下列给定程序中,函数fun的功能是:根据以下公式求兀值,并作为函数值返回。 例如,当给指定精度的变量eps输入0.0005时,应输出Pi=3.140578。 π/2=1+1/3+1/3×2/5+1/3×2/5×3/7+1/3×2/5×3/7×4/9+…… 请改正程序中的错误,使它能得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! #include<math.h> #include<stdio.h> double fun(double eps) { double s,t;int n=1;s=0.0; /******found******/ t=0: while(t>eps) { s+=t: t=t*n/(2*n+1); n++: } /******found******/ return(s); } main() { double x: printf("Please enter a precision:"); scanf("%1f",&x); printf("\neps=%1f,Pi=%1f\n",x,fun(x)); }
问答题编写函数fun,其功能是:实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串的后面。 例如.分别输入下面两个字符串: “FirstString--” “SecondString” 程序输出: “FirstString--SecondString” 注意:部分源程序已给出。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include<stdlib.h> #include<stdio.h> #include<conio.h> void fun(char p1[],char p2[]) int i,j; for(i=0;p1[i]!='/0';i++);/*求出i为p1字符串的总长度,包括结束标记符*/ for(j=0;p2[j]!='/0';j++) p1[i++]=p2[j];/*将p2字符串连在p1字符串后面*/ p1[i]='/0';/*在字符串最后加上结束标记符*/ void main() char s1[80],s2[40]; system("CLS"): printf("Enter s1 and s2:/n"); scanf("%s%s",s1,s2); printf("s1=%s/n",s1); printf("s2=%s/n",s2); printf("Invoke fun(s1,s2):n"); fun(s1,s2); printf("After invoking:n"); printf("%s/n",s1);
问答题函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。 合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。 例如,当a=45,b=12时,调用该函数后,c=5142。 注意:部分源程序存在文件PROG1.C中。数据文件in.dat中的数据不得修改。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include <stdio.h>void fun(int a, int b, long *c){}main(){ int a,b; long c;void NONO () ;printf("Input a, b:");scanf("%d,%d", fun(a, b, printf ("The result is:%ld/n",c) ;NONO(); } void NONO (){/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */FILE *rf, *wf ;int i, a,b ; long c ;rf = fopen("in.dat", "r");wf = fopen("out.dat","w");for(i = 0 ; i < 10 ; i++) {fscanf(rf, "%d,%d", fun (a, b, fprintf(wf, "a=%d,b=%d,c=%ld/n", a, b, c);}fclose(rf); fclose(wf); }
问答题下列给定程序中,函数fun的功能是:比较两个字符串,将长的字符串的首地址作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件MODIl,C中,不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include < conio.h > #include < stdio .h >/*********found*********/ double fun (char* s,char *t) { int s1 =0,t1 =0; char * ss, * tt; ss=s; tt = t; while ( *ss ) { while ( *tt) { t1++; if (t1 > s1) return t;else return s;}void main () { char a[80],b[80] ; printf ("/nEnter a string : "); gets (a); printf ( " / nEnter a string a一 gets (b) ; printf "/nThe longer is : /n }
问答题给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),作为函数值返回,并将大于平均值的数放在形参Y所指数组中,在主函数中输出。
例如,有10个正数:46、30、32、40、6、17、45、15、48、26,其平均值为30.500000。
主函数中输出:46 32 40 45 48。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
试题程序:
1 #include<stdlib.h>
2 #include<stdio.h>
3 #define N 10
4 double fun(double x[],double*y)
5 {int i,j;double av;
6 /*********found*********/
7 av=
【1】
;
8 /*********found*********/
9 for(i=0;i<N;i++)
10 av=av+
【2】
;
11 for(i=j=0;i<N;i++)
12 /*********found*********/
13 if(x[i]>av)Y[
【3】
]=x[i];
14 y[j]=-1;
15 return av;
16 }
17 main()
18 {int i;double x[N],y[N];
19 for(i=0;i<N;i++)
20 {x[i]=rand()%50;
21 printf("%4.0 f",x[i])j)
22 printf("\n");
23 printf("\nThe average is:%f\n",fun(x,y));
24 for(i=0;Y[i]>=0;i++)
25 printf("%5.1 f",y[i]);
26 printf("\n");
27 }
问答题下列给定程序中,函数fun的功能是:计算如下公式前n项的和,并作为函数值返回。例如,当形参n的值为10时,函数返回值为9.612558。请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>doublefun(intn){inti;doubles,t;/*********found*********/s=【1】;/*********found*********/for(i=1;i<=【2】;i++){t=2.0*i;/*********found*********/s=s+(2.0*i一1)*(2.0*i+1)/【3】;}returns;}voidmain(){intn=-1;while(n<0){printf("Pleaseinput(n>0):");scanf("%d",&n);}printf("\nTheresultis:%f\n",fun(n));}
问答题下列给定程序中函数fun的功能是:统计substr所指的字符串在str所指的字符串中出现的次数。例如,若字符串为aaas lkaaas,子字符串为as,则应输出2。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>int fun(char*str,char*substr){ int i,J,k,num=0;/*********found*********/ for(i=0,str[i],i++) for(j=i,k=0;substr[k]==str[j];k++,J++)/*********found*********/ If(substr[k+1]=='\0') { num++; break; } return num; } main() { char str[80],substr[80]; printf("Input a string:"); gets(str); printf("Input a substring:"); gets(substr); printf("%d\n",fun(str,substr));}
问答题给定程序MODI1.C中函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
源程序如下:
#include <stdio.h>
void fun(char *s)
{ int i,j;
for(i=0,j=0; sill!='/0'; i++)
if(s[i]>='0'
/ ********** found ********** /
s[j] =" /0";
main( )
char item[80];
printf(" /nEnter a string : " ) ;gets(item);
printf(" /n/nThe string is : "%s" /n" ,item);
fun( item );
printf( " /n/nThe string of changing is : " % s" /n" ,item );
}
问答题N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun(),它的功能是:找出学生的最低分,由函数值返回。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include <stdio.h> #include <stdlib.h> #define N 8 struct slist double s; struct slist *next; ; tyPedef struct slist STREC; double fun(STREC *h) STREC * Creat (double *s) STREC *h,*p,*q; int i=0; h=p=STREC*)malloc(sizeof(STREC)); p->S=0; while(i<N) /*产生8个节点的链表,各分数存入链表中*/ q=(STREC*) malloc(sizeOf(STREC)); p->S=S[i]; i++; p->next=q; p=q; p->next=NULL; return h; /*返回链表的首地址*/ outlist(STREC *h) STREC *p; p=h; printf("head"); do printf("->%2.of ",p->s);p=p->next; /*输/出各分数*/ while(p!=NULL); printf("/n/n "); main() double s[N]=56,89,76,95,91,68,75, 85,min; STREC *h; h=creat(s); outlist(h); min=fun(h); printf("min=%6.If/n ",min);
问答题请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。
主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。
注意:部分源程序存在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入编写的若干语句。
给定源程序:
#include <stdlib.h>
#include <stdio.h>
void fun(int a[],int n,int *max,int *d)
{
}
main()
{ int i,x[20],max,index,n=10;
for(i=0;i<n;i++) {x[i]=rand()%50; printf("%4d",x[i]);}
printf("/n");
iun(x,n,
printf("Max=%5d,Index=%4d/n",max,index);
}
问答题给定程序MODI1.C中函数fun的功能是:判断一个整数是否是素数,若是返回1,否则返回0。在main函数中,若fun返回1则输出“YES”,若fun返回0则输出“NO!”。
请改正程序中的错误,使该程序能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
int fun(int m)
{ int k=2;
while(k<=m
else return 0:
}
main()
{ int n;
printf("/nPlease enter n;"); scanf("%d",
if(fun(n)) printf("YES/n");
else printf("NO!/n");
}
问答题函数fun的功能是:在有n个元素的结构体数组std中,查找有不及格科目的学生,找到后输出学生的学号;函数的返回值是有不及格科目的学生人数。 例如,主函数中给出了4名学生的数据,则程序运行的结果为: 学号:N1002学号:N1006 共有2位学生有不及格科目 请在程序的下画线处填入正确的内容,并把下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! 试题程序:#inelude<stdio.h>typedef struet{ char nllm[8]; double 81201"e[2];/******found******/}(1);int fun(STU std[],int n){ int i,k=0; for(i=0;i<n;i++)/******found******/ if(std[i].seore[0]<60(2)std[i].score[1]<60) { k++: prinff(“学号:%s”,std[i].num); }/******found******/ return___(3)___;}mfin(){ STU std[4]={“N1001”,76.5,82.0,“N1002”,53.5,73.0,“N1005”,80.5,66.0,”N1006”,81.0,56.0}; printf(“\n共有%d位学生有不及格科目\n”,fun(std,4));}
问答题下列给定程序中函数fun的功能是:把从主函数中输入的3个数,最大的数放在a中,中间的数放在b中,最小的数放在c中。 例如,若输入的数为:55 12 34,输出的结果应当是:a=55.0,b=34.0,c=12.0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include <stdio.h> void fun(float *a, float *b, float *c) /********** found********** / float *k; if(*a<*b) k=*a; *a=*b; *b=k; /********** found********** / if(*a>*c) k=*c; *c=*a; *a=k; if(*b<*c) k=*b; *b=*c; *c=k; main() float a, b, c; printf("Input a b c: "); scanf("% f% f% f", printf(“a=% 4.1 f, b=% 4.1 f, c=% 4.1 f/n/n", a, b, c); fun( printf("a=% 4.1 f, b=% 4.1 f, c=% 4.1 f/n/n", a, b, c);
问答题N个有序整数数列已放在一维数组中,给定下列程序中,函数fun()的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,则返回其下标值:反之,则返回-1。 折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high),然后把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中;反之,下次查找范围落在中间位置之前的元素中。直到low>high,查找结束。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include <stdio.h> #define N 10 /*************found*********************/ void fun(int a[],int m) int low--0,high=N-l,mid; while (low<=high) mid=(low+high)/2; if(m<a[mid]) high=mid-1; /*************found*********************/ else if(m>=a [mid]) low=mid+1; else return(mid); return(-1); main () int i,a[N]=-3,4,7,9,13,24,67,89,100,180,k,m; printf ("a数组中的数据如下: "); for(i=0;i<N;i++) printf("%d",a[i]); printf ("Enter m: "); scanf ("%d", k=fun (a,m); if (k>=0) printf ("m=%d, index=%d/n",m, k); else printf("Not be found!/n");
问答题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了尾部的*号之外,将字符串中其他木号全部删除。形参p已指向字符串中最后的一个字母。在编写函数时,不得使用c语言提供的字符串函数。 例如, 字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:ABCDEFG*******。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。1 #include<stdio.h>2 void fun(char *a,char *p)3 {4 }5 main()6 { char s[81],*t ;7 void NONO();8 printf(''Enter a string:\n'');gets(s);9 t=s;10 while( *t)t++;11 t--;12 while(*t=='*')t--;13 fun(s,t);14 printf(''The string after deleted:\n'');puts(s);15 NONO();16 }17 void NONO()18 {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */19 FTLE *in,*out;20 int i;char s[81],*t;21 in=fopen(''in.dat'',''r'');22 out=fopen(''out.dat'',''w'');23 for(i=0;i<10;i++) {24 fscanf(in,''%s'',s);25 t=s;26 while(*t)t++;27 t--;28 while(*t=='*')t--;29 fun(s,t);30 fprintf(out,''%s\n'',s);31 }32 fclose(in);33 fclose(out);}
问答题请写递归函数,把输入的一个整数转换成二进制数输出。
