问答题给定程序MODI1.C中函数fun()的功能是:输出M行、M列列数方阵,然后求两条对角线上元素之和,返回此和数。请改正程序中的错误,使它能得出正确的结果。 #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(i=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); 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; printf("/nThe sum of all elements on 2 diagonals is%d.",fun(M,aa));
问答题给定程序MODI1.C中函数fun的功能是:首先将大写字母转换为对应小写字母;若小写字母为a'—u,则将其转换为其后的第5个字母;若小写字母为v~z,使其值减21。
转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f.若形参是字母W,则转换为小写字母b。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动mam函数,不得增行或删行,也不得更改程序的结构!
#include
#include
char fun (char c)
/*************found*************/
C=C+32;
if(C>='a' && C<='u')
/*************found*************/
c=c—5;
c=c—21;
return c;
}
main ( )
{ char cl,c2;
printf ("/nEnter a letter (A—Z) :
") ; cl=getchar () ;
if (isupper (cl))
{ c2=fun (cl) ;
printf ("/n/nThe letter /'%c/'
change to /'%c/'/n",cl,c2);
}
else printf ("/nEnter (A—Z) ! /n") ;
}
问答题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。注意:部分源程序在文件PROGl.C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#define N 16
typedef struct
{char num[10];
int s;
)STREC;
int fun(STREC*a,STREC*b)
{
}
main()
{STREC s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",
72},{"GA08",64),{"GA06",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GAOl4",91},
{"GA011",91),{"GA017",64},{"GA018",64},{"GA016",72}};
STREC b[N];
int i,n;FILE*out;
n=fun(s,h);
printf("The %d lowest score:\n",n);
for(i=0;i
问答题请编写函数fun,函数的功能是:将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。 例如,二维数组中的数据为: 33 33 33 33 44 44 44 44 55 55 55 55 则一维数组中的内容应是: 33 44 55 33 44 55 33 44 55 33 44 55。 注意:部分源程序在文件PROGl.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。1 #include<stdio.h>2 void fun(int s[][10],int b[],int*n,int mm,int nn)3 {4 }5 main()6 {int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;7 int a[100]=(0),n=0;void NONO();8 printf(''The matrix:\n'');9 for(i=0; i<3;i++)10 {for(j=0;j<4;j++) printf(''%3d'',w[i][j]);11 printf(''\n'');}12 fun(w,a,&n,3,4);13 printf(''The A array:\n'');14 for(i=0;i<n;i++) printf(''%3d'',a[i]);printf(''\n\n'');15 NONO();}16 void NONO()17 {/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。 */18 FILE *rf,*wf;int i,j,k;19 int w[10][10],a[100],n=0,mm,nn;20 rf=fopen(''in.dat'',''r'');21 wf=fopen(''out.dat'',''w'');22 for(k=0;k<5;k++){23 fscanf(rf,''%d%d'', j<nn ; j++) fscanf(rf,''%d'',&w[i][j]);26 fun(w,a,&n,mm,nn);27 for(i=0;i<n;i++) fprintf(wf,''%3d'',a[i]); fprintf(wf,''\n'');28 }29 fclose(rf);fclose(wf);}
问答题程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#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), N, fp);
fclose(fp);
for (i=0; i
for (j=i+1; 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
{ printf("/nNo: %ld Name: %-8s Scores: ",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
{ 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矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。要求先累加主对角线元素中的值,再累加反向对角线元素中的值。 例如,若N=3,有下列矩阵: 1 2 3 …… 4 5 6 …… 7 8 9 首先累加1、5、9,然后累加3、5、7,函数返回值为30。 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #include<stdio.h> #define N 4 fun(int c[][N],int n) int i,sum; /********found********/ (1) ; for(i=0;i<n;i++) /********found********/ sum+= (2) ; for(i=0;i<n;i++) /********found********/ sum+=t[i][n-i- (3) ]; return sum; main() int t[][N]=21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10,i.j; printf("/nThe original data:/n"); for(i=0;i<N;i++) (for[j=0;j<N;j++) printf("%4d",t[i][j]); printf("/n");] printf("The result is:%d",fun(t,N));
问答题请编写函数fun,其功能是:找出2xM整型二维数组中最大元素的值,并将此值返回调用函数。 注意:部分源程序给出如下。 请勿改动主函数mam和其他函数中的任何内容,仅在函数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所指字符串中含有t所指字符串的数目,并作为函数值返回。
请改正程序中的错误或在下画线处填上正确的内容并把下画线删除,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<stdio.h>
#define N 80
int fun(char*s,char*t)
{ int n;
char*P,*r;
n=0 ;
/*********found*********/
*r=t;
while(*S)
{
p=s ;
while(*r)
{
if(*r==*P)
{
r++;
p++;
}
else
break;
if(*r=='\0')
n++;
}
/*********found*********/
1
;
s++;
}
return n;
}
void main()
{char a[N],b[N];int m;
printf("\nPlease enter string a:");
gets(a);
printf("\nPlease enter substring b:");
gets(b);
m=fun(a,b);
printf("\nThe result is:m=%d\n",m);
}
问答题假定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了尾部的*号之外,将字符中其他的*号全部删除。形参P已指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为“****A*B*DEF* G********”,删除后,字符串中的内容应当是“ABCDEFG*******”。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序: #incIude<conio.h> #include<sfdio.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);
问答题下列给定程序中,函数proc()的功能是:计算n!。例如,若输入:6,则输出:6!=720.000000。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
#include<conio.h>
double proc(int n)
{
double result=1.0;
//****found****
if n==0
return 1.0;
if(n>1
}
void main()
{ int n;
printf("Input N:");
scanf("%d",
printf("/n/n%d!=%1f/n/n", n, proc(n));
}
问答题
给定程序MODI1.C中函数fun的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;
若未找到,则函数值为NULL。
例如,当字符串中的内容为“abcdabfabcdx”,t中的内容为“ab”时,输出结果应是“abcdx”。
当字符串中的内容为“abcdabfabcdx”,t中的内容为:“abd”时,则程序输出未找到信息“notbe found!”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#include<string.h>
char * fun(char *s, char *t)
{
char *p, *r, *a;
/**********found**********/
a=Null;
while(*s)
{p=s; r=t;
while(*r)
/**********found**********/
if(r==p)
{ r++; p++; }
else break;
if(*r=="/0")a=s;
s++;
}
return a;
}
main()
{
char s[100], t[100], *p;
printf("/nPlease enter string s:"); scanf("%s", s);
printf("/nPlease enter substring t:"); scanf("%s", t);
p=fun(s, t);
if (p) printf("/nThe result is:%s/n", p);
else printf("/nNot found!/n");
}
问答题给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构! #include<stdio.h> #include<string.h> #include<stdlib.h> void WriteText(FILE*); void ReadText(FILE*); main() {FILE*fp; if((fp=fopen("myfile4.txt","w"))=NULL) {printf("open fail!!\n");exit(0);} WriteText(fp); fclose(fp); if((fp=fopen("myfile4.txt","r"))==NULL) {printff"open fail!!\n");exit(0);} ReadText(fp); fclose(fp); } /**********found**********/ void WriteText(FILE__1__) {char str[81]; printf("\nEnter string with -1 to end:\n"); gets(str); while(strcmp(str,"-1")!=0){ /**********found**********/ fputs(__2__,fw);fputs("\n",fw); gets(str); } } void ReadText(FILE*fr) { char str[81]; printf("\nRead file and outpm to screen:\n"); fgets(str,81,fr); while(!feof(fr)){ /**********found**********/ printf("%s",__3__); fgets(str,81,fr); }}
问答题由N个有序整数组成的数列已放在一维数组中,给定程序MODI1.C中函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,返回其下标值;反之,返回-1。 折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high),然后把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围落在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。直到low>high,查找结束。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。1 #include<stdio.h>2 #define N 103 /**********found**********/4 void fun(int a[],int m)5 { int low=0,high=N-1,mid;6 while(low<=high)7 (mid=(low+high)/2;8 if(m<a[mid])9 high=mid-1;10 /**********found**********/11 else Tf(m>a[mid])12 low=mid+1;13 else return(mid);14 }15 return(-1);16 }17 main()18 {int i,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m;19 printf(''a数组中的数据如下:'');20 for(i=0;i<N;i++) printf(''%d'',a[i]);21 printf(''Enter m:'');scanf(''%d'',22 k=fun(a,m);23 if(k>=0)printf(''m=%d,index=%d\n'',m,k);24 else printf(''Not be found!\n'');25 }
问答题给定程序MODI1.C中函数fun的功能是:将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。
例如,当s所指字符串中的内容为“abcdabfabc”,t1所指子串中的内容为“ab”,t2所指子串中的内容为“99”时,结果,在w所指的数组中的内容应为“abcdabf99c”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
#include <string.h>
void fun(chat *s,char *t1,char *t2,char *w)
{
char *p,*r,*a=s;
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 suhstring 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");
}
问答题给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共有M个字符串,且串长
#include
#define M 5
#define N 20
int fun(char (*ss)[N], int *n)
{ int i, k=0, len= N;
/********** found**********/
for(i=0; i<【1】; i++)
{ len=strlen(ss[i]);
if(i==0) *n=len;
/********* found**********/
if(len 【2】 *n)
{ *n=len;
k=i;
}
}
/********** found**********/
return (【3】) ;
}
main()
{ char ss[M][N]={"shanghai",
"guangzhou","beijing","tianjing
", "chongqing"};
int n,k,i;
printf("/nThe original
strings are :/n");
for(i=0;i
问答题下列给定程序中,函数fun的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码值升序排序后输出。例如,若输入“edcba”,则应输出“abode”。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序:#include<string.h>#include<stdio.h>void fun(ehar t[]){ char c; int i,j;/******found******/ for(i=strlen(t);i;i一一) for(j=0;j<i;j++)/******found******/ if(t[j]<t[j+1]) t c=t[j]; t[j]=t[j+1]; t[j+1]=c; }}main(){char s[81];prinff(“\nPlease enter a character string:”);gets(s);printf(“\n\nBefore sorting:\n%s”,s);fun(s);printf(“\nAiler sorting deeendingly:\n%s”,s);}
问答题请编写函数fun,其功能是分别统计形参t所指二维数组中字母#和*的个数。注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include<stdio.h>#include<stdlib.h>#define M 14void NONO();void fun(char(*t)[M],int*a,int*c){} void get(char(*s)[M]){inti,j;for(i=0;i<M;i++){for(j=0;j<M;j++){s[i][j]=65+rand()%12;printf(''%c'',s[i][j]);}printf(''\n'');}}main(){char a[M][M];int x,y; get(a);fun(a,&x,&y);printf(''#=%d*=%d\n'',x,y);NONO();} void NON0(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf; int i,j,x,y;char a[M][M];fp=fopen(''c:\test\in.dat'',''r'');wf=fopen(''c:\test\out.dat'',''w'');for(i=0:i<M;{++){for(j=0;j<M;j++){fscanf(fp,''n%c'',&a[i][j];}}fun(a,&x,&y);fprintf(wf,''#=%d\n'',x);fprintf(wf,''*=%d\n'',y);fclose(fp);fclose(wf);}
问答题程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函数fun的功能是输出这位学生的信息。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
typedef struct
{ int num;
char name[9];
char sex;
struct { int year,month,day ;} birthday;
float score[3];
}STU;
/**********found**********/
void show(STU ___1___)
{ int i;
printf("/n%d %s %c %d-%d-%d", tt.num, tt.name, tt.sex,
tt.birthday.year, tt.birthday.month, tt.birthday.day);
for(i=0; i<3; i++)
/**********found**********/
printf("%5.1f", ___2___);
printf("/n");
}
main( )
{ STU std={ 1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0 };
printf("/nA student data:/n");
/**********found**********/
show(___3___);
}
问答题给定程序MODI1.C中fun函数的功能是:根据整型形参m,计算如下公式的值。例如,若主函数中输入5,则应输出-0.283333。请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#includedoublefun(intm){doublet=1.0;inti;for(i=2;i
问答题给定程序中,函数fun的功能是:有N×N矩阵,根据给定的m(m<=)值,将每行元素中的值均右移m个位置,左边置为0。例如,N=3,m=2,有下列矩阵 1 2 3 4 5 6 7 8 9 程序执行结果为 0 0 l 0 0 4 0 0 7 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #define N 43 void fun(int(*t)[N],int m)4 { int i,j;5 /**********found**********/6 for(i=0;i<N;__1__ )7 { for(j=N-1-m;j>=0;j--)8 /**********found**********/9 t[i][j+__2___]=t[i][j];10 /**********found**********/11 for(j=0;j<__3__;j++)12 t[i][j]=0;13 }1415 main()16 {int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i, j, m;17 printf(''\nThe original array:\n'');18 for(i=0; i<N; i++)19 { for(j=0;j<N;j++)20 printf(''%2d'',t[i][j]);21 printf(''\n'');22 }23 printf(''Input m(m<=%d) :'',N);scanf(''%d'',25 printf(''\nThe result is:\n'');26 for(2=0;i<N;i++)27 { for(j=0;j<N;j++)28 printf(''%2d'',t[i][j]);29 printf(''\n'');30 }31 }