问答题请编写函数fun,其功能是:判断t所指字符串中的字母是否由连续递增字母序列组成 (字符串长度大于等于2)。例如字符串:uvwxyz满足要求;而字符串:uvxwyz不满足要求。注意:部分源程序存放在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun指定的部位填入所编写的若干语句。试题程序:#1nclucle < stclio.h >#include < string.h >void NONO();int fun(char*t){}main(){ char s[26];printf("请输入一个字母组成的字符串:");gets(s);if(fun(s))print:f("%s是由连续字母组成的字符串*/n",s);else printf("%s不是由连续字母组成的字符串!/n",s);NONO();}void NONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;int i;char s[26],*p;fp;iopen("c://test//in.dat","12");wf=fopen(“c://test//out.dat","w");for(i=0 ; i < 10; i++){fgets(s,26,fp);p=strchr(s,'/n');if(p)*p=0;if(fun(s))fprinti(wf,"%s/n",s+2);else fprintf(wf,"%s/n",strrev(s));}fclose(fp);fclose(wf);}
问答题
由N个有序整数组成的数列已放在一维数组中,给定程序MODI1.C中函数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-1, 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,45,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的功能是:统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #include<stdlib.h>3 #define N 84 typedef struct list5 { int data;6 struct list *next;7 } SLIST;8 SLIST *creatlist(int *a);9 void outlist(SLIST *);10 void fun(SLIST *h,int *n)11 { SLIST *p;12 /**********found**********/13 ___1___=0 ;14 p=h->next;15 while(p)16 {(*n)++;17 /**********found**********/18 p=p->___2___;19 }20 }21 msin()22 { SLIST*head;23 int a[N]={12,87,45,32,91,16,20,48},num;24 head=creatlist(a); outlist(head);25 /**********found**********/26 fun(__3__,27 printf(''\nnumber=%d\n'',num);28 }29 SLIST *creatliSt(int a[])30 {SLIST *h,*p,*q;int i;31 h=p=(SLIST *)malloc(sizeof(SLIST));32 for(i=0;i<N;i++)33 { q=(SLIST *)malloc(sizeof(SLIST));34 q->data=a[i];p->next=q;p=q;35 }36 p->next=0;37 return h;38 }39 void outlist(SLIST *h)40 {SLIST *p;41 p=h->next;42 if(p==NULL)printf(''The list is NULL!\n'');43 else44 { printf(''\nHead'');45 do46 {printf(''->%d'',p->data);p=p->next;}47 while(p!=NULL);48 printf(''->End\n'');49 }50 }
问答题给定程序MODI1.C中规定输入的字符串全部为字母,fun函数的功能是:统计a所指字符串中每个字母在字符串中出现的次数(统计时不区分大小写),并将出现次数最高的字母输出(如果有多个相同,输出一个即可)。例如对于字符串:dadbcdbabdb,对应的输出应为:b或d。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行。也不得更改程序的结构。试题程序:#include<stdio.h>#include<stdio.h>#include<string.h>void fun(char a[]){int b[2 6],i,n,max; for(i=0;i<26;i++) /*********found*********/ a[i]=0; n=strlen(a); for(i=0;i<n;i++) if(a[i]>='a'&&a[i]<='z') /*********found*********/ b[a[i]-'A']++; else if(a[i]>='A'&&a[i]<='z') b[a[i]-'A']++; max=0; for(i=1;i<26;i++) /*********found*********/ if(b[max]>b[i]) max=i; printf("出现次数最多的字符是:%C\n”,max+'a');}main(){ char a[200]; printf("请输入一个待统计的字符串:");scanf("%s",a); fun(a);}
问答题下列给定程序中,函数proc()的功能是求出数组中最小数和次最小数,并把最小数和arr[0]中的数对调,次最小数和arr[1]中的数对调。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
#include<conio.h>
#include<stdio.h>
#define M 20
void proc(int *arr, int n)
{
int i, m, t, k;
//****found****
for(i=0; i<n; i++)
{
m=i;
for(k=i; k<n; k++)
if(arr[k]<arr[m])
//****found****
k=m;
t=arr[i];
arr[i]=arr[m];
arr[m]=t;
}
}
void main()
{
int b[M]={11, 5, 12, 0, 3, 6, 9, 7, 10, 8},
n=10, i;
system("CLS");
for(i=0; i<n; i++)
printf("%d", b[i]);
printf("/n");
proc(b, n);
for(i=0; i<n; i++)
printf("%d", b[i]);
printf("/n");
}
问答题下列给定程序中,函数proc()的功能是:应用递归算法求某数a的平方根。求平方根的迭代公式如下:
x1=(x0+a/x0)/2
例如,3的平方根为1.732051。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<math.h>
#include<stdio.h>
//****found****
proc(double a, double x0)
{
double x1, y;
x1=(x0+a/x0)/2.0;
//****found****
if(fabs(x1-x0)>0.00001)
y=proc(a, x1);
else y=x1;
return y;
}
void main()
{
double s;
printf("Enter s:"); scanf("%1f",
printf("The square root of %1f is %1f/n", s, proc(s, 1.0));
}
问答题下列给定程序中,函数fun的功能是:将n个无序整数从小到大排序。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<conio.h>#include<stdio.h>#include<stdlib.h>fun(int n,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[20]={9,3,0,4,1,2,5,6,8,1 0,7),n=11; system("CLS"); printf("\nBefore sortirig%d numbers:\n",n); putarr(n,aa); fun(n,aa); printf("\nAfter sorting%d numbers:\n",n); putarr(n,aa);}
问答题给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
typedef struct aa
{int data; struct aa *next; }N0DE;
int fun(NODE *h)
{ int sum = 0 ;
NODE *p;
/**********found**********/
P=h;
while(p)
{ if(p->data%2==0)
sum +=p->data;
/**********found*** *******/
p=h->next;
}
return sum;
}
NODE *creatlink(int n)
{NODE *h, *p, *s;
int i;
h=p=(NODE
*)malloc(sizeof(NODE));
for(i=l; idata=rand() %16;
s->next=p->next;
p->next=s;
p=p->next;
}
p->next=NULL;
return h;
}
outlink(NODE *h, FILE *pf)
{NODE *p;
p = h->next;
fprintf(pf ,"/n/nTHE LIST :/n/n
HEAD ") ;
while(p)
{ fprintf (pf ,"->%d ",p->data) ;
p=p->next;}
fprintf (pf,"/n");
}
outresult(int s, FILE *pf)
{ fprintf (pf, "/nThe sum of even
numbers : %d/n",s);}
main ()
{NODE *head; int even;
head=creatlink(12);
head->data=9000;
outlink(head , stdout);
even=fun(head);
printf("/nThe result :/n");
outresult(even, stdout);
}
问答题函数fun的功能是:计算直到。若x=2.5,函数值为:1.917915。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!1#include<stdio.h>2#include<math.h>3doublefun(doublex)4{doublef,t;intn;5f=1.0+x;6/**********found**********/7t=__1___;8n=1;9do{10n++;11/**********found**********/12t*=(-1.0)*x/__2__;13f+=t;14}15/**********found**********/16while(__3__>=le-6);17returnf;18}19main()20{doublex,y;21x=2.5;22y=fun(x);23printf(''\nTheresultis:\n'');24printf(''x=%-12.6fy=%-12.6f\n'',x,y);25}
问答题假定整数数列中的数不重复,并存放在数组中。下列给定程序中函数fun的功能是:删除数列中值为X的元素,变量n中存放数列中元素的个数。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序:#include < stdio.h >#define N 2 0fun(int*a,int n,int x){ int P=0,i; a[n]=x; while(x!=a[P]) p=p+1; /*********found*********/ if(p==n) return一1; else { for(i=P;i < n;i++)/*********found*********/ a[i+1]=a[i]; return n—1; } } void main() { 2nt w[N]={一3,0,1,5,7,99,1 0,1 5,3 0,90},x,n,i; n=10; printf("The original data:/n"); for(i=0;i < 13;i++) printf("%5 d",w[i]); printf("/nInput x(to delete):"); Scanf("%d",&x); printf("Delete:%d/n",x); n=fun(w,n,x); if(n==一1) printf("***No be found!***/n/n"); else { printf("The data afterdeleted:/n"); for(i:0;i < n ; i++) printf("%5d",w[i]); printf("/n/n"); }}
问答题改错题
下列给定程序中函数fun()的功能是计算正整数num的各位上的数字之平方和。
例如:输入352,则输出应该是38;若输入328,则输出应该是77。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
long fun(long num)
{
/**********************found***********************/
long k=1;
do
{
k+=(num%10)*(num%10);
num/=10;
/**********************found***********************/
}while(num)
return (k);
}
main()
{
long n;
clrscr();
printf("/Please enter a number:");
scanf("%ld",
printf("/n%ld/n",fun(n));
}
问答题下列给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回1,失败时返回0。在复制的过程中,把复制的内容输出到屏幕。主函数中源文件名放在变量8fname中,目标文件名放在变量tfname中。 请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! 试题程序:#include<stdio.h>#include<stdlib.h>int fun(char*source,char*target){ FILE*s,*ft;char eh;/******found******/if((fs=fopen(80uree,__1__))==NULL) retum 0; if((ft=fopen(target,“w”))==NULL) retum 0; printf(“\nThe data in file:\n”); eh=fgetc(fs);/******found******/while(!feof(___2___)){ putchar(eh);/******found******/ fputc(ch,___3___); ch=fgetc(fs); } fclose(fs);fclose(ft); prinff(“\n”); return 1;}main(){char sfname[20]=“myfilel”,tfname[20]=“myfile2”: FILE*myf;int i;char c; myf=fopen(sfname,“w”); prinff(“\nThe 9riginal data:\n”); for(i=1;i<30;i++) { c=‘A’+rand()%25; fprinff(myf,“%e”,c); prinff(“%c”,c);;;fclose(myf);prinff(“\n\n”);if(fun(sfname,tfname)) prinff(“Succeed!”); else prinff(“Fail!”);}
问答题给定程序MODI1.C中函数fun的功能是:根据以下公式求π值,并作为函数值返回。
例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。
π 1 1 2 1 2 3 1 2 3 4
─=1+ ─ + ─×─ + ─×─×─ + ─×─×─×─+……
2 3 3 5 3 5 7 3 5 7 9
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
给定源程序:
#include
#include
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("/nPlease enter a precision: "); scanf("%lf",
printf("/neps=%lf, Pi=%lf/n/n",x,fun(x));
}
问答题学生的记录由学号和成绩组成,N名学生的数据己在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。1 #include<stdio.h>2 #define N 83 typedef struct4 { char num[10];5 double s;6 } STREC;7 double fun(STREC *a,STREC *b,int*n)8 {9 }10 main()11 {STREC s[N]={{''GA05'',85},{''CA03'',76},{''CA02'',69},{''GA04'',85},{''GA01'',91},{''GA07'',72},{''GA08'',64},{''GA06'',87}};12 STREC h[N],t;FILE *out;13 int i,j,n;double ave;14 ave=fun(s,h,&n);15 printf(''The%d student data which is lower than%7.3f:\n'',n,ave);16 for(i=0;i<n;i++)17 printf(''%s %4.1f\n'',h[i].num, h[i].s);18 printf(''\n'');19 out=fopen(''out.dat'',''w'');20 printf(out,''%d\n%7.3f\n'',n,ave);21 for(i=0; i<n-1;i++)22 for(j=i+1;j<n;j++)23 if(h[i].s>h[j].s){t=h[i]; h[i]=h[j];h[j]=t;}24 for(i=0;i<n;i++)25 fprintf(out,''%4.1f\n'',h[i].s);26 fclose(out);}
问答题下列给定程序中,函数fun的功能是:根据整形参m的值,计算如下公式的值。例如,若m中的值为5,则应输出0.536389。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件IODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>doublefun(intm){doubley=1.0;inti;/*********found*********/for(i=2;i<m;i++)/*********found*********/y一=1/(i*i);return(y);}main(){intn=5;printf("/nTheresultis%lf/n",fun(r1));}
问答题函数fun的功能是: 将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是: 将a数的十位和个位数依次放在c数的个位和百位上, b数的十位和个位数依次放在c数的十位和千位上。
例如, 当a=45, b=12时, 调用该函数后, c=2514。
注意: 部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include
void fun(int a, int b, long *c)
{
}
main()
{ int a,b; long c;
printf("Input a, b:");
scanf("%d,%d",
fun(a, b,
printf("The result is: %ld/n", c);
NONO();
}
问答题N名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include<stdio.h>
#include<stdlib.h>
#define N 8
struet 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)
{q=(STREC*)malloc(sizeof(STREC));
q->s=s[i];i++;p->next=q;p=q;
}
p->next=0;
return h;
}
void outlist(STREC*h)
{STREC*p;
p=h->next;printf("head");
do
{printf("->%2.0f",p->s);p=p->next;}
while(p!=0);
printf("/n/n");
}
main()
{double s[N}={85,76,69,85,91,72,64,87},max;
STREC *h;
h=creat(s);outlist(h);
max=fun(h);
printf("max=%6.1f/n",max);
}
问答题请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。
例如,输入beijing shanghai(为回车键),函数将返回shanghai。
注意:部分源程序存在文件PROG1.C中。
请勿改动主函数maln和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
char *fun (char *s,char *t)
{
}
main()
{char a[20],b[20];
void NONO ();
printf ("Input 1th string:");
gets (a);
printf ("Input 2th string:");
gets (b);
printf ("%s/n",fun (a, b));
NONO ();
}
void NONO ()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp,*wf ;
int i ;
char a[20],b[20] ;
fp= fopen("in.dat","r");
wf= fopen ("out.dat"f "w");
for(i = 0 ; i < 10 ,i++) {
fscanf (fp, "%s %s", a, b);
fprintf (wf, "%s/n", fun (a,b));
}
fclose( fp);
fclose (wf); }
问答题给定程序中,函数fun的功能是用函数指针指向要调用的函数,并进行调用。规定在2 处使fa指向函数n,在 3处使fb指向函数f2。当调用正确时,程序输出:
x1=5 .000000.x2=3. 000000。x1*x1+x1*x2=40.000000
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANKl.C中。
不得增行或删行,也不得更改程序的结构!
#inolude
double f1(double x)
{ retuEn x*x;)
double f2(double x,double y)
{ return x*y;)
double fun(double a,double b)
{
/**********found**********/
_____1_____ (*f)(),
doub2e r1,r2;
/**********found**********/
f= _____2_____ ;/*point fountion f1*/
r1 =f(a);
/**********found**********/
f= _____ 3_____ ;/*point fountion f2*/
r2=(*f)(a,b);
return r1+r2;
}
main()
{double xi=5,x2=3,r;
r=fun(x1,x2);
printf("/nxl=%f,x2=%f,x1*x1+
x1*x2=%f/r1",x1,x2,r);
}
问答题学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数proc(),它的功能是:把分数最低的学生数据放在h所指的数组中。注意:分数低的学生可能不止一个。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#define M 16
typedef struct
{ char num[10];
int s;
}
STREC;
int proc(STREC*a, STREC*b)
{
}
void main()
{
STREC stu[M]={{"GA005", 82}, {"GA003", 75},
{"GA002", 85}, {"GA004", 78},
{"GA001", 95}, {"GA007", 62},
{"GA008", 60}, {"GA006", 85},
{"GA015", 83}, {"GA013", 94},
{"GA012", 78}, {"GA014", 97},
{"GA011", 60}, {"GA017", 65},
{"GA018", 60}, {"GA016", 74}};
STREC h[M];
int i, n;
n=proc(stu, h);
printf("The %d lowest score: /n", n);
for(i=0; i<n; i++)
printf("%s%4d/n", h[i].num, h[i].s);
//输出最低分学生的学号和成绩
printf("/n");
}
