知ing

最新计算机二级C语言上机试题汇编100套

NCRE研究组 编 / 高等教育出版社

゛Zirro、Y 上传

查看本书

02套: 

给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。 

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

注意:源程序存放在考生文件夹下的BLANK1.C中。 

不得增行或删行,也不得更改程序的结构! 

给定源程序: 

#include <stdio.h> 

void fun(char *s, int a, double f) 

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

__1__ fp; 

char ch; 

fp = fopen("file1.txt", "w"); 

fprintf(fp, "%s %d %f\n", s, a, f); 

fclose(fp); 

fp = fopen("file1.txt", "r"); 

printf("\nThe result :\n\n"); 

ch = fgetc(fp); 

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

while (!feof(__2__)) { 

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

putchar(__3__); ch = fgetc(fp); } 

putchar('\n'); 

fclose(fp); 

main() 

{ char a[10]="Hello!"; int b=12345; 

double c= 98.76; 

fun(a,b,c); 

解题思路: 

本题是考察先把给定的数据写入到文本文件中,再从该文件读出并显示在屏幕上。 

第一处:定义文本文件类型变量,所以应填:FILE *。 

第二处:判断文件是否结束,所以应填:fp。 

第三处:显示读出的字符,所以应填:ch。 

*************************************************** 

给定程序MODI1.C中函数fun的功能是依次取出字符串中所有数字字符形 

成新的字符串并取代原字符串。 

请改正函数fun中指定部位的错误使它能得出正确的结果。 

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

给定源程序: 

#include <stdio.h> 

void fun(char *s) 

{ int i,j; 

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

if(s[i]>='0' && s[i]<='9') 

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

s[j]=s[i]; 

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

s[j]="\0"; 

main() 

{ char item[80]; 

printf("\nEnter a string : ");gets(item); 

printf("\n\nThe string is : \"%s\"\n",item); 

fun(item); 

printf("\n\nThe string of changing is : \"%s\"\n",item ); 

解题思路: 

第一处要求是取出原字符串中所有数字字符组成一个新的字符串,程序中是使用变量来控制新字符串的位置,所以应改为:s[j++]=s[i];。 

第二处置新字符串的结束符,所以应改为:s[j]='\0';. 

*************************************************** 

请编写函数fun, 函数的功能是MN列的二维数组中的字符数据按列的顺序依次放到一个字符串中。 

例如二维数组中的数据为

W W W W 

S S S S 

H H H H 

则字符串中的内容应是: WSHWSHWSH。 

注意:部分源程序在文件PROG1.C中。 

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

给定源程序: 

#include <stdio.h> 

#define M 3 

#define N 4 

 

void fun(char s[][N], char *b) 

int i,j,n=0; 

for(i=0; i < N;i++) / * 请填写相应语句完成其功能 */ 

b[n]='\0'; 

main() 

{ char a[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}}; 

int i,j; 

printf("The matrix:\n"); 

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

{ for(j=0;j<N; j++)printf("%3c",w[i][j]); 

printf("\n"); 

fun(w,a); 

printf("The A string:\n");puts(a); 

printf("\n\n"); 

NONO(); 

解题思路: 

本题是把二维数组中的字符数据按列存放到一个字符串中。 

1. 计算存放到一维数组中的位置。 

2. 取出二维数组中的字符存放到一维数组(已计算出的位置)中。 

参考答案: 

void fun(char s[][N], char *b) 

 

int i,j,n=0; 

for(i=0; i < N;i++) / * 请填写相应语句完成其功能 */ 

for(j = 0 ; j < M ; j++) { 

b[n] = s[j][i] ; 

n = i * M + j + 1; 

b[n]='\0'; 

※※※※※※※※※※※※※※※※※※※※※※※※※ 


查看更多