C语言练习材料(2014)及选择题解答

发布时间 : 星期日 文章C语言练习材料(2014)及选择题解答更新完毕开始阅读

C语言补充材料(2014.6)

则枚举常量c和e的值分别是( )。 A)11和16 B)14和16 C)11和13 D)2和4

94. 若已定义:

enum colors {red,green=2,blue, black}x,a[3]; 以下语句()。

/ * 语句 1 */ a[1]=black ; / * 语句 2 */ red = 1 ; / * 语句 3 */ x= green ;

A) 语句1 与语句2正确 ,语句3错误 B) 语句1与语句3正确,语句2错误

C) 语句2 与语句3正确,语句1错误 D) 语句1正确,语句2和语句3错误

七、文件

95. 以下程序的运行结果是( )。 #include void main( ) { FILE *fp;

int a=3, b=5, x=0, y=0, z; fp=fopen(“test.txt”,”w”); fprintf(fp, “%d\\n%d”, a, b); fclose(fp);

fp=fopen(“test.txt”,”r”);

fscanf(fp, “%d%d”, &x, &y); z=x+y;

printf(“%d\\n”, z); fclose(fp); }

A)8 B)3 C)5 D)0

96. 若文本文件data.txt的内容为hotel, 以下程序段的进行结果是( )。 FILE *fp; char str[10];

fp=fopen(“data.txt”, “r”); fgets(str, 4, fp); printf(“%s”, str);

A)Hote B)Hotel C)Ho D)Hot

97. fscanf( )函数的正确调用形式是( )。 A) fscanf( 文件指针,输入表列,格式字符串) B) fscanf(文件指针,格式字符串,输入表

列)

C) fscanf(格式字符串,文件指针,输入表

列)

D) fscanf(格式字符串,输入表列,文件指

针)

98. 以下程序后,文件test.txt的内容是( )。 #include void main( ) {FILE *fp;

fp=fopen(“test.txt”,”w”); fprintf(fp, “%s”,”How ”); fclose(fp);

fp=fopen(“test.txt”,”a”); fprintf(fp, “%s”,”are you!”); fclose(fp); }

A) How are you! B) How

C) are you! D) you!

99. 对已打开的文件操作完成后,应使用( )将文件关闭。

A) close()函数 B) closefile( )函数

C) openfile ( ) 函数 D) fclose( )函数

9

改错题

1) 修改程序cmody591.c,按每行10个数的形式输出[10,99]区间内满足“个位数与十位数之积大于它们之和”的所有整数。例如:

整数38, 个位数与十位数之积24(3×8)大于它们之和11(3+8)

#include #include void main() { int i,j,k,s,n=0;

