问答题给定程序MODI1.C中函数fun的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。
在每组中,可以没有黑球,但必须要有红球和白球。
组合数作为函数值返回。正确的组合数应该是15。程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动maln函数,不得增行或删行,也不得更改程序的结构!
#include
int fun()
{ int i,j ,k,sum=0;
printf("/nThe result :/n/n") ;
{ k=8—i—j;
/*********found**********/
if(K>=0 &K<=6)
{ sum=sum+1;
printf ( "red: o04d
white: %4d black: %4d/n", i,j ,k) ;
}
}
}
return sum;
}
main ()
{ int sum;
sum=fun () ;
printf ("sum =%4d/n/n",sum) ;
}
问答题学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数proc(),它的功能是按分数的高低排列学生的记录,低分在前。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#define M 16
typedef struct
{
char num[10];
int s;
}STREC;
void proc(STREC stu[])
{
}
void main()
{
STREC stu[M]={{"GA005",88},{"GA003",64},
{"GA002",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;
proc(stu);
printf("The data after sorted:/n");
for(i=0;i<M;i++)
{
if((i)%4==0)
//每行输出4个学生记录
printf("/n");
printf("%s%4d",stu[i].num,stu[i].s);
}
printf("/n");
}
问答题请编写函数fun:在形参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中。 注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。1 #include<stdio.h>2 void NONO();3 void fun(int *a,int *b,int *c,int*d)4 {5 }6 main()7 {int a,b,c,d;8 printf(''请输入4个整数:'');9 scanf(''%d%d%d%d'',19 fp=fopen(''in.dat'',''r'');20 wf=fopen(''out.dat'',''w'');21 for(i=0;i<5;i++)22 {fscanf(fp,''%d%d%d%d'',&a,&b,&c,&d);23 fun(&a,&b,&c,&d);24 fprintf(wf,''a=%d,d=%d\n'',a,d);25 }26 fclose(fp);27 fclose(wf);}
问答题程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#define N 5
typedef struct student {
long sno;
char name[10];
float score[3];
} STU;
void fun(char *filename, STU n)
{ FILE *fp;
/**********found**********/
fp = fopen(__1__, "rb+");
/**********found**********/
fseek(__2__, -1L*sizeof(STU), SEEK_END);
/**********found**********/
fwrite(
fclose(fp);
}
main()
{ 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}};
STU n={10006,"ZhaoSi", 55, 70, 68}, ss[N];
int i,j; FILE *fp;
fp = fopen("student.dat", "wb");
fwrite(t, sizeof(STU), N, fp);
fclose(fp);
fp = fopen("student.dat", "rb");
fread(ss, sizeof(STU), N, fp);
fclose(fp);
printf("/nThe original data :/n/n");
for (j=0; j
{ printf("/nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);
for (i=0; i<3; i++) printf("%6.2f ", ss[j].score[i]);
printf("/n");
}
fun("student.dat", n);
printf("/nThe data after modifing :/n/n");
fp = fopen("student.dat", "rb");
fread(ss, sizeof(STU), N, fp);
fclose(fp);
for (j=0; j
{ printf("/nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);
for (i=0; i<3; i++) printf("%6.2f ", ss[j].score[i]);
printf("/n");
}
}
问答题函数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%d",
fun(a,b,
printf("The result is:%ld/n",c);
}
问答题给定程序MODI1.C中函数 fun 的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#define N 20
int fun ( int * a, int n )
{ int i, m, t, k ;
for(i=0;ia[m]) k=m;
t=a[i];a[i]=a[m];a[m]=t;
}
}
main( )
{ int x, b[N]={11,5,12,0,3,6,9,7,10,8}, n=10, i;
for ( i=0; i
问答题M名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点。请编写函数proc(),它的功能是:找出学生的最高分,由函数值返回。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<stdlib.h>
#define M 8
struct slist
{double s;
struct slist * next;
};
typedef struct slist STREC;
double proc(STREC*h)
{
}
STREC*creat(double*s)
{
STREC*h,*p,*q;
int i=0;
h=p=(STREC*)malloc(sizeof(STREC));
p->s=0;
while(i<M)
/产生8个结点的链表,各分数存入链表中
{ q=(STREC*)maUoc(sizeof(STREC));
p->s=s[i];i++;p->next=q;p=q;
}
p->next=NULL。
return h;//返回链表的首地址
}
void outlist(STREC*h)
{
STREC*p;
p=h;
print{("head");
do
{
printf("->%2.0f",p->s);p=p->next;}
//输出各分数
while(p->next!=NULL);
printf("/n/n");
}
void main()
{
double stu[M]={60,70,80,90,65,75,85,95},
max;
STREC*h;
h=creat(stu);
outlist(h);
max=proc(h);
printf("max=%6.1f/n",max);
}
问答题给定程序MODI1.C中函数fun的功能是:逐个比较p、q所指两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到C所指数组中,形成一个新的字符串。 例如,若主函数中a字符串为:aBCDeFgH,主函数中b字符串为:ABcd,则c中的字符串应为:aBcdeFgH。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。1 #include<stdio.h>2 #include<string.h>3 void fun(char *p,char*q,char*c)4 {5 /**********found**********/6 int k=1;7 /**********found***********/8 while(*p!=*q)9 { if(*p<*q) c[k]=*q;10 else c[k]=*p;11 if(*p)p++;12 if(*q)q++;13 k++;14 }}15 main()16 { char a[10]=''aBCDeFgH'',b[10]=''ABcd'',c[80]={'\0'};17 fun(a,b,c);18 printf(''The string a: '');puts(a);19 printf(''The string b: '');puts(b);20 printf(''The result:''); puts(c);21 }
问答题
编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。
x
n+1
=cos(x
n
)
迭代步骤如下:
(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=0.739086。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<math.h>
#include<stdio.h>
double fun()
{
}
main()
{
void NONO();
printf("Root=%f/n", fun());
NONO();
}
void NONO()
(/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE*wf;
wf=fopen("out.dat", "w");
fprintf(wf, "%f/n", fun());
fclose(wf);
}
问答题给定程序MODI1.C中函数fun的功能是:统计字符串中各元音字母(即:A、E、I、O、U)的个数。
注意:字母不分大、小写。
例如:若输入:THIs is a boot,则输出应该是:1、0、2、2、0。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
void fun (char *s,int num[5])
{ int k,i=5;
num [1] =0;
switch (s)
{ case 'a':case 'A':{i=0;break; }
case 'e' :case 'E' : {i=l;break; }
case 'i' :case 'I' : {1=2;break; }
case 'o' :case 'O' : {i=3;break; }
case 'u' :case 'U' : {i=4;break; }
if (i >=0)
}
}
main ()
{ char sl[81]; int numl[5],1;
printf ( "/nPlease enter a string:
fun (s1, num1) ;
for (i=0; i < 5; 1++) printf ("%d
",num1[i] ) ; printf ("/n") ;
}
问答题规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:使字符串中尾部的*号不多于n个,若多于n个,则删除多余的*号;若少于或等于n个,则不做任何操作,字符串中间和前面的*号不删除。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序: #include<stdio.h> void fun(char*a, int n) main() char s[81]; int n; printf("Enter a string:/n"); gets(s); printf("Enter n:"); scanf("%d",&n); fun(s, n); printf("The string after deleted:/n"); puts(s);
问答题程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所 指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学 生的数据不变。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#define N 5
typedef struct student {
long sno;
char name[10];
float score[3];
} STU;
void fun(char *filename, STU n)
{ FILE *fp;
fp = fopen(__1__, "rb+");
fseek(__2__, -1L*sizeof(STU), SEEK_END);
fwrite(
fclose(fp);
}
main()
{ 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}};
STU n={10006,"ZhaoSi", 55, 70, 68}, ss[N];
int i,j; FILE *fp;
fp = fopen("student.dat", "wb");
fwrite(t, sizeof(STU), N, fp);
fclose(fp);
fp = fopen("student.dat", "rb");
fread(ss, sizeof(STU), N, fp);
fclose(fp);
printf("\nThe original data :\n\n");
for (j=0; j
问答题假定输入的字符串中只包含字母和“*”号。请编写函数fun,它的功能是:使字符串中尾部的“*”号不得多于n个;若多于n个,则删除多余的“*’号;若少于或等于n个,则什么也不做,字符串中间和前面的“*’号不删除。
例如,字符串中的内容为:****A*BC*DEF*G******,若n的值为4,删除后,字符串中的内容应当是:
****A*BC*DEF*G****;若n的值为7,则字符串中的内容仍为:****A*BC*DEF*G******。n的值在主函数中输入。
在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
voici fun (char *a,int n)
{
}
main()
{char s[81]; int n;
void NONO ();
printf ("Enter a string:/n");
gets (s);
printf ("Enter n:");scanf("%d", &n);
fun (s,n);
printf( "The string after deleted:
/n");puts(s);
NONO();
}
void NONO()
{/*本函数用于打开文件,输入数据,调用函
数,输出数据,关闭文件。 */
FILE *in, *out ;
int i, n ; char sl81];
in= fopen ("in.dat","r");
out = fopen ("out.dat","w");
for (i= 0 ; i < 10 ; i++) {
fscanf (in, "%s",s);
fscanf (in, "%d",&n);
fun (s,n);
fprintf (out, "%s/n",s) ;
}
fclose (in);
fclose (out);
}
问答题下列给定程序中,函数fun的功能是:按以下递归公式求函数的值。例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>/**********found**********/fun(n){intc;/**********found**********/if(n=1)c=10;elsec=fun(n-1)+2;return(c);}main(){intn;printf("Entern;");seanf("%d",printf("Theresult:%d/n/n",fun(n));}
问答题已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序:#include < stdlib.h >#include < stdio.h >#include < string.h >#include < conio.h >#define N 10typedeistruct ss/*定义结构体*/{ char hum[10]; int s;}STU;fun(STU a[],STU*s){}void main(){ STU a[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A0 7",79},{"A08",61},{"A0 9",80},{"A10",71)},m; int i; system("CLS"); print("/****The originaldata****"); for(i=0;i < N;i++) printf ("No=%s Hark=%d/n",a[i].num,a[i].s); fun(a,&m); printf,"***THE RESULT****/n"); printf("The top:%s,%d/n",m.num,m.s);}
问答题请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序:#define M 4#include < stdio.h >int fun(int a[][M]){}void main(){ int arr[2][M]={5,8,3,45,7 6,一4,12,82}; printf("max=%d/n",fun (arr));}
问答题下列给定程序中,函数fun的功能是:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>int fun(int m){ int i,k; for(i=m+1;;i++) { for(k=2;k<i;k++)/*********found*********/ if(i%k!=0) break;/*********found*********/ if(k<i) return(i); }}void main(){int n; system("CLS"); printf("\nPlease enter n:"); scanf("%d",&n); print;f('%d\n',fun(n));}
问答题给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。
请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
typedef struct aa
{ int data;
struct aa *next;
} NODE;
NODE *Creatlink(int n, int m)
{NODE *h=NULL, *p, *s;
int i;
/********** found***********/
p=(NODE)malloc(sizeof(NODE));
h=p;
p->next=NULL;
for(i=l; idata=rand() %m;
s->next=p-> next;
p->next=s; p=p->next;
}
/********** found***********/
return p;
}
outlink(NODE *h)
{NODE *p;
p=h->next;
printf ("/n/nTHE LIST : /n/n HEAD") ;
while(p)
{ printf("->%d ",p->data);
p=p->next;
}
printf("/n");}
main()
{NODE *head;
head=Creatlink(8,22);
outlink(head); }
问答题请编写函数fun,其功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串“一1234”,则函数把它转换为整数值一1234。 注意:部分源程序给出如下。 请勿改动主函数maln和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序:#include < stdio.h >#include < string.h >long fun(char*p){}void main(){ char s[6]; long n; printf("Enter a string:/n"); gets(s); n=fun(s); printf("%ld/n",n);}
问答题下列给定程序中,函数fun的功能是:在形参ss所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置(即下标值),若未找到则返回一1。ss所指字符串数组中共有N个内容不同的字符串,且串长小于M。
请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANKl.C中。不得增行或删行,也不得更改程序的结构!
#include
#include #define N 5 #define M 8 int fun(char(*ss)[M],char*t) {int i: /**********found**********/ for(i=0;i<【1】;i++) /**********found**********/ if(strcmp(ss[i],t)==0)return【2】; return一1: } main() {char ch[N][M]={''if,''while'',''switch'',''int'',''for''},t[M]; int n,i; printf(''\nnThe original string\n\n''); for(i=0;i<N;i++)puts(ch[i]); printf(''\n''); printf(''\nEnter a string for search:'');gets(t); n=fun(ch,t); /**********found**********/ if(n==【3】printf(''\nDon't found!\n''); else printf(''\nThe position is%d\n'',n); }
