问答题请编写函数fun(),其功能是:将s所指字符串中下标为奇数的字符删除,串中剩余字符形成的新串放在t所指数组中。 例如,当s所指字符串中的内容为siegAHdied,则在t所指数组中的内容应是seAde。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include<conio.h> #include<stdio.h> #include<string.h> void fun(char*s,char t[]) main() char s[100],t[100]; clrscr(); printf("/nPlease enter string s:"); scanf("%s",s); fun(s,t); printf("/nThe result is:%s/n",t);
问答题请编一个函数void fun(int tt[M][N],int PP[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#define M 3#define N 4void fun(int tt[M][N],int pp[N]){}void main() { int t[M][N]={{68,32,54,12},{14,24,88,58},{42,22,44,56}}; int P[N],i,j,k; system("CLS"); printf("The riginal data is:\n"); for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%6d",t[i][j]); printf("\n"); } fun(t,P); printf("\nThe result is:\n"); for(k=0;k<N;k++) printf("%4d",P[k]); printf("\n"); }
问答题请编写一个函数proc(),它的功能是:比较两个字符串的长度(不得调用C语言中求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相等,则返回第1个字符串。 例如,若输入jiangxi<CR> beijing<CR>(<CR>为回车键) 则函数返回jiangxi。 注意:部分源程序已给出。 请勿改动主函数main和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。 试题程序: #include<stdio.h> char * proc(char *s, char *t) void main() char a[20], b[10], *p, *q; printf("Input 1th string: "); gets(a); printf("Input 2th string: "); gets(b); printf("%s", proc(a,b));
问答题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。
注意:部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#define N 16
typedef struct
{ char num[10];
int s;
} STREC;
void fun(STREC a[])
{
}
main ()
{STREC s[N]={{"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;FILE *out ;
fun(s);
printf("The data after
sorted:/n");
for(i=0;i
问答题下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和,和值通过函数值返回。例如,若n=5,则应输出8.391667。请改正程序中的错误,使其得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>/**********found**********/voidfun(intn){inta=2,b=1,c,k;doubles=0.0;for(k=1;k<=n;k++){/**********found**********/s=s+(Double)a/b;c=a;a=a+b;b=c;}return(s);}voidmain(){intn=5;system("CLS");printf("/nThevalueoffunctionis:%1f/n",fun(n));}
问答题(补充每对/**/之间的程序段,完成题目的要求)
问答题假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参m给出了字符串的长度,形参h给出了字符串中前*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。
例如,若字符串中的内容为****a*bc*def*g****,删除后,字符串中的内容则应当是a*bc*def*g。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#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);
}
问答题下列给定程序的功能是:从键盘输入若干行字符串(每行不超过80个字符),写入文件myfile4.txt中,用一1作字符串输入结束的标志,然后将文件的内容显示在屏幕上。文件的读写分别由函数ReadText和Write.Text实现。请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序在文件BLANK1.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) {prinff(“open fail!!\n”);exit(0);} WriteText(f0); fclose(fp); if((fo=fopen(“my6le4.txt”,“r”))==NULL) {prinff(“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);fpnts(“\n”,fw); gets(str); } } void ReadText(FILE*fr) { char str[81]; prinff(“\nRead file and output to screen:\n”); fgets(str,81,fr); while(!feof(fr)){ /**********found**********/ prinff(“%s”,[3]); fsets(str,81,fr); } }
问答题给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本 文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
void fun(char *s, int a, double f)
{
__1__ fp;
char ch;
fp = fopen("file1.txt", "w");
fprintf(fp, "%s %d %f\n", s, a, f);
fclose(fp);
fp = fopen("file1.txt", "r");
printf("\nThe result :\n\n");
ch = fgetc(fp);
while (!feof(__2__)) {
putchar(__3__); ch = fgetc(fp); }
putchar('\n');
fclose(fp);
}
main()
{ char a[10]="Hello!"; int b=12345;
double c= 98.76;
fun(a,b,c);
}
问答题给定程序中,函数fun的功能是:计算形参X所指数组中N个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至K所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。
例如,有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000
移动后的输出为:30 6 17 15 26 46 32 40 45 48
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANKl.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#define N 10
double fun(double *x)
{ int i,j;double aV,y[N];
av=0;
/**********found***********/
for(i=0; i
问答题给定程序MODI1.C中函数fun()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。 请改正程序中的错误,使它能得出正确的结果。 #include<stdio.h> #include<string.h> #define MAXLINE 20 fun(char *pstr[6]) int i,j; char *p; for(i=0;i<5;i++) /**********found**********/ for(j=i+1,j<6,j++) if(strcmp(*(pstr+i),*(pstr+j))>0) p=*(pstr+i); /**********found**********/ *(pstr+i)=pstr+j; *(pstr+j)=p; main() int i; char *pstr[6],str[6][MAXLINE]; for(i=0;i<6;i++)pstr[i]=str[i]; printf("/nEnter 6 string(1 string at each line):/n"); for(i=0;i<6;i++)scanf("%s",pstr[i]); fun(pstr); printf("The strings after sorting:/n"); for(i=0;i<6;i++)printf("%s/n",pstr[i]);
问答题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,低于平均分的学生数据放在c所指的数组中,高于等于平均分的学生人数通过形参n传回,低于平均分的学生人数通过形参m传回,平均分通过函数值返回。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include <stdio.h> #define N 12 typedef struct char num[10]; double s; STREC; double fun(STREC *a,STREC *b,STREC *c,int *n,int *m) main() STREC s[N]="GA05",65,"GA03",86, "GA02",76,"GA04",95,"GA01",93, "GA07",78,"GA08",68,"GA06",88, "GA09",60,"GA11",54,"GA12",56, "GA10",98; STREC h[N],l[N],t; FILE *out; int i,j,m,n; double ave; ave=fun(s,h,l,&n,&m); printf("The %d student data which is higher than %7.3f:/n",n,ave); for(i=0;i<n;i++) printf("%s %4.lf/n",h[i].num, h[i].s); printf("/n"); printf("The %d Student data which iS lower than%7.3f:/n",m,ave); for(i=0;i<m;i++) printf("%s %4.1f/n",l[i].num, l[i].s); printf("/n"); out=fopen("out26.dat", "w"); fprintf(out, "%d/n %7.3f/n",n,ave); for(i=0;i<n-1;i++) for(j=i+1;i<n;j++) if(h[i].s<h[j].s) t=h[i];h[i]=h[i];h[j]=t; /*分数从现到低排列*/ for(i=0;i<n; i++) fprintf(out,"%4.1f/n",h[i].s); fprintf(out,"%d/n %7.3f/n",m,ave); for(i=0;i<m-1;i++) for(j=i+1;i<m;j++) if(l[i].s<l[j].s) t=l[i];l[i]=l[j];l[j]=t; /*分数从高到低排列*/ for(i=0;i<m;i++) fprintf(out,"%4.1f/n",l[i].s); fclose(out);
问答题下列给定程序中,函数fun()的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。 请改正函数fun()中的错误,使它能得出正确的结果。 注意:不要改动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; sum=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");
问答题请编写函数proc(),该函数的功能是:计算并输出例如,若主函数从键盘给n输入10后,则输出为S=104.478749。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:#include<math.h>#include<stdio.h>doubleproc(intn){}voidmain(){intn;doubleS;printf("/n/nInputn:");scanf("%d",S=proc(n);printf("/n/nS=%f/n/n",S);}
问答题综合应用
请编写函数fun :在形参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中。
注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何
内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
void NONO();
void fun(int *a, int *b, int *c, int *d)
{
}
main()
{ int a, b, c, d;
printf("请输入4个整数: "); scanf("%d%d%d%d",
printf("原始顺序: %d,%d,%d,%d/n", a, b, c, d);
fun(
printf("处理后: %d,%d,%d,%d/n", a, b, c, d);
NONO();
}
void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i, a, b, c, d ;
fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for( i=0; i<5; i++ )
{
fscanf(fp, "%d %d %d %d",
fun(
fprintf(wf, "a=%d,d=%d/n", a, d);
}
fclose(fp) ;
fclose(wf) ;
}
问答题给定程序中,函数fun的功能是将带头结点的单向链表逆置,即若原链表中从头至尾结点数据域依次为2、4、6、8、10,逆置后,从头至尾结点数据域依次为10、8、6、4、2。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include < stdio.h >
#include < stdlib.h >
#define N 5
typedef struct node{
int data;
struct node*next;
}NODE;
void fun(NODE*h)
{ NODE *P, *q, *r;
/*********found*********/
p=h一 >
【1】
;
/*********found*********/
if(p==
【2】
)return;
q=p一 >next;
p一 >next =NULL;
while(q)
{r=q一 >next;q一 >next=p;
/*********found*********/
p=q; q=
【3】
;
}
h一 >next=P;
}
NODE*creatlist(int a[])
{ NODE*h,*p,*q;int i;
h=(NODE*)malloc(sizeof(NODE));
h一 >next=NULL;
for(i=0;i < N;i++)
{ q=(NODE*)malloc(sizeof
(NODE));
q一 >data=a[i],
q一 >next=NULL;
if(h一 >next==NULL)
h一 >next=p=q;
else{p一 >next=q;p=q;)
}
return h;
}
void outlist(NODE*h)
{ NODE*p;
P=h一 >next;
if(P==NULL)
printf("The list is NULL!/n");
elSe
{printi("/nttead");
do
fprintf("一 >%d",p一 >data);
p=p一 >next;)
while(P!=NULL);
printf("一 >End/n");
}
}
main ()
{ NODE *head;
int a[N] = {2,4,6,8 , 10 } ;
head = creatlist (a) ;
printf ( "/ nThe original
outlist (head) ;
fun (head) ;
printf ( "/nThe list after inverting :/n");
outlist (head) ;
}
问答题请编写函数fun,函数的功能是:判断字符串是否为回文?若是,函数返回1,主函数中输出:YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。
例如,字符串LEVEL是回文,而字符串123312就不是回文。
请勿改动主函数main和其它函数巾的任何内容,仅在函数fun的花括号巾填入你编写的若干语句。
给定源程序:
#include<stdio.h>
#include<string.h>
#define N 80
intfun(char*str)
{
}
main()
{char s[N];
printf("Enter a string:");gets(s);
printf("/n/n");puts(s);
if(fun(s))printf("YES/n");
else printf("NO/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 t[][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 i,j,t:[][N]=={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10);
printf("/nThe orifinal 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的功能是根据形参i的值返回某个函数的值。当调用正确时, 程序输出:
x1=5.000000, x2=3.000000, x1*x1+x1*x2=40.000000
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
double f1(double x)
{ return x*x; }
double f2(double x, double y)
{ return x*y; }
__1__ fun(int i, double x, double y)
{ if (i==1)
return __2__(x);
else
return __3__(x, y);
}
main()
{ double x1=5, x2=3, r;
r = fun(1, x1, x2);
r += fun(2, x1, x2);
printf("\nx1=%f, x2=%f, x1*x1+x1*x2=%f\n\n",x1, x2, r);
}
问答题学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组S中,请编写函数proc(),它的功能是:函数返回指定学号的学生数据,指定的序号在主函数中输入。若没找到指定的学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数是strcmp)。 注意:部分源程序已给出。 请勿改动主函数main和其他函数中的任何内容。 试题程序: #include<string.h> #include<stdio.h> #include<stdlib.h> 世define M 16 typedef struct char num[10]; int s; STREC; STREC proc(STREC a, char *b) 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", 77, "GA017", 64 "GA018", 64, "GA016", 72; STREC h; char m[10]; int i; printf("The original data: n"); for(i=0; i<M; i++) if(i%4==0) printf("/n"); //每行输出4个学生记录 printf("%s %3d", stu[i]. num, stu[i]. s); printf("/n/nEnter the number: "); gets(m); h=proc(stu, m); printf("The data: "); printf("/n%s %4d/n", h.num, h.s); printf("n");