for(i=10;i<100;i++) { /**/ k=0; /**/ s=0; j=i; while(j)

{ k*=j; s+=j;

/**/ j=j /**/; }

if(/**/ k

{ if(n==0) printf(\ n++;

printf(\ } }

printf(\ getch(); }

2) 修改程序cmody592.c,使函数pnt(int a[M][M], int n), 根据参数n(1

当n=6时, 输出:

11 13 15 17 19 21 22 23 24 25 26 27 33 35 37 39 41 43 44 45 46 47 48 49 55 57 59 61 63 65 66 67 68 69 70 71 当n=3时, 输出: 11 13 15 22 23 24 33 35 37

#include #include #define M 9

void pnt(int a[M][M],int n) { int /**/i,j /**/; for(i=0;i

for(j=0;j

a[i][j]=s+2*j; else

a[i][j]=/**/ s+j+1 /**/; } }

printf(\ for(i=0;i

printf(\ printf(\ } }

void main() { int a[M][M]; int n; do { printf(\input n(1

scanf(\ }while(n<=1 || n>=10); pnt(/**/ a[ ]/**/,n); getch(); }

3) 修改程序cmody601.c,使字符串中所有大写的英文字母转换为小写英文字母(其它字符不变)。例如:

原字符串:g@O355o6D LuCk! 被转换成:g@o35506d luck! #include #include #include void main() {

char src[80],tag[80]; int i;

10

C语言补充材料(2014.6)

/**/ i='0'; /**/

printf(\ gets(src);

strcpy(tag,src);

while(/**/ tag[i]=='\\0' /**/) {

if(tag[i]>='A' && tag[i]<='Z') /**/ tag[i]-=32; /**/ i++; }

printf(\source string: %s\\n\

printf(\ getch(); }

(4)修改程序cmody602.c,使函数p_swap( )利用指针变量实现函数main( )中两个变量值的交换。例如:

输入:23, 78

显示:Original a=23, b=78 Now a=78, b=23

#include #include

void p_swap(int *x,int *y) {

int /**/ t /**/; temp=*y;

*y=/**/ x /**/; *x=temp; }

void main() {

int a,b;

printf(\

scanf(\ printf(\a=%d, b=%d\\n\

p_swap(&a,/**/ b /**/);

printf(\ getch(); }

(5)修改程序cmody611.c,已知圆柱体底面圆的半径r,从键盘输入圆柱体的高h, 若h>=0,则根据以下公式求圆柱体

的体积, 否则提示出错信息。

result=PI*r2*h , 其中,

PI?3.14

#include #include

#define /**/ PI=3.14 /**/ void main() {

float r=5.0,h,result;

printf(\ scanf(\ if(/**/ h<0 /**/) {

result = PI*r*r*h; printf(\result is:%.2f\\n\ } else

printf(\ getch(); }

6)改错题cmody612.c,使函数arrayclass(int a[ ])完成如下功能:

(1)遍历数组a,找出其中做大值max和最小值min;

(2)再次遍历数组a 进行元素归类, 若元素与max差值的绝对值小于其与min差值的绝对值,则将该元素存入数组max_class中,否则存入数组min_class中;

(3)变量n_max和n_min分别表示存入数组max_class和min_class的元素个数。

#include #include #include #define N 15

void arrayclass(int a[ ]) {

int max_class[N], min_class[N]; int i, max, min, n_max, n_min; /**/ n_max=0 /**/; max=min=a[0];

11

for(i=1;i

{ if(max

if(min>a[i]) min=a[i]; }

for(i=0;i

{ max_class[n_max]=a[i]; n_max++; } else

{ min_class[n_min]=a[i] ; /**/ n_min-- /**/; } }

printf(\ printf(\ for(i=0;i

printf(\ printf(\ printf(\ for(i=0;/**/ i<=n_min /**/; i++) printf(\}

void main() {

int a[N] = {13,24,0,-12,18,29,-8,32,7, 20,3,10,16,-3,26}; arrayclass(a); getch(); }

7) 修改程序cmody621.c, 实现求满足

?ni?3000 的最小正整数n。

i?1#include void main() {

int i=1,sum=0;

while(/**/ sum>3000 /**/) {

/**/ sum=i; /**/ i++; }

printf(\i /**/,sum); getch(); }

8) 修改程序cmody622.c, 使函数fun(char *p, char *q)完成如下功能: 将p所指字符串中的字符逐个复制到q所指字符串中,在每4个字符之后插入1个空格(注:若遇空格字符则重新累计字符个数)。例如,

输入:ABC DEFGHI JKL MNOPQRS 输出:ABC DEFG HI JKL MNOP QRS #include #include

void fun(char *p, char *q ) { int n, i;

/**/ i=1; /**/ while(*p) { n=1;

while(n<=4 && *p) { q[i++]=*p;

if(*p==' ') /**/ n=1; /**/ p++; n++; } if(*p)

{ if(*p!=' ') q[i++]=' '; else

{ q[i++]=*p; p++; } } }

/**/ q[i]='0' /**/; }

void main() {

char str_a[80],str_b[80]; printf(\ gets(str_a);

12

联系合同范文客服:xxxxx#qq.com(#替换为@)