《C语言》期末复习题(25+50+18)

更新时间:2023-09-29 06:47:01 阅读量: 综合文库 文档下载

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

二、操作题(93题=25+50+18)

1. 填空题(25)

6、给定程序功能是用冒泡法对6个字符串进行排序。

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

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

/******blank6.c******/

#include #define MAXLINE 20 fun ( char *pstr[6]) { int i, j ; char *p ;

for (i = 0 ; i < 5 ; i++ ) { for (j = i + 1; j < 6; j++) {

/**************found**************/ if(strcmp(*(pstr+i),___1___)>0) {

p = *(pstr + i) ;

/**************found**************/ pstr[i] = ___2___ ;

/**************found**************/ *(pstr + j) = ___3___ ; } } } }

main( ) { int i ;

char *pstr[6], str[6][MAXLINE] ; for(i = 0; i < 6 ; i++) pstr[i] = str[i] ;

printf( \ for(i = 0 ; i < 6 ; i++) scanf(\ fun(pstr) ;

printf(\

for(i = 0 ; i < 6 ; i++) printf(\}

// blank6.c参考答案:

/**************found**************/ if(strcmp(*(pstr+i),*(pstr+j))>0)

/**************found**************/ pstr[i] = pstr[j];

/**************found**************/ *(pstr + j) = p ;

7、给定程序的功能是将十进制正整数m转换成k进制(2≤k≤9)数的数字输出。 例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

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

/******blank7.c******/

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

int aa[20], i;

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

/**********found**********/ aa[i] = ___1___;

/**********found**********/ m /= ___2___; }

for( ; i; i-- )

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

main() {

int b, n;

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

// blank7.c参考答案:

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

/**********found**********/ m /= k;

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

8、给定程序的功能是将未在字符串s中出现,而在字符串t中出现的字符,形成一个新的字符串放在u中,u中字符按原字符串中字符顺序排序,但去掉重复字符。

例如:当s=\,t=\时,u中的字符为:\。

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

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

/******blank8.c******/

#include #include

void fun (char *s, char *t, char *u) { int i, j, sl, tl, k, ul=0;

sl = strlen(s); tl = strlen(t); for (i=0; i

if (t[i] == s[j]) break;

if (j>=sl)

{ for (k=0; k

if (t[i] == u[k]) ___1___ ; if (k>=ul)

/************found************/ u[ul++] = ___2___ ; } }

/************found************/ ___3___='\\0'; }

main()

{ char s[100], t[100], u[100];

printf(\ printf(\ fun(s, t, u);

printf(\}

// blank8.c参考答案:

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

if (t[i] == u[k]) break; /************found************/ u[ul++] = t[i];

/************found************/ u[ul]='\\0';

10、给定程序的功能是将在字符串s中下标为奇数位置上的字符,紧随其后重复出现一次,放在一个新串t中,t中字符按原字符串中字符出现的逆序排列。(注意0为偶数)

例如:当s中的字符串为:\时,则t中的字符串应为:\。

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

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

/******blank10.c******/

#include #include

void fun (char *s, char *t) { int i, j, sl; sl = strlen(s);

/************found************/ if(sl%2) sl-=2; ___1___ sl--;

/************found************/ for (i=sl, j=___2___; i>=0; i-=2) { t[2*j] = s[i];

/************found************/ t[2*j +1] = ___3___ ; j++; }

t[2*j]='\\0'; }

main()

{ char s[100], t[100];

printf(\ fun(s, t);

printf(\}

// blank10.c参考答案:

/************found************/ if(sl%2) sl-=2; else sl--;

/************found************/ for (i=sl, j=0; i>=0; i-=2)

/************found************/ t[2*j +1] = s[i];

11、给定程序的功能是将大写字母转换为对应小写字母之后的第五个字母;若小写字母为v~z,使小写字母的值减21。转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f;若形参是字母W,则转换为小写字母b。

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

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

/******blank11.c******/

#include #include char fun(char c) { if( c>='A' && c<='Z') c=c+32;

if(c>='a' && c<='u')

/**************found**************/ c=c+___1___; else if(c>='v'&&c<='z') c=c-21;

/**************found**************/ return ___2___ ; }

main()

{ char c1,c2;

printf(\ \ if( isupper( c1 ) ) {

/**************found**************/ c2=fun(___3___);

printf(\ }

else printf(\}

// blank11.c参考答案:

/**************found**************/ c=c+5;

/**************found**************/ return c;

/**************found**************/ c2=fun(c1);

12、给定程序功能是计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…+f(n)的值。例如,当n为5时,函数值应为:10.407143。

┌(x+1)/(x-2) x>0

f(x) = ┤0 x=0 或 x=2

└(x-1)/(x-2) x<0

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

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

/******blank12.c******/

#include #include float f( double x) {

if (x == 0.0 || x == 2.0)

/************found************/ return ___1___; else if (x < 0.0)

return (x -1)/(x-2); else

return (x +1)/(x-2); }

double fun( int n )

{ int i; double s=0.0, y;

/************found************/ for (i= -n; i<=___2___; i++) {y=f(1.0*i); s += y;}

/************found************/ return ___3___; }

main ( ) {

printf(\}

// blank12.c参考答案:

/************found************/ return 0.0;

/************found************/ for (i= -n; i<=n; i++)

/************found************/ return s;

13、给定程序的功能是求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为:S=πr,在程序中定义的变量名要与公式的变量相同)。 例如输入圆的半径值:19.527输出为:s = 598.950017。

2

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

Top