2013年计算机二级C 100套填空、改错、编程题(含答案)

更新时间:2024-04-09 04:05:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一套 1、 填空题

给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! #include #include #define N 8 typedef struct list { int data;

struct list *next; } SLIST;

SLIST *creatlist(char *); void outlist(SLIST *);

int fun( SLIST *h, char ch) { SLIST *p; int n=0; p=h->next;

/**********found**********/ while(p!= 0) { n++;

/**********found**********/ if (p->data==ch) return n; else p=p->next; }

return 0; }

main()

{ SLIST *head; int k; char ch; char a[N]={'m','p','g','a','w','x','r','d'}; head=creatlist(a); outlist(head);

printf(\ scanf(\

/**********found**********/ k=fun(head,ch);

if (k==0) printf(\

else printf(\ %d\\n\}

SLIST *creatlist(char *a)

{ SLIST *h,*p,*q; int i;

h=p=(SLIST *)malloc(sizeof(SLIST));

for(i=0; 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(\ else

{ printf(\ do

{ printf(\ p=p->next; } while(p!=NULL); printf(\ } }

2、 改错题

给定程序modi.c中,函数fun的功能是:给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实际个数。

例如,n=8时输入:193.199、195.673、195.757、196.051、196.092、196.596、196.579、196.763所得平均值为:195.838745,在平均值以上的实数个数应为:5 请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #include

#include int fun(float x[],int n)

/************found************/ {int j,c=0;float xa=0.0; for(j=0;j

printf(\ for(j=0;j

/************found************/ if(x[j]>=xa) c++; return c; }

main()

{float x[100]={193.199f,195.673f,195.757f,196.051f,196.092f,196.596f,196.579f,196.763f}; system(\

printf(\}

3、编程题

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其它*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。

例如,字符串中的内容为:****A*BC*DEF*G********,删除后,字符串中的内容应当是:****ABCDEFG********。在编写函数时,不得使用C语言提供的字符串函数。 注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include

void fun(char *a,char *h,char *p) { }

void NONO( )

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ char s[81],*t,*f; int i;

FILE *rf,*wf;

rf = fopen(\ wf = fopen(\ for (i=0;i<4;i++) {fscanf(rf,\ t=f=s;

while(*t) t++; t--;

while (*t=='*') t--; while (*f=='*') f++; fun(s,f,t);

fprintf(wf,\ }

fclose(rf); fclose(wf) ; }

main()

{ char s[81],*t,*f;

printf(\ t=f=s;

while(*t) t++; t--;

while (*t=='*') t--; while (*f=='*') f++; fun(s,f,t);

printf(\ NONO(); }

第二套 1、 填空题

给定程序中,函数fun的功能是:统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!

#include #include #define 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**********/ (*n)=0; p=h->next; while(p) { (*n)++;

/**********found**********/ p=p->next; } }

main()

{ SLIST *head;

int a[N]={12,87,45,32,91,16,20,48}, num; head=creatlist(a); outlist(head); /**********found**********/

fun(head, &num);

printf(\}

SLIST *creatlist(int a[])

{ SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; 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(\ else

{ printf(\ do

{ printf(\ p=p->next; } while(p!=NULL); printf(\ } }

2、 改错题

给定程序modi.c中,fun函数的功能是:将n个无序整数从小到大排序。请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include #include #include

#include fun(int n,int *a) {int i,j,p,t;

for (j=0;j

/************found************/ for (i=j+1;ia[i])

/************found************/ p=i; if (p!=j)

{t=a[j];a[j]=a[p];a[p]=t;} } }

putarr(int n,int *z) {int i;

for (i=1;i<=n;i++,z++) {printf(\

if (!(i)) printf(\ }printf(\}

main()

{ int aa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11; system(\

printf(\ fun(n,aa);

printf(\}

3、编程题

请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.0005, 即某项小于0.0005时停止迭代):

程序运行后,如果输入精度0.0005,则程序输出为3.140578。 注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include #include

double fun ( double eps) { }

void NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i ; double x ;

fp = fopen(\ if(fp == NULL) {

printf(\数据文件bc04.in不存在!\ return ; }

wf = fopen(\ for(i = 0 ; i < 10 ; i++) { fscanf(fp, \

fprintf(wf, \ }

fclose(fp) ; fclose(wf) ; }

main( )

{ double x;

printf(\

scanf(\ NONO(); }

第三套 1、 填空题

给定程序中,函数fun的功能是:计算出带有头结点的单向链表中各结点数据域之和作为函数值返回。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!

#include #include #define N 8 typedef struct list { int data;

struct list *next; } SLIST;

SLIST *creatlist(int *); void outlist(SLIST *); int fun( SLIST *h)

{ SLIST *p; int s=0; p=h->next; while(p) {

/**********found**********/ s+= p->data;

/**********found**********/ p=p->next; }

return s; }

main()

{ SLIST *head;

int a[N]={12,87,45,32,91,16,20,48}; head=creatlist(a); outlist(head); /**********found**********/

printf(\}

SLIST *creatlist(int a[])

{ SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; 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(\ else

{ printf(\ \ do

{ printf(\ } while(p!=NULL); printf(\ } }

2、 改错题

给定程序modi.c中,函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中,若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。

例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求

平均值。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include #define SIZE 20

fun(double *s,double *w) { int k,i; double sum; for (k=2,i=0;i

/************found************/ sum=0.0;

for(k=0,i=0;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(\ for (i=0;i

{ if(i%5==0) printf(\ printf(\ }

printf(\

for(i=0;i

3、编程

请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。

例如,输入beijing shanghai 为回车键) 函数将返回shanghai。

注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

char *fun(char *s,char *t) { }

void NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i ;

char a[20], b[20] ;

fp = fopen(\ if(fp == NULL) {

printf(\数据文件bc03.in不存在!\ return ; }

wf = fopen(\ for(i = 0 ; i < 10 ; i++) { fscanf(fp, \ fprintf(wf, \ }

fclose(fp) ; fclose(wf) ; }

main()

{ char a[20],b[10];

printf(\ gets(a);

printf(\ gets(b);

printf(\ NONO (); }

第四套 1、 填空题

人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。函数fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! #include #include #define N 8 typedef struct { char num[10];

int year,month,day ; }STU;

/**********found**********/ STU fun(STU *std, char *num)

{ int i; STU a={\ for (i=0; i

/**********found**********/ if( strcmp(std[i],num)==0 ) /**********found**********/ return (std[i]); return a; }

main()

{ STU std[N]={ {\ {\ {\ STU p; char n[10]=\ p=fun(std,n); if(p.num[0]==0)

printf(\ else

{ printf(\ \

printf(\ %d-%d-%d\\n\ } }

2、 改错题

给定程序modi.c中,函数fun的功能是:从s所指字符串中,找出t所指子串的个数作为函数值返回。

例如,当s所指字符串中的内容为:\,t所指字符串的内容为:\,则函数返回整数3。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #include #include

#include

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; }

main() {

char s[100],t[100]; int m; system(\

printf(\ printf(\ m=fun(s,t);

printf(\ m=%d\\n\}

3、 编程题

规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串最前面连续的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。

例如,字符串中的内容为:*******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为:*******A*BC*DEF*G****。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。

注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include #include void fun(char *a,int n) {

}

void NONO( )

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ char s[81]; int i,n;

FILE *rf,*wf;

rf = fopen(\ wf = fopen(\ for (i=0;i<4;i++) {fscanf(rf,\ fscanf(rf,\ fun(s,n);

fprintf(wf,\ }

fclose(rf); fclose(wf) ; } main()

{ char s[81];int n;

printf(\ printf(\ \ fun(s,n);

printf(\ NONO(); }

第五套题 5.1填空题

人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结 果。

注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!

#include #define N 8 typedef struct { int num;

int year,month,day ;

}STU;

int fun(STU *std, STU *k, int year) { int i,n=0;

for (i=0; i

/**********found**********/ if( std[i]. year ==year) /**********found**********/ k[n++]= std[i];

/**********found**********/ return (n); }

main()

{ STU std[N]={ {1,1984,2,15},{2,1983,9,21},{3,1984,9,1},{4,1983,7,15}, {5,1985,9,28},{6,1982,11,15},{7,1982,6,22},{8,1984,8,19}}; STU k[N]; int i,n,year;

printf(\ \ scanf(\ n=fun(std,k,year); if(n==0)

printf(\ else

{ printf(\ for(i=0; i

printf(\ %d-%d-%d\\n\ } }

5.2改错题

给定程序modi.c中,函数fun的功能是:将十进制正整数m转换成k(2≤k≤9)进制数,并按位输出。

例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。 请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include #include

#include void fun(int m,int k) {

int aa[20],i; for (i=0;m;i++) {

/************found************/ aa[i]=m % k; m/=k; }

/************found************/ for(i=i-1;i>=0;i--) printf(\}

main() {

int b,n;

system(\

printf(\ scanf(\ %d\ fun(n,b); printf(\}

5.3编程题

请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。 例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为:71.80。 注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include float fun(float *a,int n) { }

void NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, j ;

float aver, score[5] ;

fp = fopen(\ if(fp == NULL) {

printf(\数据文件bc01.in不存在!\ return ; }

wf = fopen(\ for(i = 0 ; i < 10 ; i++) {

for(j = 0 ; j < 5 ; j++) fscanf(fp,\ aver = fun(score, 5) ;

fprintf(wf, \

}

fclose(fp) ; fclose(wf) ; }

main()

{ float score[30]={90.5,72,80,61.5,55},aver; aver=fun(score,5);

printf(\ NONO ( ); }

第六套 6.1填空题

给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系数a。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!

#include typedef struct { int num;

char name[9]; float score[3]; }STU;

void show(STU tt) { int i;

printf(\ %s : \ for(i=0; i<3; i++)

printf(\ printf(\}

/**********found**********/ void modify(STU *ss,float a) { int i;

for(i=0; i<3; i++)

/**********found**********/ ss->score[i] *=a; }

main( )

{ STU std={ 1,\ float a;

printf(\

show(std);

printf(\ \ scanf(\/**********found**********/ modify(&std,a);

printf(\ show(std); }

6.2改错题

给定程序modi.c中,函数fun的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。

例如:若输入:edcba,则应输出:abcde。 请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include #include

#include #define M 20 void fun(char t[]) {

char c; int i,j;

/************found************/ for(i=strlen(t);i;i--) for(j=0;j

/************found************/ if(t[j]

c=t[j]; t[j]=t[j+1]; t[j+1]=c; } }

main() {

char s[81]; system(\

printf(\ gets(s);

printf(\ \\\ fun(s);

printf(\ \\\

}

6.3编程题

某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。

例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,他的平均分应当是:78.875。 注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include #define N 8 typedef struct

{ char num[10]; double s[N]; double ave; }STREC;

void fun(STREC *p) { }

void NONO( )

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */

STREC s={\ int i;

FILE *wf;

wf = fopen(\ fun(&s);

fprintf(wf,\ for(i=0;i

fprintf(wf,\ fprintf(wf,\ fclose(wf) ; }

main()

{ STREC s={\ int i; fun(&s);

printf(\

for(i=0;i

printf(\ printf(\ NONO(); }

第七套题 7.1 填空题

给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!

#include typedef struct { int num;

char name[10]; }PERSON;

/**********found**********/ void fun(PERSON std[3]) {

/**********found**********/ PERSON temp;

if(std[0].num>std[1].num)

{ temp=std[0]; std[0]=std[1]; std[1]=temp; } if(std[0].num>std[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,\ int i;

/**********found**********/ fun(std);

printf(\ for(i=0; i<3; i++)

printf(\}

7.2 改错题

给定程序modi.c中,函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量a中的值为3,b中的值原为8,程序运行后a中的值为8,b中的值为3。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include #include

#include int fun(int *x,int y) {

int t;

/************found************/ t=*x;*x=y;

/************found************/ return t; }

main() {

int a=3,b=8; system(\

printf(\ %d\\n\ b=fun(&a,b);

printf(\ %d\\n\}

7.3 编程题

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把高于等于平均分的学生数据放在h所指的数组中,高于等于平均分的学生人数通过形参传回,平均分通过函数值返回。 注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include #include

#include int fun(int *x,int y) {

int t;

/************found************/ t=x;x=y;

/************found************/ return(y); }

main() {

int a=3,b=8; system(\

printf(\ %d\\n\ b=fun(&a,b);

printf(\ %d\\n\}

第八套题 8.1填空题

给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! #include typedef struct

{ char name[10]; int age; }STD;

STD fun(STD std[], int n) { STD max; int i; /**********found**********/ max= *std;

for(i=1; i

/**********found**********/

if(max.age<_std[i].age) max=std[i]; return max; }

main( )

{ STD std[5]={\ }; STD max; max=fun(std,5);

printf(\/**********found**********/

printf(\ Age : %d\\n\}

8.2改错题

给定程序modi.c中,函数fun的功能是:计算正整数num的各位上的数字之积,例如,若输入:252,则输出应该是:20。若输入:202,则输出应该是:0。 请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #include

#include long fun(long num) {

/************found************/ longk=1; do

{ k*=num;

/************found************/ num/=10; } while(num); return (k); }

main() { long n;

system(\

printf(\ printf(\}

8.3编程题

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。 注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #define N 16 typedef struct

{ char num[10]; int s; } STREC;

void fun(STREC a[])

{ }

main() { STREC s[N]={{\08\},{\ int i;FILE *out; fun(s);

printf(\ for(i=0;i

{ if((i)%4==0)printf(\ printf(\ M\ }

printf(\

out=fopen(\ for (i=0;i

{ if((i)%4==0 && i) fprintf(out,\ fprintf(out,\ M\ }

fprintf(out,\ fclose(out); }

第九套题 9.1 填空题

给定程序中,函数fun的功能是:对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。ss所指字符串数组中共有M个字符串,且串长

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! #include #include #define M 5 #define N 20 void fun(char (*ss)[N])

{ int i, j, k, n[M]; char t[N]; for(i=0; i

/**********found**********/ for(j=i+1; j

/**********found**********/ if(n[k]>n[j]) k=j; if(k!=i)

{ strcpy(t,ss[i]); strcpy(ss[i],ss[k]); /**********found**********/ strcpy(ss[k], t); n[k]=n[i]; } } }

main()

{ char ss[M][N]={\ int i;

printf(\ for(i=0; i

printf(\

for(i=0; i

9.2 改错题

给定程序modi.c中,函数fun的功能是:将字符串中的内容按逆序输出,但不改变字符串中的内容。

例如,若字符串为abcd,则应输出:dcba。 请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include

/************found************/ fun(char *a) { if(*a)

{ fun(a+1) ;

/************found************/ printf(\ } }

main()

{ char s[10]=\

printf(\处理前字符串=%s\\n处理后字符串=\ fun(s);printf(\}

9.3 编程题

函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的

方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。

例如,当a=45,b=12。调用该函数后,c=2415。 注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include #include void fun(int a,int b,long *c) { }

void NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, a,b ; long c ;

rf = fopen(\ wf = fopen(\ for(i = 0 ; i < 10 ; i++) {

fscanf(rf, \ fun(a, b, &c) ;

fprintf(wf, \ }

fclose(rf) ; fclose(wf) ; }

main()

{ int a,b;long c; system(\

printf(\ scanf(\ fun(a,b,&c);

printf(\ NONO(); }

第十套题 10.1填空题

给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,

其余字符串左边用字符*补齐,使其与最长的字符串等长。字符串数组中共有M个字符串,且串长

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!

#include #include #define M 5 #define N 20 void fun(char (*ss)[N]) { int i, j, k=0, n, m, len; for(i=0; in) {

/**********found**********/ n=len; k=i; } }

for(i=0; i

len=strlen(ss[i]);

/**********found**********/ for(j=len; j>=0; j--) ss[i][m--]=ss[i][j]; for(j=0; j

main()

{ char ss[M][N]={\ int i;

printf(\ for(i=0; i

printf(\

for(i=0; i

10.2改错题

给定程序modi.c中,函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。

其中x和y的值不等,z和y的值不等。

例如,当x的值为9、y的值为11、z的值为15时,函数值为-3.50。 请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #include

#define FU(m,n) (m/n) float fun(float a,float b,float c) { float value;

/************found************/ value=FU((a+b,a-b))+FU(c+b,c-b); /************found************/ return(Value); }

main()

{ float x,y,z,sum;

printf(\

scanf(\

printf(\

if (x==y||y==z) {printf(\ sum=fun(x,y,z);

printf(\}

10.3编程题

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。(用于字符串比较的函数是strcmp)。

注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include #define N 16 typedef struct

{ char num[10]; int s; } STREC;

STREC fun(STREC *a,char *b) {

}

main() { STREC s[N]={{\08\},{\ STREC h; char m[10]; int i;FILE *out;

printf(\ for(i=0;i

{ if((i)%4==0)printf(\ printf(\ =\ }

printf(\ \ h=fun(s,m);

printf(\ \

printf(\ M\\n\ printf(\

out=fopen(\ h=fun(s,\

fprintf(out,\ M\\n\ fclose(out); }

第十一套 11.1 填空题

给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据从小到大顺序链接。函数fun的功能是:把形参x的值放入一个新结点并插入到链表中,插入后各结点仍保持从小到大顺序排列。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!

#include #include #define N 8 typedef struct list { int data;

struct list *next;

} SLIST;

void fun( SLIST *h, int x) { SLIST *p, *q, *s;

s=(SLIST *)malloc(sizeof(SLIST)); /**********found**********/ s->data=x; q=h;

p=h->next;

while(p!=NULL && x>p->data) { /**********found**********/ q=p;

p=p->next; }

s->next=p;

/**********found**********/ q->next=s; }

SLIST *creatlist(int *a)

{ SLIST *h,*p,*q; int i;

h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; 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(\ else

{ printf(\

do { printf(\ p=p->next; } while(p!=NULL); printf(\ } }

main()

{ SLIST *head; int x;

int a[N]={11,12,15,18,19,22,25,29}; head=creatlist(a);

printf(\ outlist(head); printf(\ \ scanf(\ fun(head,x);

printf(\ outlist(head); }

11.2改错题

N个有序整数数列已放在一维数组中,给定程序modi.c中,函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,返回其下标值;反之,返回-1。折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(lowhigh,查找结束。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include #define N 10

/************found************/ fun(int a[],int m)

{ int low=0,high=N-1,mid; while(low<=high) { mid=(low+high)/2; if(m

/************found************/ else if(m>a[mid]) low=mid+1; else return(mid); }

return(-1); }

main()

{ int i,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m; printf(\数组中的数据如下:\ for(i=0;i

if(k>=0) printf(\ else printf(\}

11.3编程题

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在h所指的数组中,分数范围

内的学生人数由函数值返回。

例如,输入的分数是60 69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中将把60放在low中,把69放在heigh中。 注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include #define N 16 typedef struct

{ char num[10]; int s; } STREC;

int fun(STREC *a,STREC *b,int l,int h) { }

main() { STREC s[N]={{\08\},{\ STREC h[N];FILE *out; int i,n,low,heigh,t;

printf(\ scanf(\

if (heigh

printf(\ for(i=0;i

printf(\ M\\n\ printf(\

out=fopen(\ n=fun(s,h,80,98); fprintf(out,\ for(i=0;i

fprintf(out,\ M\\n\ fclose(out); }

第十二套 12.1 填空题

给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为0。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!

#include #include

int fun(char *source, char *target) { FILE *fs,*ft; char ch; /**********found**********/

if((fs=fopen(source, \ return 0;

if((ft=fopen(target, \ return 0;

printf(\ ch=fgetc(fs);

/**********found**********/ while(!feof(fs)) { putchar( ch );

/**********found**********/ fputc(ch, ft); ch=fgetc(fs); }

fclose(fs); fclose(ft); printf(\ return 1; }

main()

{ char sfname[20] =\ FILE *myf; int i; char c; myf=fopen(sfname,\

printf(\

for(i=1; i<30; i++){ c='A'+rand()%;fprintf(myf,\ fclose(myf);printf(\

if (fun(sfname, tfname)) printf(\ else printf(\}

12.2改错题

给定程序modi.c中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值,从第1项起,斐波拉契级数序列为:1、1、2、3、5、8、13、21、…… 例如,若给n输入7,该项的斐波拉契级数值为:13。 请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include long fun(int g) {

/************found************/ switch(g)

{ case 0:return 0;

/************found************/ case 1:case 2:return 1; }

return(fun(g-1)+fun(g-2)); }

main()

{ long fib; int n;

printf(\ fib=fun(n);

printf(\}

12.3编程题

N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。

例如,若学生的成绩是:85,76,69,85,91,72,64,87;则平均分应当是:78.625。 注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include #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*)malloc(sizeof(STREC));p->s=0; while(i

{ q=(STREC*)malloc(sizeof(STREC)); q->s=s[i];i++;p->next=q;p=q; }

p->next=0; return h; }

outlist(STREC *h) { STREC *p;

p=h->next;printf(\ do

{ printf(\ while(p!=0); printf(\}

void NONO( )

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */

double s[N]={85,76,69,85,91,72,64,87},ave; STREC *h; FILE *wf;

h=creat(s); outlist(h); ave=fun(h);

wf = fopen(\ fprintf(wf,\ fclose(wf) ; }

main()

{ double s[N]={85,76,69,85,91,72,64,87},ave; STREC *h;

h=creat(s); outlist(h); ave=fun(h);

printf(\ NONO(); }

第十三套题 13.1填空题

给定程序中,函数fun的功能是:将自然数1~10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! #include #include

int fun(char *fname )

{ FILE *fp; int i,n; float x;

if((fp=fopen(fname, \ return 0; for(i=1;i<=10;i++)

/**********found**********/

fprintf(fp,\ printf(\

/**********found**********/ fclose(fp);

printf(\/**********found**********/

if((fp=fopen(fname,\ return 0;

fscanf(fp,\ while(!feof(fp))

{ printf(\ fscanf(fp,\ } fclose(fp); return 1; }

main()

{ char fname[]=\ fun(fname); }

13.2改错题

给定程序中,函数fun的功能是:将自然数1~10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!

#include

fun(char *str,char *substr) { int i,j,k,num=0;

/************found************/ for(i=0;str[i] ;i++)

for(j=i,k=0;substr[k]==str[j];k++,j++) /************found************/

if (substr[k+1]=='\\0') { num++; break; }

return num; }

main() {

char str[80],substr[80]; printf(\ gets(str);

printf(\ gets(substr);

printf(\}

13.3编程题

请编写一个函数unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n≥2)位的整数,函数求出w的低n-1位的数作为函数值返回。

例如:w值为5923,则函数返回923;w值为923,则函数返回23。 注意:部分源程序保存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include #include #include

unsigned fun ( unsigned w ) { }

void NONO( )

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ unsigned x ; int i ;

FILE *rf, *wf ;

rf = fopen(\ wf = fopen(\ for(i = 0 ; i < 20 ; i++) { fscanf(rf, \

fprintf(wf, \

}

fclose(rf) ; fclose(wf) ; }

main( )

{ unsigned x; system(\

printf ( \ \ printf ( \ %u\\n\ if ( x < 10 ) printf (\

else printf ( \ : %u\\n\ NONO( ); }

第十四套题 14.1填空题

给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1(独立一行)作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!

#include #include #include void WriteText(FILE *); void ReadText(FILE *); main()

{ FILE *fp;

if((fp=fopen(\ { printf(\ } WriteText(fp); fclose(fp);

if((fp=fopen(\ { printf(\ } ReadText(fp); fclose(fp); }

/**********found**********/ void WriteText(FILE *fw) { char str[81];

printf(\ gets(str);

while(strcmp(str,\/**********found**********/

fputs(str,fw); fputs(\ gets(str); } }

void ReadText(FILE *fr) { char str[81];

printf(\ fgets(str,81,fr); while( !feof(fr) ) {

/**********found**********/ printf(\ fgets(str,81,fr); } }

14.2改错题

给定程序modi.c中,函数fun的功能是:从字符串s中删除所有小写字母c。 请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include void fun(char *s) { int i,j;

for(i=j=0;s[i]!='\\0';i++) if(s[i]!='c')

/************found************/ s[j++]=s[i];

/************found************/ s[j]='\\0'; }

main()

{ char s[80];

printf(\ \ printf(\ \ fun(s);

printf(\ \}

14.3编程题

请编写一个函数 int fun(int *s, int t, int *k),用来求出数组的最大元素在数组中的下标,

用k返回。

例如, 输入如下整数:

876 675 896 101 301 401 980 431 451 777 则输出结果为: 6, 980

注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include #include #include

int fun(int *s, int t, int *k) { }

void NONO ( )

{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ int a[10], i, k, j ; FILE *rf, *wf ;

rf = fopen(\ wf = fopen(\ for(i = 0 ; i < 10 ; i++) {

for(j = 0 ; j < 10 ; j++) fscanf(rf, \ fun(a, 10, &k) ;

fprintf(wf, \ }

fclose(rf) ; fclose(wf) ; }

main( ) {

int a[10]={876,675,896,101,301,401,980,431,451,777}, k ;

system(\ fun(a, 10, &k) ;

printf(\

NONO( ) ; }

第十五套题 15.1填空题

给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!

#include #include #define N 5 typedef struct { int num;

char name[10]; char tel[10]; }STYPE; void check();

/**********found**********/ int fun(STYPE*std) {

/**********found**********/ FILE *fp; int i;

if((fp=fopen(\ return(0);

printf(\ for(i=0; i

/**********found**********/

fwrite(&std[i], sizeof(STYPE), 1, fp); fclose(fp); return (1); }

main()

{ STYPE s[10]={ {1,\ {4,\ int k; k=fun(s); if (k==1)

{ printf(\ check(); } else

printf(\}

void check()

{ FILE *fp; int i; STYPE s[10];

if((fp=fopen(\ { printf(\

printf(\ printf(\ num name tel\\n\ for(i=0; i

{ fread(&s[i],sizeof(STYPE),1, fp);

printf(\ %s %s\\n\ }

fclose(fp); }

15.2改错题

给定程序modi.c中,函数fun的功能是:把主函数中输入的3个数,最大的放在a中,最小的放在c中。

例如,输入的数为:55 12 34,

输出结果应当是:a=55.0,b=34.0,c=12.0。 请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include

void fun(float *p,float *q,float *s) {

/************found************/ float k; if (*p<*q)

{ k=*p;*p=*q;*q=k;}

/************found************/ if (*s>*p)

{ k=*s;*s=*p;*p=k;} if (*q<*s)

{ k=*q;*q=*s;*s=k;} }

main()

{ float a,b,c;

printf(\ \

printf(\ fun(&a,&b,&c);

printf(\}

15.3编程题

请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串\,则函数把它转换为整数值 -1234。

注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include #include long fun ( char *p) { }

void NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i ;

char s[20] ;a long n ;

fp = fopen(\ if(fp == NULL) {

printf(\数据文件bc02.in不存在!\ return ; }

wf = fopen(\ for(i = 0 ; i < 10 ; i++) { fscanf(fp, \ n = fun(s);

fprintf(wf, \ }

fclose(fp) ; fclose(wf) ; }

main() /* 主函数 */ { char s[6]; long n;

printf(\ gets(s); n = fun(s);

printf(\ NONO ( ); }

第十六套 16.1 填空题

给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!

#include #include #define N 8 typedef struct list { int data;

struct list *next; } SLIST;

void fun( SLIST *p) { SLIST *t, *s; t=p->next; s=p; while(t->next != NULL) { s=t;

/**********found**********/ t=t->next; }

/**********found**********/ printf(\ s->next=NULL;

/**********found**********/ free(t); }

SLIST *creatlist(int *a)

{ SLIST *h,*p,*q; int i;

h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; 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(\ else

{ printf(\

do { printf(\ p=p->next; } while(p!=NULL); printf(\ } }

main()

{ SLIST *head;

int a[N]={11,12,15,18,19,22,25,29}; head=creatlist(a);

printf(\ outlist(head); printf(\ while (head->next != NULL){ fun(head); printf(\

printf(\ outlist(head); } }

16.2改错题

给定程序MODI1.C中函数fun的功能是:将tt所指字符串中的小写字母都改为对应的大写字母,其它字符不变。

例如,若输入\,则输出\。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include #include char* fun( char tt[] ) {

int i;

for( i = 0; tt[i]; i++ )

/**********found***********/

if(( 'a' <= tt[i] ) && ( tt[i] <= 'z' ) ) /**********found***********/ tt[i]- = 32; return( tt );

}

main( ) {

char tt[81];

printf( \ gets( tt );

printf( \}

16.3编程题

请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传送给m的值为50,则程序输出: 7 11 14 21 22 28 33 35 42 44 49 注意: 部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include #include

#include #define M 100

void fun ( int m, int *a , int *n ) { }

void NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ;

int i, n, j, k, aa[M], sum ;

fp = fopen(\ if(fp == NULL) {

printf(\数据文件bc05.in不存在!\ return ; }

wf = fopen(\ for(i = 0 ; i < 10 ; i++) { fscanf(fp, \ fun(j, aa, &n) ; sum = 0 ;

for(k = 0 ; k < n ; k++) sum+=aa[k] ;

fprintf(wf, \ }

fclose(fp) ; fclose(wf) ; }

main( )

{ int aa[M], n, k; system(\ fun ( 50, aa, &n );

for ( k = 0; k < n; k++ )

if((k+1) ==0) printf(\ else printf( \ printf(\ NONO( ); }

第十七套 17.1填空题

给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序链接。函数fun的功能是,删除链表中数据域值相同的结点,使之只保留一个。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!

#include #include #define N 8 typedef struct list { int data;

struct list *next; } SLIST;

void fun( SLIST *h) { SLIST *p, *q; p=h->next; if (p!=NULL) { q=p->next;

while(q!=NULL)

{ if (p->data==q->data) { p->next=q->next; /**********found**********/ free(___1___); /**********found**********/

q=p->___2___; } else { p=q;

/**********found**********/ q=q->___3___; } } } }

SLIST *creatlist(int *a)

{ SLIST *h,*p,*q; int i;

h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; 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(\ else

{ printf(\

do { printf(\ p=p->next; } while(p!=NULL); printf(\ } }

main( )

{ SLIST *head; int a[N]={1,2,2,3,4,4,4,5}; head=creatlist(a);

printf(\ outlist(head); fun(head);

printf(\ outlist(head); }

17.2改错题

给定程序modi.c中 fun 函数的功能是:分别统计字符串中大写字母和小写字母的个数。 例如:给字符串ss输入:\,则输出结果应为:upper = 6, lower = 8

请改正 fun 函数中的错误,使它能计算出正确的结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!

#include #include #include

/**********found**********/ void fun ( char *s, int *a, int *b ) {

while ( *s )

{ if ( *s >= 'A' && *s <= 'Z' ) /**********found**********/ *a=1+*a;

if ( *s >= 'a' && *s <= 'z' ) /**********found**********/ ++(*b); s++; } }

main( )

{ char s[100]; int upper = 0, lower = 0 ; system(\

printf( \ \ gets ( s ); fun ( s, & upper, &lower );

printf( \ lower = %d\\n\ }

17.3编程题

请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标, 最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名, n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。 注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include #include #include

void fun(int a[], int n , int *max, int *d ) {

}

void NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ;

int i, x[20], max , index, n = 10, j ;

fp = fopen(\ if(fp == NULL) {

printf(\数据文件bc06.in不存在!\ return ; }

wf = fopen(\ for(i = 0 ; i < 10 ; i++) {

for(j = 0 ; j < n ; j++) fscanf(fp, \ fun( x, n , &max, &index);

fprintf(wf, \ }

fclose(fp) ; fclose(wf) ; }

main()

{ int i, x[20], max , index, n = 10; srand(time(0));

for (i=0;i < n;i++) {x[i] = rand()P; printf(\ printf(\

fun( x, n , &max, &index);

printf(\ Index =M\\n\ NONO(); }

第十八套题 18.1填空题

函数fun的功能是:统计长整数n的各个位上出现数字1、2、3的次数,并通过外部(全局)变量c1、c2、c3返回主函数。例如,当n=123114350时,结果应该为:c1=3 c2=1 c3=2。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! #include int c1,c2,c3; void fun(long n) { c1 = c2 = c3 = 0;

while (n) {

/**********found**********/ switch(n) {

/**********found**********/ case 1: c1++;break; /**********found**********/ case 2: c2++;break; case 3: c3++; }

n /= 10; } }

main()

{ long n=123114350L; fun(n);

printf(\

printf(\ c1=%d c2=%d c3=%d\\n\}

18.2改错题

给定程序modi.c中函数fun的功能是:判断字符ch 是否与字符串str中的某个字符相同,若相同,什么也不做;若不同,则插在串的最后。 请改正函数fun中的错误,使它能进行正确的操作。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include #include #include #include

/**********found**********/ void fun(char *str, char ch )

{ while ( *str && *str != ch ) str++; /**********found**********/ if ( *str!= ch ) { str [ 0 ] = ch;

/**********found**********/ str[1] = '\\0'; } }

main( )

{ char s[81], c ; system(\

printf( \ gets ( s );

本文来源:https://www.bwwdw.com/article/k7gr.html

Top