问答题
给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行和删行,也不得更改程序的结构!
#include<stdio.h>
#define N 20
void fun(int a[], int n)
{ int i, j, t, p;
for(j=0; j<n-1; j++){
/**********found**********/
p=j
for(i=j; i<n; i++)
if(a[i]<a[p])
/**********found**********/
p=j;
t=a[p]; a[p]=a[j]; a[j]=t;
}
}
main()
{
int a[N]={9,6,8,3,-1}, i, m=5;
printf("排序前的数据:");
for(i=0; i<m; i++)printf("%d", a[i]); printf("/n");
fun(a, m);
printf("排序后的数据:");
for(i=0; i<m; i++)printf("%d", a[i]);
printf("/n");
}
问答题N名学生的成绩已在主函数中放人一个带头结点的链表结构中,h指向链表的头结点。请编写函数fun,其功能是:求出平均分,并由函数值返回。 例如,若学生的成绩是:85,76,69,85,9l,72,64,87,则平均分应当是:78625。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若千语句。 试题程序: #include<stdlib.h> #include<stdio.h> #define N 8 struct 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*)mallocsizeof(STREC)); P->s=0; whilel(i<N) q=(STREC*)mallodsizeof(STREC)); q->s=s[i];i++lp->next=q;P=q; p->next=0; return h; ouclist(STREC*h) STREC*p; P=h->next; printf("head"); do printf("->%4.1f",p->s); P=P->next;/*输出各成绩*/ while(p!=NULL); printf("/n/n"); void main() double s[N]=85,76,69,85,91,72,64,87,ave; STREC*h; h=creat(s);outlist(h); ave=fun(h); printf("ave=%6.3f/n",ave);
问答题下列给定程序中函数fun的功能是:将m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指存储区中。例如:把三个串“abe”、“CD”、“EF”连接起来,结果是“abcCDEF”。请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
[试题源程序]
#include<stdio.h>
#include<string.h>
void fun(char str[][10],int m,char*pt)
{
/**********found**********/
Int k,q,i;
for(k=0;k<m;k++)
{q=strlen(str[k]);
for(i=0;i<q;i++)
/**********found**********/
pt[i]=str[k,i];
pt+=q;
pt[0]=0;
}
}
main()
{int m,h;
char s[10][10],p[120];
printf("Please enter m:");
scanf("%d",gets(s[0]);
printf("Please enter%d string:",m);
for(h=0;h<m;h++)gets(s[h]);
fun(s,m,p);
printf("The result is:%s",p);
}
问答题给定程序中,函数fun的功能是:
找出形参s所指字符串中出现频率最高的字母(不区分大小写),并统计出其出现的次数。
例如,形参s所指的字符串为:abcAbsmaxless,程序执行后的输出结果为:
letter'a':3times
letter's':3times
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include < stdio.h >
#include < string.h >
#include < ctype.h >
void fun (char*s)
{ int k[26] = {0},n,i,max =0;
char ch;
while ( * s)
{ if ( isalpha ( * s)) {
/*********found*********/
ch = tolower (
【1】
) ;
n =ch 一 'a';
/*********found*********/
k[n]+=
【2】
;
}
s ++ ;
/*********found*********/
if(max < k[n]) max=
【3】
;
printf ("/nAfter count :/n") ;
for (i=0; i < 26;i ++)
if (k[i] ==max)
printf ("/nletter /'%c/': %d
times/n" , i + 'a',k[i] ) ;
}
main ()
{ char s[81];
printf ("/nEnter a string:/n/n") ;
gets (s) ;
fun (s) ;
}
问答题假定输入的字符串中只包含字母和*号。请编写函数 fun(),它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的K度,形参h给出了字符串中前导*号的个数,形参e给出了字符山中最后*号的个数。在编写函数时,不得使用c语言提供的字符串函数。 例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仪在函数fun的花括号中填入所编写的若干语句。 试题程序: #include <stdio.h> #include <conio.h> void fun (char *a;int n ,int h ,int e) 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统计导'*'的个数*/ fun( s, m, fn, tn); printf ("The string after deleted: /n"); puts (s);
问答题请编写一个函数,函数的功能是删除字符串中的所有空格。
例如,主函数中输入“asd af aa z67”,则输出为“asdafaaz67”。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include<stdio.h>
#include<ctype.h>
void fun(char*str)
{
}
main()
{
char str[81];
printf("Input a string:");
gets(str);
puts(str);
fun(str);
printf("***str:%s/n", str);
}
问答题下列给定程序中,函数fun的功能是:输出M×M整数方阵,然后求两条对角线上元素之和,并作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#define M 5/*********found*********/int fun(int n,int xx[][]){ int i,j,sum=0; printf("\nThe%d x%d matrix:\n",M,M); for(i=0;i<M;i++) { for(j=0;j<M;j++)/*********found*********/ printf("%f",xx[i][j]); printf("\n"); } for(i=0;i<n;i++) sum+=xx[i][i]+xx[i][n—i一1]; return(sum);}void main(){ 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)}; system("CLS"); printf("\nThe SLIm of all elements 013 2 diagnals is%d",fun(M,aa));}
问答题函数fun的功能是:把形参a所指数组中的最小值放在元素a[0]中,接着把形参a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3];其余以此类推。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7;则按规则移动后,数据排列为:1、9、2、8、3、7、4、6、5。形参n中存放a所指数组中数据的个数。
注意:规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
# include
#define N 9
void fun(int a[], int n)
{ int i,j, max, min, px, pn, t;
for (i=0; i
{
/**********found**********/
max = min = ___1___;
px = pn = i;
for (j=i+1; j
/**********found**********/
if (max___3___)
{ min = a[j]; pn = j; }
}
if (pn != i)
{ t = a[i]; a[i] = min; a[pn] = t;
if (px == i) px =pn;
}
if (px != i+1)
{ t = a[i+1]; a[i+1] = max; a[px] = t; }
}
}
main()
{ int b[N]={9,1,4,2,3,6,5,8,7}, i;
printf("/nThe original data :/n");
for (i=0; iprintf("/n");
fun(b, N);
printf("/nThe data after moving :/n");
for (i=0; iprintf("/n");
}
问答题int x=6, y=7;
printf(“%d,”,x++); printf(“%d\n”,++y);
程序的输出结果是__________。
问答题编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。
例如,假定输入的字符串为“asd asasdfg asd as zx67 asd mklo”,子字符串为“as”,则应当输出6。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
int fun(char *sir, char *substr)
{
}
void main()
{
char str[81], substr[3];
int n;
system("CLS");
printf("输入主字符串:");
gets(str);
printf("输入子字符串:");
gets(substr);
puts(str);
puts(substr);
n=fun(str, substr);
printf("n=%d/n", n);
}
问答题程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数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】
) ;
fread (s, sizeof (STU) , Nf fp) ;
fclose ( fp) ;
for (i=0; i < N 一1; 1++)
for (j 一i+l; j < N; j ++)
/*********found*********/
if (s[i] .sno
【2】
s[j ] .sno)
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 f "FangFang", 90, 82, 87 J,{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");
{ printf ("/nNo: %ld Name: % 一8sscores: ",t[j].sno, t[j].name);
for(i=0;i < 3 ; i++)
printf ("%6.2f ", 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.2f ", ss[j].
score[i] ) ;
printf ("/n") :
}
}
问答题给定程序中,函数fun的功能是建立一个N×N的矩阵。 矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,…依次类推。例如,若N=5,生成的矩阵为:
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#define N 7
/**********found**********/
void fun(int (*a) __1__)
{ int i,j,k,m;
if(N%2==0) m=N/2 ;
else m=N/2+1;
for(i=0; i
/**********found**********/
for(j= __2__ ; j
a[i][j]=a[N-i-1][j]=i+1;
for(k=i+1; k
/**********found**********/
a[k][i]=a[k][N-i-1]= __3__;
}
}
main()
{ int x[N][N]={0},i,j;
fun(x);
printf("/nThe result is:/n");
for(i=0; i
{ for(j=0; jprintf("/n");
}
}
问答题请编写函数fun,该函数的功能是:删除一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,若一维数组中的数据是:
2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10
删除后,数组中的内容应该是:
2 3 4 5 6 7 8 9 10
注意:部分源程序给出如下。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdio.h>
#define N 80
int fun(int a[], int n)
{
}
void main()
{
in/a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10}, i, n=20;
printf("The original data:/n");
for(i=0; i<n; i++)
printf{"%3d:, a[i]};
n=fun(a, n);
printf("/n/nThe data after deleted:/n");
for(i=0; i<n; i++)
printf("%3d", a[i]);
printf("/n/n");
}
问答题下列给定程序中,函数fun的功能是:从s所指字符串中,找出t所指字符串的个数作为函数值返回。例如,当s所指字符串中的内容为“abcdabfab”,t所指字符串的内容为“ab”,则函数返回整数3。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
int fun (char*s, char *t)
{
int n;char *p,*r;
n=0;
while(*s)
{
p=s;
r=t;
while(* r)
/**********found**********/
if(*r==*p){r++;p++}
else break;
/**********found**********/
if(r=='/0')
n++;
s++;
}
return n;
}
void main()
{
char s[100],t[100];int m;
system("CLS");
printf("/nPlease enter strings;");
scanf("%s",s);
printf("/nPlease enter substringt;");
scanf("%s",t);
m=fun(s,t);
printf("/nThe result is:m=%d /n",m);
}
问答题m个人的成绩存放在score数组中,请编写函数fun(),它的功能是将高于平均分的人数作为函数值返回,将高于平均分的分数放在叩所指的数组中。
例如,当score数组中的数据为24,35,88,76,90,54, 59,66,96时,函数返回的人数应该是5,up中的数据应为88, 76, 90, 66, 96。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <conio.h>
#include <stdio.h>
#include <string.h>
int fun(int score[],int m,int up[])
{
}
main()
{
int i,n,up[9];
int score[9]={24,35,88,76,90,54,
59,66,96};
clrscr();
n=fun(score,9,up);
printf("/nup to the average score are:");
for(i=0;i<n;i++)
printf("%d",up[i]);
}
问答题函数fun()的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。 例如,当a=45,b=12时,调用该函数后,c=1524。 #include<stdio.h> void fun(int a, int b, long *c) main() int a, b; long c; void NONO(); printf("Input a,b:"); scanf("%d,%d”, fun(a,b, printf("The result is:%ld/n",c);
问答题请编写一个函数void fun(int m,int k,int Xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入所指的数组中。例如,若输入17,5,则应输出19、23、29、31、37。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>#include<stdlib.h>void fun(int m,int k,int xx[]){}void main(){ FILE*wf; int m,n,zz[1000]; system("CLS"); printf("\nPlease enter two integer:"); scanf("%d%d",&m,&n); fun(m,n,z z); for(m=0;m<n;m++) printf("%d",zz[m]); printf("\n");/******************/ wf=fopen("out.dat","w"); fun(17,5,z z); for(m=0 ;m<5;m++) fprintf(wf,"%d",zz[m]); fclose(wf);/******************/}
问答题下列程序定义了N×N的二维数组,并在主函数中自动赋值;请编写函数fun(int a[][N]),该函数的功能是:使数组左下半三角元素中的值全部置成0。例如a数组中的值为
a=1 9 7
2 3 8
4 5 6
则返回主程序后a数组中的值应为
0 9 7
0 0 8
0 0 0
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define N 5
int fun (int a[] [N])
{
}
main()
{
int a[N] [N],i,j;
clrscr();
printf("*****The array*****/n");
for(i=0;i<N;i++)
/*产生—个随机的5*5矩阵*/
{ for(j=0;j<N;j++)
{a[i][j]=rand()%10;
printf("%4d", a[i][j]);
}
printf("/n");
}
fun (a);
printf("THE RESULT/n");
for(i=0;i<N;i++)
{ for(j=0;j<N;j++)
printf("%4d",a[i][j));
printf("/n");
}
}
问答题
给定程序MODI1.C中函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。
例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h>
#define SIZE 20
fun(double *s,double *w)
{ int k,i;double sum;
for(k=2,i=0;i<SIZE;i++)
{ s[i]=k;k+=2;}
/**********found**********/
sun=0.0;
for(k=0,i=0;i<SIZE;i++)
{ sum+=s[i];
/**********found**********/
if(i+1%5==0)
{ w[k]=sum/5;sum=0;k++;}
}
return k;
}
main()
{ double a[SIZE],b[SIZE/5];
int i,k;
k=fun(a,b);
printf("The original data:/n");
for(i=0;i<SIZE;i++)
{ if(i%5==0) printf("/n");
printf("%4.0f",a[i]);
}
printf("/n/nThe result:/n");
for(i=0;i<k;i++) printf("%6.2f",b[i]);
printf("/n/n");
}
问答题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。函数fun中给出的语句仅供参考。
例如,字符串中的内容为:*******A*BC*DEF*G****,移动后,字符串中的内容应当是:A*BC*DEF*G***********。在编写函数时,不得使用C语言提供的字符串函数。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include<stdio.h>
void funl(char*a)
{
/*以下代码仅供参考*/
char*p,*q;
iut n=0;
p=a;
while(*p=="*")/*统计串头"*"个数n*/
{n++;p++;)
q=a;
/*向前复制字符串,请填写相应的语句完成其功能*/
for(;n>0;n--)/*在串尾补n个"*"*/
*q++="*";
*q="/0";
}
main()
{char s[81];int n=0;
printf("Enter a string:/n");gets(s);
fun(s);
printf("The string after moveing:/n");puts(s);
}