问答题请编写函数fun,该函数的功能是:移动字符串中的内容,移动的规则如下:把第1~m个字符平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。 例如:字符串中原有的内容为ABCDEFGHIJK,m的值为3,则移动后字符串中的内容应该是DEFGHIJKABC。 注意:部分源程序在文件PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 文件PROG1.C内容如下: #include<stdio.h> #include<string.h> #define N 80 void fun(char *w,int m) void main( ) char a[N]="ABCDEFGHIJK": int m; printf("The original string:/n"); puts(a); printf("/nEnter m:/n"); scanf("%d", puts(a); printf("/n");
问答题下列给定程序中函数Creatlink的功能是:创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。
请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<stdlib.h>
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=1; i<=n; i++)
{s=(NODE*)malloc(sizeof(NODE));
s->data=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,其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。 例如,输入如下整数:876 675 896 101 301 401 980 431 451 777 则输出结果为:6,980 注意:部分源程序在文件PROGI.C文件中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include <stdio.h>void fun(int *s, int t, int *k){}main (){int a[10]={876,675,896,101,301,401,980,431,451,777},k;voidNONO();fun(a, 10, printf("%d, %d/n", k, a[k]);NONO () ; } void NONO (){/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ int a[10], i, k, j ; FILE *rf, *wf ; rf = fopen("in.dat","r"); wf = fopen("out.dat","w");for(i =0 ; i <10 ; i++) { for(j = 0 ; j < 10 ; j++) fscanf (rf, "%d", fun(a, 10, fprintf(wf,"%d,%d/n",k,a[k]);}fclose(rf);fclose(wf); }
问答题m个人的成绩存放在score数组中,请编写函数fun,它的功能是将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。
例如,当score数组中的数据为10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below所指的数组中的数据应为10、20、30、40。
注意:部分源程序存在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入编写的若干语句。
给定源程序如下。
#include<stdio.h>
#include<string.h>
int fun(int score[],int m,int below[])
{
}
main()
{ int i,n,below[9];
int score[9]={10,20,30,40,50,60,70,80,90);
n=fun(score,9,below);
printf("/nBelow the average score are:");
for(i=0;i<n;i++)printf("%d",below[i]);
}
问答题给定程序中,函数fun的功能是:
调用随机函数产生20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置0)。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include < stdlib.h >
#include < stdio.h >
#define N 20
voic:l fun ( int *a)
{ int i, x, n=0;
x = rand () %20;
/*********found*********/
while (n <
【1】
)
【2】
;
/*********found*********/
if(i==
【3】
)
{a[n]=x;n++;)
x = rand () % 20;
}
}
main ()
{ int x[N] = {0),i;
fun ( x );
printf ("The result : /n") ;
for( i=0; i < N; i++
{ printf ("% 4d",x[i] ) ;
if((i+1)%5==0)printf("/n");
}
printf ("/n/n") ;
}
问答题规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:将字符串尾部的*号全部删除,前面和中间的*号不动。例如,字符串中的内容为:“****A*BC*DEF*G*******”,删除后,字符串中的内容应当是:“****A*BC*DEF*G”。在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include<stdio.h> void fun(char*a) { } main() { char s[81];void NONO(); printf(“Enter a string:\n”);gets(s); fun(s); printf(“The string after deleted:\n”);puts(s); NONO(); } void NONO() {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE*in,*out; int i;char s[81]; in=fopen(“in.dat”,“r”); out=fopen(“out.dat”,“W”); for(i=0;i<10;i++) { fscanf(in,“%s”,s); fun(s); fprintf(out,“%s\n”,s); } fclose(in); fclose(out); }
问答题给定程序中,函数fun的功能是:利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss所指字符串数组中共有N个字符串,且串长小于M。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#define N 5
#define M 8
void fun (char (*ss) [M] )
{ char *ps[N],*tp; int i,j,k;
for (i=0; i
问答题下列给定程序中,函数fun的功能是:计算n!。
例如,给n输入5,则输出120.000000。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<conio.h>
double fun(int n)
{
double result=1.0;
/********found********/
if n==0
return 1.0;
while(n>1&&n<170)
/********found********/
result=n--;
return result;
}
main()
{
int n;
printf("Input N:");
scanf("%d",&n);
printf("/n/n%d!=%lf/n/n",n,fun(n));
}
问答题学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数proc(),其功能是:按分数的高低排列学生的记录,高分在前。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#define M 16
typedef struct
{
char num[10];
int s;
}
STREC;
void proc(STREC a[])
{
int i, j;
STREC t;
for(i=1; i<M; i++) /*用冒泡法来按从高到低排序
排序*/
for(j=0; j<M-1; j++)
if(a[j].s<a[j+1].s) /*按分数的高低排列学生的记录,高分在前*/
{t=a[j]; a[j]=a[j+1]; a[j+1]=t; }
}
void main()
{
STREC stu[M]={{"GA005", 85}, {"GA003", 76},
{"GA002", 69}, {"GA004", 85}, {"GA001", 91},
{"GA007", 72}, {"GA008", 64}, {"GA006", 87},
{"GA015", 85}, {"GA013", 91}, {"GA012", 64},
{"GA014", 91}, {"GA011", 66}, {"GA017", 64},
{"GA018", 64}, {"GA016", 72}};
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的功能是将不带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、6、8、10。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#include
#define N 6
typedef struct node {
int data;
struct node *next;
} NODE;
void fun(NODE *h)
{ NODE *p, *q; int t;
p = h;
while (p) {
/**********found**********/
q = __1__ ;
/**********found**********/
while (__2__)
{ if (p->data > q->data)
{ t = p->data; p->data = q->data; q->data = t; }
q = q->next;
}
/**********found**********/
p = __3__ ;
}
}
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]= {0, 10, 4, 2, 8, 6 };
head=creatlist(a);
printf("/nThe original list:/n");
outlist(head);
fun(head);
printf("/nThe list after inverting :/n");
outlist(head);
}
问答题请编写函数fun, 函数的功能是: 将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中, 一维数组中数据的个数存放在形参n所指的存储单元中。
例如, 二维数组中的数据为:
33 33 33 33
44 44 44 44
55 55 55 55
则一维数组中的内容应是:
33 33 33 33 44 44 44 44 55 55 55 55。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include
void fun(int (*s)[10], int *b, int *n, int mm, int nn)
{
}
main()
{ int w[10][10] = {{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j ;
int a[100] = {0}, n = 0 ;
printf("The matrix:/n") ;
for(i = 0 ; i < 3 ; i++)
{ for(j = 0 ; j < 4 ; j++) printf("=",w[i][j]) ;
printf("/n") ;
}
fun(w, a,
printf("The A array:/n") ;
for(i = 0 ; i < n ; i++) printf("=",a[i]);printf("/n/n") ;
NONO() ;
}
问答题给定程序MODI1.C中函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据赋0~m-1的值。
#include<Stdio.h>
#include<conio.h>
#include<stdlib.h>
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=1;i<=n;i++)
{ s=(NODE*)malloc(sizeof(NODE));
s->data=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/n THE LIST:/n/n HEAD");
while(p)
{ paintf("->%d",p->data);
p=p->next;
}
printf("/n");
}
main()
{ NODE *head;
clrscr();
head=Creatlink(8,22);
outlink(head);
}
问答题给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>typedef struet{ int num; char name[10];}PERSON;/******found******/void fun(PERSON___1___){/******found******/___2___temp:if(std[0].num>std[1],num){ temp=std[0]; std[0]=std[1]; std[1]=temp; } if(std[0].num>sta[2].num) { temp=std[0]; std[0]=std[2]; std[2]=temp;}if(std[1].num>std[2].num){ temp=std[1]; std[1]=std[2]; std[2]=temp; }}main(){PERSON std[]={5,“Zhanghu”,2,“WangLi”,6,“Linblin”}; int i;/******found******/fun(___3___);prinffI=“\nThe result is:\n”);for(i=0;i<3;i++) printf(“%d,%s\n”,std[i],num,std[i].name);}
问答题请编写函数fun,其功能是:将一组得分中,去掉一个最高分和一个最低分,然后求平均值,并通过函数返回。函数形参a指向存放得分的数组,形参n中存放得分个数(n>2)。例如,若输入9.9 8.5 7.6 8.5 9.3 9.5 8.9 7.8 8.6 8.4十个得分,则输出结果为:8.687500。注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include<stdio.h>void NONO();double fun(double a[],int n){}main(){ double b[10],r;int i; printf("输入10个分数放入b数组中:"); for(i=0;i<10;i++) scanf("%lf",&b[i]); printf("输入的10个分数是:"); for(i=0;i<10;i++) printf("%4.1lf",b[i]); printf("\n"); r=fun(b,10); printf("去掉最高分和最低分后的平均分:%f\n",r); NONO(); } void NONO() {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE*fp,*wf; int i,j ; double b[10],r; fp=fopen("in.dat","r"); wf=fopen("out.dat","w"); for(i=0;i<10;i++){ for(j=0;j<10;j++){ fscanf(fp,"%lf",&b[j]); } r=fun(b,10); fprintf(wf,"%f\n",r); } fclose(fp); fclose(wf);}
问答题给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。
例如,有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000
移动后的输出为:30 6 17 15 26 46 32 40 45 48
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#include
#define N 10
double fun(double *x)
{ int i, j; double av, y[N];
av=0;
/**********found**********/
for(i=0; i
for(i=j=0; i
if( x[i]
/**********found**********/
y[j]=x[i]; x[i]=-1; __2__;}
i=0;
while(i
{ if( x[i]!= -1 ) y[j++]=x[i];
/**********found**********/
__3__;
}
for(i=0; i
return av;
}
main()
{ int i; double x[N];
for(i=0; i4.0f ",x[i]);}
printf("/n");
printf("/nThe average is: %f/n",fun(x));
printf("/nThe result :/n",fun(x));
for(i=0; i5.0f ",x[i]);
printf("/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;
fp = fopen(____1____ ,"rb+");
fseek ( ____2____, — (long) sizeof (STU) ,
SEEK END);
fwrite (&n,sizeof (STU) ,1, 3 );
fclose ( fp) ;
}
main ()
{STU t [N] ={ {10001,"MaChao",91,92,
77},{10002,"CaoKai",75,60 f 88},
{10003,"LiSi",85t 70,78 },{10004,
"FangFang",90,82,87 ] ,{10005,
"ZhangSan",95,80,88}};
STU n= { 10006,"ZhaoSi",55,70,68 } ,
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:/nYn") ;
{ printf("/nNo: %ld Name: %—80
Scores: ",ss [j ] .sno, ss [j ] .name) ;
for (i=0; i<3; 1++) printf
("%6.2f ", oS [j] .score [i] ) ;
printf ("/n") ;
}
fun ( "student.dat", n) ;
printf ("/nThe data after modifing:
fp = fopen ("student.dat", "rb") ;
fread(ss, sizeof (STU) , N, fp) ;
fclose ( fp) ;
{ printf("/nNo: oold Name: %—8s
Scores: ",ss [j] .sno, ss [j ] .name) ;
for (i=0; i<3; 1++) printf
("%6.2f ", SS [j] .score [i] ) ;
printf ("/n") ;
}
}
问答题编写函数fun,其功能是:求出1—1000之间能被7或11整除,但不能同时被7和1 1整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。 注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序:#include<stdio.h>void fun(int*a,int*n){}main(){int aa[1000],n,k;void NONO();fun(all,&n);for(k=0;k<n;k++) if((k+1)%10==0) printf(“\n”); else prinff(“%5d”,aa[k]); NONO();}void NONO()/*c本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/{int aa[1000],n,k;FILE*fp;fp=fopen(“out.dat”,“W”);fun(aa,&n);for(k=0;k<n;k++) if((k+1)%10==0) fprinff(fp,“\n”); else fprintf(fp,“%5d”,aa[k]); fclose(fp);}
问答题
请编一个函数fun(char*s),函数的功能是把s所指字符串中的内容逆置。
例如:字符串中原有的字符串为:abcdefg,则调用该函数后,串中的内容为:gfedcba。
注意:部分源程序存在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<string.h>
#include<stdio.h>
#define N 81
fun(char *s)
{
}
NONO()
{/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。 */
int i;
char a[N];
FILE *rf, *wf;
rf=fopen("in.dat", "r");
wf=fopen("out.dat", "w");
for(i=0; i<10; i++) {
fscanf(rf, "%s", a);
fun(a);
fprintf(wf, "%s/n", a);
}
fclose(rf);
fclose(wf);
}
main()
{char a[N];
printf("Enter a string:"); gets(a);
printf("The original string is:"); puts(a);
fun(a);
printf("/n");
printf("The string after modified:");
puts(a);
NONO();
}
问答题给定程序MODl1.C中函数fun的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。 例如,若字符串为abcd,则应输出:dcba。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 /**********found**********/3 fun(char a)4 { if (*a)5 { fun(a+1);6 /**********found**********/7 printf(''%c''*a);8 }9 }10 main()11 { char s[10]=''abcd'';12 printf(''处理前字符串=%s\n处理后字符串='',s);13 fun(s);printf(''\n'');14 }
问答题下列给定程序中函数fun的功能是:将P所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。 例如,若给a输入字符串:“ABCDEFGHIJK”,调用函数后,字符数组b中的内容为:“ABC DEFGHI JK”。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序:#1nclude < stdio.h >void fun(char*p,char*b){int i,k=0; while(*p) { i=1; while(i < =3&&*P){/*********found*********/ b[k]=p; k++;p++;i++; } if(+p) {/*********found*********/ b[k++]=""; } } b[k]='/0';}main(){ char a[8 0],b[8 0]; printf("Enter a string:"); gets(a); printf(”The originalstring:"); puts(a); fun(a,b); printf("/nThe string afterinsert space:"); puts(b);printf("/n/n");}
