问答题给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符“*”补齐,使其与最长的字符串等长。ss所指字符串数组中共有M个字符串,且串长<N。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #include<string.h>3 #define M 54 #define N 205 void fun(char(*ss)[N])6 { int i,j,n,len=0;7 for(i=0;i<M;i++)8 {len=strlen(ss[i]);9 if(i==0)n=len;10 if(len>n)n=len;11 }12 for(i=0;i<M;i++) {13 /**********found**********/14 n=strlen( __1__);15 for(j=0;j<len-n;j++)16 /**********found**********/17 ss[i][ __2__]='*';18 /**********found**********/19 ss[i][n+j+__3__]='\0';20 }21 }22 main()23 { char ss[M][N]={''shanghai'',''guangzhou'',''beij ing'',''tianj ing'',''cchongqing''};24 int i;25 printf(''The original strings are:\n'');26 for(i=0;i<M;i++)printf(''%s\n'',ss[i]);27 printf(''\n'');28 fun(ss);29 printf(''The resuit is:\n'');30 for(i=0;i<M;i++)printf(''%s\n'',ss[i]);31 }
问答题下列给定程序中,函数fun的功能是:统计带头结点的单向链表中结点的个数,并存放在形参n所指的存储单元中。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include < stdio.h >
#include < stdlib.h >
#defihe 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,4 5,32,91,16,20,48),num;
head=creatlist(a);
outlist(head);
/*********found*********/
fun(
【3】
,&num);
printf("/nnumber=%d/n",num);
}
SLIST* creatlist(int a[])
{ SLIST *h,*p,*q; int i;
h=P=(SLIST*)malloc(sizeof(SLIST));
for(i=0;i < N;i++)
{ q=(SLIST*)malloc(sizeof(SLIST));
q一 >data=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");
}
}
问答题编写函数int fun(int lim,int aa[MAX]),其功能是求出小于或等于lim的所有素数并放在aa数组中,并返回所求出的素数的个数。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:1 #include<conio.h>2 #include<stdio.h>3 #include<stdlib.h>4 #define MAX 1005 int fun(int lim,int aa[MAX])6 {78 }9 void main()10 {11 FILE*wf;12 int limit,i,sum;13 int aa[MAX];14 system("CLS");15 printf("输入一个整数:");16 scanf("%d",&limit);17 sum=fun(limit,aa);18 for(i=0;i<sum;i++)19 {20 if(i%10==0&&i!=0) /*每行输出10个数*/21 printf("\n");22 printf(”%5d”,aa[i]);23 }24 /*****************/25 wf=fopen("out.dat","W");26 sum=fun(15,aa);27 for(i=0;i<sum; i++)28 {29 if(i%10==0&&i!=0) /*每行输出10个数*/30 fprintf(wf,"\n");31 fprintf(wf,"%5d",aa[i]);32 }33 fclose(wf);34 /*****************/35 }
问答题给定程序MODI1.C是建立一个带头结点的单向链表, 并用随机函数为各结点数据域赋值。函数fun的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。
请改正函数fun中指定部位的错误, 使它能得出正确的结果。
注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!
给定源程序:
#include
#include
typedef struct aa
{ int data;
struct aa *next;
} NODE;
fun ( NODE *h )
{ int max=-1;
NODE *p;
/***********found**********/
p=h ;
while(p)
{ if(p->data>max )
max=p->data;
/***********found**********/
p=h->next ;
}
return max;
}
outresult(int s, FILE *pf)
{ fprintf(pf,"/nThe max in link : %d/n",s);}
NODE *creatlink(int n, int m)
{ NODE *h, *p, *s, *q;
int i, x;
h=p=(NODE *)malloc(sizeof(NODE));h->data=9999;
for(i=1; idata=rand()%m; s->next=p->next;
p->next=s; p=p->next;
}
p->next=NULL;
return h;
}
outlink(NODE *h, FILE *pf)
{ NODE *p;
p=h->next;
fprintf(pf,"/nTHE LIST :/n/n HEAD ");
while(p)
{ fprintf(pf,"->%d ",p->data); p=p->next; }
fprintf(pf,"/n");
}
main()
{ NODE *head; int m;
head=creatlink(12, 100);
outlink(head , stdout);
m=fun(head);
printf("/nTHE RESULT :/n"); outresult(m, stdout);
}
问答题已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。 注意:部分源程序存在文件PROG1.C文件中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include <stdio.h>#include <string.h>#define N 10typedef struct ss{ char num[10]; int s;} STU;void fun(STU a[], STU *s){}main (){STU a[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71} }, m;int i;void NONO ();printf ("***** The original data *****/n");for (i=0; i< N; i++)printf("No = %sMark= %d/n", a[i] .num,a[i] .s);fun (a, printf ("***** THE RESULT *****/n") ; printf ("The lowest : %s , %d/n", m.num, m.s);NONO(); } void NONO () (/*本函数用于打开文件,输入数据,调 用函数,输出数据,关闭文件。 */FILE *rf, *wf ;STU a[N], m ;int i ;rf = fopen("in.dat","r");wf = fopen ("out.dat","w");for(i = 0 ; i < 10; i++) fscanf(rf, "%s %d", a[i].num, fun (a, fprintf(wf,"The lowest : %s, %d/n", m.num, m.s);fclose(rf);fclose(wf); }
问答题下列给定程序中,函数fun的功能是:将形参n中的奇数取出,并按原来从高位到低位相反的顺序组成一个新数,作为函数值返回。
例如,输入一个整数27638496,函数返回值为973。
请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构!
#lnclude
unsigned long fun(unsigned long n) {unsigned long x=0;int t; while(n) {t=n%10; /**********found**********/ if(t%2==【1】) /**********found**********/ x=【2】+t; /**********found**********/ n=【3】; } returnx; } main() {unsigned long n=一1; while(n>99999999‖n<0) {printf(''Please input(0<n<100000000):'');scanf(''%1d'',&n); printf(''\nThe result is:%ld\n'',fun(n)); }}
问答题学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组s中,请编写函数proc(),它的功能是:把分数最高的学生数据放在h所指的数组中。注意:分数最高的学生可能不止一个,函数返回分数最高学生的人数。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#define M 16
typedef struct
{char num[10];
int s;
}
STREC;
int proc(STREC*a, STREC*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", 66}, {"GA017", 64},
{"GA018", 64}, {"GA016", 72}};
STREC h[M];
int i, n;
n=proc(stu, h);
printf("The %d highest score: /n", n);
for(i=0; i<n; i++)
printf("%s%4d/n", h[i].num, h[i].s);
//输出最高分学生的学号和成绩
printf("/n");
}
问答题某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数,其功能是:求出该学生的平均分,并放入记录的ave成员中。 例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。 注意:部分源程序已给出。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。 试题程序: #include<stdio.h> #define N 8 typedef struct char num[10]; double s[N]; double ave; STREC: void fun(STREC*a) int i: a->ave=0.0; for(i=0;i<N;i++) a->ave=a->ave+a->s[i]; /*求各门课程成绩的总和*/ a->ave=a->ave/N;/*求平均分*/ void main() STREC s="GA005",85.5,76,69.5,85,91,72,64.5,87.5; int i; fun(&s); printf("The%s's student data:/n",s.num); for(i=0;i<N;i++) printf("%4.1fkn",s.s[i]); printf("/nknave=%7.3fkn",s.ave); printf("/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。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。1 #include<stdio.h>2 #define N 803 int fun(int a[],int n)4 {5 {6 }7 main()8 { int 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; void NONO();9 printf(''The original data:\n'');10 for(i=0; i<n; i++)printf(''%3d'', a[i]);11 n=fun(a,n);12 printf(''\n\nThe data after deleted:\n'');13 for(i=0;i<n;i++) printf(''%3d'',a[i]); printf(''\n\n'');14 NONO();15 }16 void NONO()17 {/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/18 FILE *rf,*wf;int a[N],n,i,j;19 rf=fopen(''in.dat'',''r'');20 wf=fopen(”out.dat”,”w”);21 for(i=0;i<5;i++) {22 fscanf(rf,''%d'',&n);23 for(j =0 ; j<n ; j++) fscanf(rf,''%d'',&a[j]);24 n=fun(a,n);25 for(j=0;j<n;j++) fprintf(wf,''%4d'',a[j]);26 fprintf(wf,''\n'');27 }28 fclose(rf);fclose(wf);29 }
问答题
给定程序MODI1.C中函数fun的功能是:将s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指数组中(规定第一个字符放在第0位中)。
例如,字符串中的数据为:AABBCCDDEEFF,则输出应当是:ABBCDDEFF。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <string.h>
#define N 80
void fun(char *s, char t[])
{ int i,j=0;
for(i=0; i<(int)strlen(s); i++)
/***********found**********/
if(i%2
/***********found**********/
t[i]="/0";
}
main()
{ char s[N], t[N];
printf("/nPlease enter string s:"); gets(s);
fun(s, t);
printf("/nThe result is:%s/n",t);
}
问答题给定程序中,函数fun的功能是: 将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:defadhkjsdf3537。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
void fun(char *s)
{ int i, j=0, k=0; char t1[80], t2[80];
for(i=0; s[i]!='/0'; i++)
if(s[i]>='0' ___1___;
}
else t1[k++]=s[i];
t2[j]=0; t1[k]=0;
/**********found**********/
for(i=0; i
/**********found**********/
for(i=0; i<___3___; i++) s[k+i]=t2[i];
}
main()
{ char s[80]="ba3a54j7sd567sdffs";
printf("/nThe original string is : %s/n",s);
fun(s);
printf("/nThe result is : %s/n",s);
}
问答题请编一个函数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 datais:/n"); for(i=0;i < M;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");}
问答题给定程序中函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指的数组的尾部。例如,当a所指字符串中的内容为"abedefg",b所指字符串中的内容为"1234"时,c所指数组中的内容应为"a4b3c2dlefg";而当a所指字符串中的内容为"1234",b所指字符串的内容为"abedefg"时,c所指数组中的内容应该为"lg2f3e4dcba"。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:include<stdio.h>#include<string.h>void fun(char*a,char*b,char*c){ int i,j;char ch; i=0;j=strlen(b)-1;/*********found*********/ while(i>j) { ch=b[i];b[i] =b[j]; b[j]=ch; i++;j--; } while(*a‖*b){/*********found*********/ If( *a) { *c=*a;c++;a++;} if(*b) { *c=*b;c++;b++;} } *c=0 ;}main(){ char s1[100],s2[100],t[200]; printf("\nEnter s1 string:"); scanf("%s",s1); printf("\nEnter s2 string:"); scanf("%s",s2); fun(s1,s2,t); printf("\nThe result is:%s\n",t);}
问答题规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:使字符串中尾部的*号不多于F1个,若多于n个,则删除多余的*号;若少于或等于11个,则不做任何操作,字符串中间和前面的木号不删除。例如,字符串中的内容为“****A*BC*DEF*G*******”,若n的值为4,删除后,字符串中的内容应为“****A*BC*DEF*G****”;若n的值为7,则字符串中的内容仍为“****A*BC*DEF*G*******”。n的值在主函数中输入。编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>void fun(char*a,int n){}rnain(){ char s[81];int n; printf("Enter a string:\lq"); gets(s); printf("Enter n:"); scanf("%d",&n); fun(s,n); printf("The string after deleted:\n"); puts(s);}
问答题
请编写一个函数,函数的功能是删除字符串中的所有空格。例如,主函数中输入"asd af aa z67",则输出为”asdafaaz67”。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若千语句.
#include<stdio.h>
#include<ctype.h>
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);
}
问答题下列给定程序中,函数fun的功能是:将m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指存储区中。例如:把三个串“abe”“CD”“EF”连接起来,结果是”abc-CDEF”。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动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]; parintf(“\nPlease enter m:”); seanf(“%d”,&m); gets(sro]); printf(“\nPlease ent~l"%d string:\n”,m); for(h=0;h<m;h++) gets(s[h]); fun(s,m,P); prinff(“\nThe result is:%s\n”,P);}
问答题下列给定程序中,函数fun的功能是:将主函数中两个变量的值进行交换。例如,若变量a中的值为8,b中的值为3,则程序运行后,a中的值为3,b中的值为8。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:1 #include<Stdio.h>2 /*********found*********/3 void fun(int x,int y)4 {int t;5 /*********found*********/6 t=x;x=y;y=t;7 }8 void main()9 { int a,b;10 a=8;11 b=3;12 fun(&a,&b);13 printf("%d%d\n",a,b);14 }
问答题给定程序MODI1.C的功能是:读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。
例如,若输入整数:2310,则应输出:2、3、5、7、11。
请改正程序中的语法错误,使程序能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
/************ found************/
IsPrime (int n);
{ int i, m;
m = 1;
for (i =2; i < n; i++)
/************found************/
if !(n%i)
{ m = 0; break ;}
return (m);
}
main ()
{ int j, k;
printf("/nPlease enter an
integer number between 2 and 10000:
"); scanf("%d",
printf ("/n/nThe prime factor (s)
of %d is (are):", k) ;
for(j =2; j <= k; j++)
if((!(k%j))
printf("/n");
}
问答题请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从0到p(p≤n-1)的数组元素平移到数组的最后。 例如,一维数组中的原始内容为1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15,p的值为3。移动后,一维数组中的内容应为5,6,7,8,9,10,11,12,13,14,15, 1, 2, 3, 4。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include <stdio.h> #define N 80 void fun(int *w, int p, int n) main () int a[N]=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15; int i, p, n=15; printf("The original data:/n"); for(i=0;i<n;i++) printf("%3d",a[i]); printf("/n/nEnter p: "); scanf("%d", fun(a,p,n); printf("/nThe data after moving:/n"); for(i=0;i<n;i++) printf("%3d",a[i]); printf("/n/n");
问答题给定程序中,函数fun的功能是:将形参s所指字符串中的所有数字字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。
例如,s所指字符串为:asd123fgh5##43df,处理后新字符串为:123543asdfgh##df。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#include
#include
#include
char *fun(char *s)
{ int i, j, k, n; char *p, *t;
n=strlen(s)+1;
t=(char*)malloc(n*sizeof(char));
p=(char*)malloc(n*sizeof(char));
j=0; k=0;
for(i=0; i
{ if(isdigit(s[i])) {
/**********found**********/
p[__1__]=s[i]; j++;}
else
{ t[k]=s[i]; k++; }
}
/**********found**********/
for(i=0; i<__2__; i++) p[j+i]= t[i];
p[j+k]=0;
/**********found**********/
return __3__;
}
main()
{ char s[80];
printf("Please input: "); scanf("%s",s);
printf("/nThe result is: %s/n",fun(s));
}
