问答题若干名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点。请编写函数fun,其功能是:求出学生的平均分,并由函数值返回此平均成绩。例如,若学生的成绩是:85 76 69 85 91 72 64 87,则平均分应当是:78.625。注意:部分源程序在文件PROC1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include<stdio.h>#include<stdlib.h> #define N 8struct 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;}outlist(STREC*h){STREC*P;p=h一>next;printf(''head'');do{printf(''一>%4.1f'',p一>s);p=p一>next;}while(p!=0);printf(''\n\n'');}main(){double s E N]={92,83,72,81,90,85,75,65},ave;void NONO();STREC*h;h=creat(s);outlist(h);ave=fun(h);printf(''ave=%6.3f\n'',ave);NONO();}void NONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;int i,j;double s [N],ave;STREC*h;in=fopen(''in.dat'',''r'');out=fopen(''out.dat'',''W'');for(i=0;i<10;i++){for(j=0;j<N;j++)fseanf(in,''%lf,'',&s[j]);h=creat(s);ave=fun(h);fprintf(out,''%6.3lf''.ave);}fclose(in);fclose(out);}
问答题给定程序MOD11.C中函数fun()的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为1、1、2、3、5、8、13、21……例如,若给n输入7,该项的斐波拉契数值为13。 #include<stdio.h> long fun(int g) /**********found**********/ switch(g); case 0:return 0; /**********found**********/ case 1;case 2;return 1; retum(fun(g-1)+fun(g-2)); main() long fib;int n; printf("Input n:");scanf("%d",printf("n=%d/n",n); fib=fun(n); printf("fib=%dn/n/n,fib);
问答题给定程序MODI1.C中函数fun的功能是:输出M行M列整数方阵,然后求两条对角线上元素之和,返回此和数。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #define M 53 /**********found**********/4 int fun(int n,int xx[][])5 { int i,j,sum=0;6 printf(''\nThe%d x%d matrix:\n'', M, M);7 for(i=0 ; i<M;i++)8 { for(j=0;j<M;j++)9 /**********found**********/10 printf(''%f'',xx[i][j]);11 printf(''\n'');12 }13 for(i=0;i<n;i++)14 sum +=xx[i][i]+xx[i][n-i-1];15 return(sum);16 }17 main()18 { 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}};19 printf(''\nThe sum of all elements on 2 diagnals is%d.'',fun(M,aa));20 }
问答题
函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上。
例如,当a=45,b=12。调用该函数后,c=1425。
注意:部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include<stdio.h>
void fun(int a, int b, long *c)
{
}
main() /*主函数*/
{ int a, b; long c;
printf("Input a b:");
scanf("%d%",
fun(a, b,
printf("The result is:%ld/n", c);
}
问答题给定程序中,函数fun的功能是:找出N×N矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#define N 4
void fun(int (*a)[N], int *b)
{ int i,j;
for(i=0; i
/**********found**********/
b[i]= __1__;
for(j=1; j
/**********found**********/
if(b[i] __2__ a[j][i]) b[i]=a[j][i];
}
}
main()
{ int x[N][N]={ {12,5,8,7},{6,1,9,3},{1,2,3,4},{2,8,4,3} },y[N],i,j;
printf("/nThe matrix :/n");
for(i=0;i
{ for(j=0;j
printf("/n");
}
/**********found**********/
fun(__3__);
printf("/nThe result is:");
for(i=0; iprintf("/n");
}
问答题函数fun的功能是:根据所给的年、月、日,计算出该日是这一年的第几天,并作为函数值返回。其中函数isleap用来判别某一年是否为闰年。 例如,若输入:2008 5 1,则程序输出:2008年5月1日是该年的第122天。 请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!#include<stdio.h>int isleap(int year){int leap;leap=(year%4==0&&year%100!=0 ‖ year%400==0);/**********found**********/return 【1】;}int fun(int year,int month,int day) {inttable[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int days=0,i;for(i=1;i<month;i++)days=days+ table[i];/**********found**********/days=days+ 【2】 ;if(isleap(year)&&month>2)/**********found**********/days=days+ 【3】 ;return days; } main() { int year,month,day,days; printf("请输入年、月、日:");scanf("%d%d%d",&year,&month,&day);days=fun(year,month,day);printf("%d年%d月%d日是该年的第%d天\n",year,month,day,days);}
问答题给定程序MODI1.C中fun函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的“单词”是指由空格隔开的字符串)。
例如,若输入“I am a student to take the examination.”,则应输出“I aM A studenT to takE thE examination.”。
请修改程序中的错误之处,使它能得出正确的结果。
注意:不要改动main函数,不得删行,也不得更改程序的结构!
#include
#include
#include
void fun(char *p)
{
int k = 0;
if (k)
{
/*********found**********/
if(p== ' ')
{
k = 0;
/**********found***********/
* (p) = toupper (* (p — 1))
else
k =1;
}
main ()
{
char chrstr [64] ;
int d ;
printf ( "/nPlease enter an English
sentence within 63 letters: ") ;
gets (chrstr) ;
d=strlen (chrstr) ;
chrstr [d] = " ;
chrstr [d+l] = 0 ;
printf ( "/n/nBefore
changing:/n %s"t chrstr);
fun (chrstr) ;
printf ("/nAfter changing:/n %s",chrstr) ;
}
问答题编写函数fun,其功能是:将ss所指字符串中所有下标为奇数位上的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入“abc4EFg”,则应输出“aBc4EFg”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>#include<string.h>void fun(char*ss){}void main(void){ char tt[51]; printf("\nPlease enter an character string within 50 characters:\n"); gets(tt); printf("\n\nAfter changing,the string\n%s",tt); fun(tt); printf("\nbecomes\n%s",tt);}
问答题下列给定程序中,函数fun的功能是:按以下递归公式求函数的值。例如,当给n输入5时,函数值为18;当给n输人3时,函数值为14。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>/********found********/fun(n)intc;/********found********/if(n=1)c=10;eIsec=fun(n-1)+2;return(c);main()intn;printf("Encern;");scanf("%d",printf("Theresult:%d/n/n",fun(n));
问答题下列给定的程序中,函数proc()的功能是:将str所指字符串中出现的t1所指字符串全部替换成t2所指字符串,所形成的新的字符串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。
例如,当str所指字符串中所指的内容为abcdabcdefg,t1所指字符串中的内容为bc,t2所指字符串中的内容为11时,结果在w所指的数组中的内容应为a11da11defg。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数。不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdlib.h>
#incIude<conio.h>
#include<stdio.h>
#include<string.h>
//****found****
int proc(char*str, char*t1, char*t2, char*w)
{
char *p, *r, *a;
strcpy(w, str);
while(*w)
{
p=w; r=t1;
//****found****
while(r)
if(*r==*p){r++; p++; }
else break;
if(*r=="/0")
{
=w; r=t2;
//****found****
while(*r){*a=*r; a++; r++}
w+=strlen(t2);
}
else w++;
}
}
void main()
{
char str[100], t1[100], t2[100], w[100];
system("CLS");
printf("/nPlease enter string str:");
scanf("%s", str);
printf("/nPlease enter substring t1:");
scanf("%s", t1);
printf("/nPlease enter substring t2:");
scanf("%s", t2);
if(strlen(t1)==strlen(t2))
{
proc(str, t1, t2, w);
printf("/nThe result is: %s/n", w);
}
else printf("Error: strlen(t2)/n");
}
问答题给定程序中,函数fun的功能是:调用随机函数产生20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置0)。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! 试题程序:#include<stdlib.h>#include<stdio.h>#define N 20void fun(int* a){ int i,x,n=0; x=rand()%20:/******found******/ while(n<__1__) for(1=0;1<n;i++/******found******/ if(X==a[i]) ___2___;/******found******/ if(==___2___) j a[n]==x;n++; x=rand()%20:}main.(){ int x[N]=}0},i; fun(x);pfinff(“The result:\n”);for(i=0;i<N;i++){ printf(“%4d”,x[i]); if((i+1)%5==0)pfinff(“\n”); } pfinff(“、n”);}
问答题综合应用
请编写函数fun,其功能是分别统计形参t所指二维数组中字母A和C的个数。
注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
#define M 14
void NONO();
void fun( char (*t)[M], int *a ,int *c)
{
}
void get( char (*s)[M] )
{ int i, j;
for( i=0; i
问答题
给定程序MODI1.C中函数劬的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。
例如,若输入8名学生的成绩:80.5 60 72 90.5 98 51.5 88 64
则低于平均分的学生人数为:4(平均分为:75.5625)。
请改正程序中的错误,使它能统计出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#define N 20
int fun (float *s,int n,float*aver)
{ float ave,t=0.0;
int count=0,k,i;
for(k=0;k<n;k++)
/*************found*************/
t=s[k];
ave=t/n;
for(i=0;i<n;i++)
if(s[i]<ave)count++;
/*************found*************/
*aver=Ave;
return count;
}
main()
{ float s[30],aver;
int m, i;
printf("/nPlease enter m:");scanf("%d",
printf("/nPlease enter %d mark:/n",m);
for(i=0;i<m;i++) scanf("%f",s+i);
printf("/nThe number of students:%d/n",fun(s,m,
printf("Ave=%f/n",aver);
}
问答题下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。
请改正函数fun中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
#include
typedef struct且aa
{ int data;
struct aa*next;
}NODE;
int fun(NODE*h)
{ int sum=0;
NODE*p;
p=h->next;
/*************found**************/
while(P->next)
{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=1;i<n;i++)
{
s=(NODE*)malloc(sizeof(NODE));
8->data=rand()%16;
S->next=P->next:
P->next=s:
p=p->next:
}
p->next=NULL;
retum h;
}
outlink(NODE*h)
{ NODE*p;
P=h->next;
printf("\n\n The LIST:\n\n HEAD");
while(P)
{printf("->%d",P->data);
P=P->next;}
printf("\n");
}
void main()
{ NODE*head;int sum;
system("CLS");
head=creatlink(10);
outlink(head);
sum=fun(head);
printf("\nSUM=%d",sunl);
}
问答题给定程序MODI1.C中函数fhn的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
#include
#define N 10
typedef struct ss
{ char num[10];
int s; }
STU;
STU *fun(STU a[], int m)
{STU b[N], *t;
int i,j,k;
/**********found**********/
t=(STU *)calloc(sizeof(STU),m)
for(i=0; i b[j] .s) j=i;
/**********found**********/
t(k)=b(j);
b[j].s=0;
}
return t;
}
outresult(STU a[], FILE *pf)
{ int i;
for(i=0; i10)
{ printf ("/nGive the number of the
students who have better score: ") ;
scanf("%d",
}
pOrder=fun(a,m);
printf("***** THE RESULT
***** /n");
printf("The top :/n");
for(i=0; i
问答题下列给定程序中,函数fun的功能是:在有n名学生、2门课成绩的结构体数组std中,计算出第1门课程的平均分,作为函数值返回。例如,主函数中给出了4名学生的数据,则程序运行的结果为:第1门课程的平均分是76.125000 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序:#include<stdio.h>typedef struet{ char num[8]; double score[2];}STU;double fun(STU std[],int n){ int i;/******found******/ double sum;/******found******/ for(i=0;i<2;i++)/******found******/ 8am+=std[i].8core[1]; return sum/n;}main(){ STU std[]={“N1001”,76.5,82.0,“N1002”,66.5,73.0,“N1005”,80.5,66.0,“N1006”,81.0,56.0}; printf(”第1门课程的平均分是:%lf\n”,fun(std,4));}
问答题假定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了尾部的*号之外,将字符中的其他*号全部删除。形参P已指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为****A*BC*DEF*G**********,删除后,字符串中的内容应当是ABCDEFG******* 注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序:#nclude<stdio.h>void fun(char*a,char*P){}main(){ char S[81],*t; void NONO(); printf(“Enter a string:\n”); gets(S); t=S; while(*t)t++; t一一; while(*t==‘*’)t一一; fun(s,t); prinff(“The string after deleted:\n”); puts(s); NONO();}void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/{ FILE*in,* out; int i;char S[81],*t; in=fopen(“in.dat”,“r”); out=fopen(“out.dat”,“w”); for(i=0;i<10;i++) { fscanf(in,“%s”,S); t=s: while(* t)t++; t一一: while(*t==‘*’)t一一; fun(s,t); fprinLf(out,“%s\n”,s); } fclose(in); felose(out);}
问答题下列给定程序中,函数fun的功能是:计算正整数num各位上的数字之积。 注意:不要改动maln函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include <stdio.h > #include <conio.h> long fun (long num) /********** found********** / long k; do k*=num% 10; /********** found********** / num/=10; while (num); return (k); main () long n; printf ("/ n please enter a num- ber: "); scanf("% 1d", printf("/n% 1d/n", fun(n));
问答题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了尾部的*号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供的字符串函数。 例如, 字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:ABCDEFG*******。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include <stdio.h>void fun(char *a, char *p){}main (){ char s[81],*t;void NONO ();printf("Enter a string:/n");gets (s);t=s;while(*t)t++;t-;while(*t=='*')t--;fun(s , t);printf("The string after deleted: /n");puts (s); NONO();}void NONO() {/*本函数用于打开文件,输入数据,调 用函数,输出数据,关闭文件。 */FILE *in, *out ; int i ; char s[81],*t ; in = fopen("in.dat","r"); out = fopen("out.dat","w"); for(i = 0 ; i < 10 ; i++) {fscanf(in, "%s", s);t=s;while(*t)t++;t--;while (*t=='*') t--;fun(s,t);fprintf(out, "%s/n", s) ;}fclose(in);fclose(out); }
问答题函数fun的功能是:逆置数组元素中的值。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数据的个数。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 void fun(int a[],int n)3 { int i,t;4 /**********found**********/5 for(2=0 ; i<__1__; i++)6 {7 t=a[i];8 /**********found**********/9 a[i]=a[n-1- __2__];10 /**********found**********/11 __3__=t;12 }13 }14 main()15 {int b[9]={1,2,3,4,5,6,7,8,9},i ;16 printf(''\nThe original data:\n'');17 for(i=0;i<9;i++)18 printf(''%4 d'',b[i]);19 printf(''\n'');20 fun(b,9);21 printf(''\nThe data after invert:\n'');22 for(2=0;i<9;i++)23 printf(''%4d'',b[i]);24 printf(''\n'');25 }
