好文档 - 专业文书写作范文服务资料分享网站

全国计算机等级考试2级C语言上机题库 

天下 分享 时间: 加入收藏 我要投稿 点赞

{ x=s[i]; s[i]=s[t]; s[t]=x; }}

for(i=1,j=0; i

31.2 改错 给定程序MODI1.C 中函数fun的功能是:求pi值。 float fun ( float num ) { int s ;

float n, t, pi ;

t = 1 ; pi = 0 ; n = 1 ; s = 1 ; /**************found**************/ while((fabs(t))>=num) { pi = pi + t ; n = n + 2 ; s = -s ;

/**************found**************/ t = s / n ; }

pi = pi * 4 ; return pi ;}

31.3 程序 编写函数viod fun(char a[],char b[],int n),其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的小标。例如,输入一个字符串:World,然后输入3,则调用该函数后的结果为:Word。

#define LEN 20

void fun (char a[], char b[], int n) { strncpy(b, a, n) ;

b[n] = 0 ;

strcat(b, a + n + 1) ;} 第三十二套:

32.1填空 在形参ss所指字符串数组中,将所有串长超过k的字符串中右边的字符删除,只保留左边的k个字符。ss所指字符串数组中共有N个字符串,且串长小于M。 #define N 5 #define M 10

/**********found**********/ void fun(char (*ss) [M], int k) { int i=0 ;

/**********found**********/ while(i< N) {

/**********found**********/ ss[i][k]=0; i++; }}

32.2 改错 根据下面的公式求pi值,作为函数值返回。例如,给定精度的变量eps输入0.0005时,应当输出pi=3.140578 。 double fun(double eps)

{ double s,t; int n=1; s=0.0;

/************found************/ t=1;

while( t>eps) { s+=t;

t=t * n/(2*n+1); n++; }

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

return(2*s);}

32.3程序 使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么都不做,字符串中间和尾部de*号不删除。 例如,字符串中的内容为:*******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****若nwei8则字符串仍为*******A*BC*DEF*G****。n的值在主程序中输入。

void fun( char *a, int n ) { /* 以下代码仅供参考 */

int i=0,j,k=0;

while(a[k]=='*') k++; /* k为统计*字符个数 */

if(k>n)

{ i=n;j=k;

/* 以下完成将下标为k至串尾的字符前移k-n个位置 */ for(; a[j] !=0 ; j++)

a[i++]=a[j]; a[i] = 0; }} 第三十三套:

33.1填空 调用函数fun指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回为0.在复制的过程中,把复制的内容输出到终端屏幕。主函数中的源文件名放在变量sfname中,目标文件名放在变量tfname中。 int fun(char *source, char *target) { FILE *fs,*ft; char ch; /**********found**********/ if((fs=fopen(source, \ return 0;

if((ft=fopen(target, \w\ 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;}

33.2改错 将长整数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍为高位,地位仍在低位。 例如,当s中的数为:87653142时,t中的数为:8642。 void fun (long s, long *t) { int d; long sl=1; *t = 0; while ( s > 0) { d = s;

/************found************/ if (d%2==0) { *t=d* sl+ *t;

sl *= 10; }

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

s /= 10; }}

33.3程序 将两个两位数的正整数a,b合并形成一个整数放在C中。合并的方式是:将a的十位和个位依次放在c数的十位和千位上,b数的十位和个位依次放在c数的百位和个位上。 例如,当a=45,b=12时,调用该函数后,c=5142。 void fun(int a, int b, long *c)

{ *c=(a)*1000+(b/10)*100+(a/10)*10+(b);} 第三十四套:

34.1填空 用筛选法可得到2-------n(n小于10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找一下非0数,并从数表中删去该数的所有倍数;依次类推,直到找到的下一个数等于n为止,这样会得到一个序列:2,3,5,7,11,13,17,19,23, 函数fun用筛选法找出所有小于等于n的素数,并统计的个数作为函数值返回。 int fun(int n)

{ int a[10000], i,j, count=0; for (i=2; i<=n; i++) a[i] = i; i = 2;

while (i

/**********found**********/ for (j=a[i]*2; j<=n; j+=a[i]) a[j] = 0;

i++;

/**********found**********/ while (a[i]==0)

i++; }

printf(\ for (i=2; i<=n; i++) /**********found**********/

if (a[i]!=0)

{count++; printf( count?\ } return count;}

34.2改错 为一个偶数寻找两个素数,这两素数之和等于该偶数,并将这俩个素数通过形参指针传回主函数。

void fun(int a,int *b,int *c) { int i,j,d,y;

for(i=3;i<=a/2;i=i+2) {

/**************found**************/ y=1;

for(j=2;j<=sqrt((double)i);j++) if(i%j==0) y=0; if(y==1) {

/**************found**************/ d=a-i;

for(j=2;j<=sqrt((double)d);j++) if(d%j==0) y=0;

if(y==1)

{ *b=i; *c=d; } } }}

34.3程序 计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。 例如,在主函数中键盘给nshuru20后,输出为:s=0583333。 double fun(int n) { int i;

double sum=0.0;

for(i=1; i<=n; i++)

if(i%5 == 0 || i%9 == 0) /* 被5或9整除 */

sum+=1.0/i; return sum;} 第三十五套:

35.1填空 函数fun的功能是建立一个N×N的矩阵,矩阵元素的结构规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,…依次类推。例如,若N=5,生成的矩阵为: 。 #define N 7

/**********found**********/ void fun(int (*a) [N]) { int i,j,k,m;

if(N%2==0) m=N/2 ; else m=N/2+1; for(i=0; i

a[i][j]=a[N-i-1][j]=i+1; for(k=i+1; k

a[k][i]=a[k][N-i-1]= i+1; }

35.2改错 功能是:将十进制正整数m转换成k( )进制数,并按高位到低位顺序输出。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制是1000)。

void fun( int m, int k )

{ int aa[20], i;

for( i = 0; m; i++ )

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

for( ; i; i-- )

/**********found**********/ printf( \35.3程序

编写一个函数从num个字符串中找到最长的一个字符串,并通过形参指针max传回该串地址(注意:主函数中用****作为结果输入的标志,函数fun中给出的语句仅供参考)。 fun(char(*a)[81],int num,char **max) { /* 以下代码仅供参考 */

int i,k=0,len, maxlen; /* k为a数组中最长串所在元素的下标,初始为0,maxlen为其串长 */

maxlen=strlen(a[k]); for(i=1;i

{ /* 以下完成查找最长串 */ }

*max=a[k];} 第三十六套:

36.1填空 统计带出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。 #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**********/

8gmq84dbzq667gj1z1sv
领取福利

微信扫码领取福利

微信扫码分享