问答题程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#define N 5
typedef struct student{
long sno;
char name[10];
float score[3];
}STU;
void fun(char*filename)
{FILE*fp;int i,j;
STU s[N],t ;
/*********found*********/
fp=fopen(filename,
【1】
)j
fread(s,sizeof(STU),N,fp);
fclose(fp);
for(i=0;i<N一1;i++)
for(j=i+1;j<N;j++)
/*********found*********/
if(s[i].sno
【2】
s[j].sno)
{t=s[i]; s[i]=s[j];
s[j]=t;}
fp=fopen(filename,"wb");
/*********found*********/
【3】
(s,sizeof(STU),N,fp);
fclose(fp);
}
main()
{STU t[N]={{ 10005,"ZhangSan",95,80,88},{10003,"LiSi",85,70,78},{10002,"CaoKai",75,60,88},{10004,"FangFang",90,82,87},{10001,"MaChao",91,92,77}},ss[N];
int i,j;FILE* fp;
fp=fopen("student.dat","wb");
fwrite(t,sizeof(STU),5,fp);
fclose(fp);
printf("\n\nThe original data
:\n\n');
for(j=0;j<N;j++)
{printf("\nNo:%id Name:%一8s
Scores:",t[J].sno,t[j].name);
for(i=0;i<3;i++)
printf("%6.2 f",t[j].score[i]);
printf("\n");
}
fun("student.dat");
printf("\n\nThe data after sorting:\n\n");
fp=fopen("student.dat","rb");
fread(ss,sizeof(STU),5,fp);
fclose(fp);
for(j=0;j<N;j++)
{printf("\nNo:%ld Name:%-8s Scores:",ss[j].sno,ss[j].name);
for(i=0;i<3;i++)
printf("%6.2 f",ss[j].scoEe[i]);
printf("\n");
}
}
问答题请编写一个函数,函数的功能是删除字符串中的所有空格。例如,主函数中输入”asd afaa z67”,则输出为”asdafaaz67”。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
void fun(char *str)
{
}
main ()
{
char str[81];void NONO ();
printf("Input a string:");
gets(str);
puts(str);
fun(str);
printf ("*** str: %s/n",str);
NONO();
}
void NONO ()
{
/*请在此函数内打开文件,输入调试数据,
调用fun函数,输出数据,关闭文件。*/
char str[81];
int n = 0;
FILE *rf, *wf ;
rf = fopen("in.dat","r");
wf = fopen("out.dat","w");
while(n < 10) {
fgets(str, 80, rf);
fun (str);
fprintf(wf, "%s", str);
n++ ;
}
fclose(rf);
fclose(wf);
}
问答题给定程序MODI1.C中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。
例如,在调用fun函数之前给a输入字符串:ABCDEFGHIJK,调用函数之后,字符数组b中的内容则为:ABC DEF GHI JK。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include
void fun(char *p, char *b)
{ int i, k=0;
while(*p)
{ i=l;
while(i<=3
k++; p++; i++;
}
if(*P)
{
/**********found**********/
b[k++]=" ";
}
}
b[k]='/0';
}
main ()
{ char a[80],b[80];
printf("Enter a string:");gets (a);
printf("The original string: ");
puts (a);
fun(a,b);
printf("/nThe string after insert
space:");puts(b);printf("/n/n");
}
问答题给定程序中,函数fun的功能是:统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#define N 8
typedef struct list
{ int data;
struct list *next;
} SLIST;
SLIST *creatlist(int *a);
void outlist(SLIST *);
void fun(SLIST *h, int *n)
{SLIST *p;
/**********found********** /
【1】=0;
p=h->next;
while(p)
{ (*n)++;
/**********found**********/
p=p->【2】;
}
}
main ()
{SLIST *head;
int
a[N]={12,87,45,32,91,16,20,
48},num;
head=creatlist(a);
outlist(head);
/****** ****found**********/
fun (【3】,
printf("/nnumber=%d/n",num);
}
SLIST *creatlist(int a[])
{SLIST *h,*p,*q; int i;
h=p=(SLIST*)malloc(sizeof(SLIST));
for(i=0; idata=a[i]; p->next=q; p=q;
}
p->next=0;
return h;
}
void outlist(SLIST *h)
{SLIST *p;
p=h->next;
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");
}
}
问答题下列给定程序中,函数fun的功能是:将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在w所指的数组中。要求t1和t2所指字符串的长度相同。
例如,当S所指字符串中的内容为“abcdabfabc”,t1所指子串中的内容为“ab”,t2所指子串中的内容为“99”时,结果在w所指的数组中的内容应为“abcdabf99c”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
void fun(char*s,char*t1,char*t2,char*w)
{
char*p,*r,*a;
strcpy(w,s);
/********found********/
while(w)
{
P=w;
r=t1;
while(*r)
/********found********/
if(*r==*p)
{
r++;
p++;
}
else
{
break;
}
if(*r=="/0")
a=w;
w++;
}
r=t2;
while(*r)
{
*a=*r;
a++;
r++;
}
}
main()
{
char s[100],t1[100],t2[100],w[100];
printf("/nPlease enter string s:");
scanf("%s",s);
printf("/nPlease enter substring t1:");
scanf("%s",t1);
printf("/nPlease enter substring t2:");
scanf("%s",t2);
if(strlen(t1)==strlen(t2))
{
fun(s,t1,t2,w);
printf("/nThe result is:%s/n",w);
}
else
{
printf("/nError;strlen(t1)!=strlen(t2)/n");
}
}
问答题程序通过定义学生结构体变量,存储了学生的学号、姓名和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】,
-(long)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
问答题假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参m给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用c语言提供的字符串函数。 例如,若字符串中的内容为****a*bc*def*g*******,删除后,字符串中的内容则应当是a*bc*def*g。 注意:部分源程序已给出。 请勿改动主函数main和其他函数中的任何内容。 试题程序: #include<stdio.h> #include<conio.h> void proc(char*a, int m, int h, int e) void main() char s[81], *t, *f; int m=0, tn=0, fn=0; printf("Enter a string: /n"); gets(s); t=f=s; while(*t) t++; m++; ) //m为字符串的长度 t--; //指针t指向字符串尾部 while(*t=='*') t--; tn++; //指针t指向最后一个字母,tn统计尾部'*'的个数 while(*f=='*') f++; fn++; //指针f指向第一个字母,tn统计前导'*'的个数 proc(s, m, fn, tn); printf("The string after deleted: /n"); puts(s); )
问答题给定程序中,函数fun的功能是:
在3×4的矩阵中找出在行上最大、在列上最小的那个元素,若没有符合条件的元素则输出相应信息。
例如,有下列矩阵:
1 2 13 4
7 8 10 6
3 5 9 7
程序执行结果为:find:a[2][2]=9
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
试题程序:
#inclucte < st c < 10.h >
#define M 3
#define N 4
void fun(int(*a)[N])
{int i=0,j,find=0,rmax,c,k;
while((i < M)&&(!find))
{Emax=a[i][0];c=0;
for(j=1;j < N;j++)
if(Emax < a[i][j]){
/*********found*********/
rmax=a[i][j]; c=
【1】
;}
find=1;k=0;
while(k < M&&find){
/*********found*********/
if(k!=i&&a[k][C] < =Emax)
find=
【2】
;
k++;
}
if(find)
printf("find:a[%d][%d]
=%d/n",i,c,a[i][c]);
/*********found*********/
【3】
;
)
if(!find)
printf("not found!/n");
}
main()
{int x[M][N],i,j;
printf("Enter number for
array:、n");
for(i=0;i < M;i++)
for(j=0;j < N;j++)
scanf("%d",&x[i][j]);
printf("The array:/n");
for(i=0;i < M;i++)
{for(j=0;j < N;j++)
printf("%3 d",x[i][j]);
printf("/n/n");
}
fun(x);
}
问答题假定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了尾部的*号之外,将字符中其他的*号全部删除。形参p已指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为“****A*BC*DEF*G*******”,删除后,字符串中的内容应当是“ABCDEFG*******”。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容。仅在函数fun的花括号中填入你编写的若干语句。 试题程序: #include<stdio.h> void fun(char*a,char*p) void main() char s[81],*t; printf("Enter a string:/n"); gets(s); t=s; while(*t) t++; t--;/*指针t指向字符串尾部*/ while(*t=='*') t--;/*指针t指向最后一个字母*/ fun(s,t); printf("The string after deleted:/n"); puts(s);
问答题给定程序中,函数fun的功能是:判断形参s所指字符串是否是“回文”(Palindrome),若是,函数返回值为1;不是,函数返回值为0。“回文”是正读和反读都一样的字符串(不区分大小写字母)。 例如,LEVEL和Level是“回文”,而LEVLEV不是。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!1 #include <stdio.h>2 #include<string.h>3 #include<ctype.h>4 int fun(char *s)5 { char *1p,*rp;6 /**********found**********/7 1p=__1__;8 rp=s+strlen(s)-1;9 while((toupper(*1p)==toupper(*rp))&&(1p<rp)){10 /**********found**********/11 1p++;rp__2__;}12 /**********found**********/13 { if(1p<rp) __3__;14 else return 1;15 }16 main()17 { char s[81];18 printf(''Enter a string:'');scanf(''%s'',s);19 if(fun(s))printf(''\n\''%s\''is a Palindrome.\n\n'',s);20 else printf(''\n\''%s\''isn't a Palindrome.\n\n'',s);21 }
问答题请编写函数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, 76, -4, 12, 82};
printf(”max=% d\n", fun(arr));
}
问答题请编写函数fun,其功能是:计算并输出下列多项式的值。
S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)
例如,若主函数从键盘给n输入8后,则输出为S=0.662872。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdio.h>
double fun(int n)
{
}
void main()
{
int n;
double s;
printf("/nlnput n:");
scanf("%d",
s=fun(n);
printf("/nS=%f/n", s);
}
问答题函数fun的功能是:将a、b两个两位正整数合并成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的干位和十位上。
例如,当a=45,b=12,调用该函数后c=1425。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
void fun(int a,int b,long*c)
{
}
main()
{
int a,b;
long c;
printf("Input a,b:");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("The result is:%ld/n",c);
}
问答题函数fun的功能是:将s所指字符串中除下标为偶数同时ASCII码值也为偶数的字符外,其余的全部删除;字符串中剩余字符所形成的新串放在t所指的数组中。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序: #include <stdio.h> #include <string.h> void fun(char *s, char t[]) void main() char s[100], t[100]; printf("/nPlease enter string S:"); scanf("%s", s); fun(s, t); printf("/nThe result is: %s/n", t);
问答题给定程序MODll.C中,函数fun的功能是:判断输入的任何一个正整数n,是否等于某个连续正整数序列之和。若是,则输出所有可能的序列,否则输出“不能分解”。例如:当输入100时,输出:100=9+10+11+12+13+14+15+16100=18+19+20+21+22请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序: #include<stdio.h> void fun(int n) { int j,b,c,m,flag=0; for(b=1;b<=n/2;b++){ /**********found**********/ n=m; c=b; while(m!=0&&m>=c){ /**********found**********/ m=m—C;C++ } /**********found**********/ if(m!=0) {prinff(“%d=”,n); for(j=b;j<c一1;j++)prinff(“%d+”,j); prinff(“%d\n”,j); flag=1: { } if(nag=0) prinff(“不能分解\n”); } main(){ int n; prinff(“请输入一个整数:”);seanf(“%d”,&n); fun(n);}
问答题函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。
例如,当a=45,b=12时,调用该函数后,c=1524。
请勿改动主函数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);
}
问答题下列给定程序中函数fun的功能是:逐个比较P、q所指两个字符串对应位置上的字符,并把ASCII值大或相等的字符依次存放到e所指的数组中,形成一个新的字符串。例如,若主函数中a字符串为“aBCDeFgH”,b字符串为“ABed”,则c中的字符串应为“aBcdeFgH”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>#include<string.h>void fun(char*p,char*q,char*c){/*********found*********/ int k=1 ;/*********found*********/ while(*p!=*q) { if(*p<*q)c[k]=*q; else c[k]=*P; if(*P)P++; if(*q)q++; k++; }}main(){ char a[10]="aBCDeFgH",b[10]="ABcd",c[80]={'0'}; fun(a,b,c); printf("The string a:");puts(a); printf("The string b:");puts(b); printf("The result:");puts(c);}
问答题下列给定程序中,函数fun的功能是:求k!(k < 13),所求阶乘的值作为函数值返回。例如,若k=10,则应输出3628800。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序:#include < eonio.h >#include < stdio.h >long fun(int k){/*********found*********/ if k >1 return(k* fun(k一1)); return 1;}main(){ int k=10; printf("%d!=%ld/n",k,fun(k));}
问答题下列给定程序中函数fun()的功能是:求出以下分数序列的前n项之和。和值通过函数值返回。
21,32,53,85,138,2113,... 例如,若n=5,则应输出8.391667。
请改正程序中的错误,使其得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构。
试题程序 #include
<stdlib.h> #include <conio.h> #include
<stdio.h> double fun(int n) { int a=2, b=1, c,
k; /* * * * *found* * * * * / int
s=0.0; for(k=1; k<=n; k++) { /* * * * *found*
* * * * / s=s+(Double)a/b c=a; a=a+b;
b=c; } return(s); }
问答题输入若干有序数放在数组中。然后输入一个数,插入到此有序数列中,插入后,数组中的数仍然有序。请对插在最前、插在最后、插在中间三种情况运行程序,以便验证程序是否正确。
