⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nbtk.txt

📁 08新版计算机三级网络技术上机题库。 08新版计算机三级网络技术上机题库。
💻 TXT
📖 第 1 页 / 共 5 页
字号:

二级C语言上机试题汇编 
※※※※※※※※※※※※※※※※※※※※※※※※※ 
第01套: 
给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去 
除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回 
所指变量。 
例如,输入一个数:27638496,新的数:为739。 
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结 
果。 
注意:源程序存放在考生文件夹下的BLANK1.C中。 
不得增行或删行,也不得更改程序的结构! 
给定源程序: 
#include <stdio.h> 
void fun(unsigned long *n) 
{ unsigned long x=0, i; int t; 
i=1; 
while(*n) 
/**********found**********/ 
{ t=*n % __1__; 
/**********found**********/ 
if(t%2!= __2__) 
{ x=x+t*i; i=i*10; } 
*n =*n /10; 
} 
/**********found**********/ 
*n=__3__; 
} 
main() 
{ unsigned long n=-1; 
while(n>99999999||n<0) 
{ printf("Please input(0<n<100000000): "); scanf("%ld",&n); } 
fun(&n); 
printf("\nThe result is: %ld\n",n); 
} 
解题思路: 
第一处:t是通过取模的方式来得到*n的个位数字,所以应填:10。 
第二处:判断是否是奇数,所以应填:0。 
第三处:最后通形参n来返回新数x,所以应填:x。 
*************************************************** 
给定程序MODI1.C中函数 fun 的功能是:计算n!。 
例如,给n输入5,则输出120.000000。 
请改正程序中的错误,使程序能输出正确的结果。 
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 
给定源程序: 
#include <stdio.h> 
double fun ( int n ) 

/* 宏为世纪教育 www.greatc.cn */ 

{ double result = 1.0 ; 
/************found************/ 
if n = = 0 
return 1.0 ; 
while( n >1 && n < 170 ) 
/************found************/ 
result *= n-- 
return result ; 
} 
main ( ) 
{ int n ; 
printf("Input N:") ; 
scanf("%d", &n) ; 
printf("\n\n%d! =%lf\n\n", n, fun(n)) ; 
} 
解题思路: 
第一处:条件语句书写格式错误,应改为:if (n==0)。 
第二处:语句后缺少分号。 
*************************************************** 
请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得 
调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串"-1234",则 
函数把它转换为整数值 -1234。函数fun中给出的语句仅供参考。 
注意: 部分源程序存在文件PROG1.C文件中。 
请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填 
入你编写的若干语句。 
给定源程序: 
#include <stdio.h> 
#include <string.h> 
long fun ( char *p) 
{ 
/* 以下代码仅供参考 */ 
int i, len, t; /* len为串长,t为正负标识 */ 
long x=0; 
len=strlen(p); 
if(p[0]=='-') 
{ t=-1; len--; p++; } 
else t=1; 
/* 以下完成数字字符串转换为一个数字 */ 
return x*t; 
} 
main() /* 主函数 */ 
{ char s[6]; 
long n; 
printf("Enter a string:\n") ; 
gets(s); 
n = fun(s); 
printf("%ld\n",n); 
/* 宏为世纪教育 www.greatc.cn */ 

NONO ( ); 
} 
NONO ( ) 
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ 
FILE *fp, *wf ; 
int i ; 
char s[20] ; 
long n ; 
fp = fopen("c:\\test\\in.dat","r") ; 
wf = fopen("c:\\test\\out.dat","w") ; 
for(i = 0 ; i < 10 ; i++) { 
fscanf(fp, "%s", s) ; 
n = fun(s); 
fprintf(wf, "%ld\n", n) ; 
} 
fclose(fp) ; 
fclose(wf) ; 
} 
解题思路: 
本题是将一个数字字符串转换为一个整数。 
参考答案: 
#include <stdio.h> 
#include <string.h> 
long fun ( char *p) 
{ 
/* 以下代码仅供参考 */ 
int i, len, t; /* len为串长,t为正负标识 */ 
long x=0; 
len=strlen(p); 
if(p[0]=='-') 
{ t=-1; len--; p++; } 
else t=1; 
/* 以下完成数字字符串转换为一个数字 */ 
while(*p) x = x*10-48+(*p++); 
return x*t; 
} 
main() /* 主函数 */ 
{ char s[6]; 
long n; 
printf("Enter a string:\n") ; 
gets(s); 
n = fun(s); 
printf("%ld\n",n); 
NONO ( ); 
} 
NONO ( ) 
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ 
/* 宏为世纪教育 www.greatc.cn */ 

FILE *fp, *wf ; 
int i ; 
char s[20] ; 
long n ; 
fp = fopen("c:\\test\\in.dat","r") ; 
wf = fopen("c:\\test\\out.dat","w") ; 
for(i = 0 ; i < 10 ; i++) { 
fscanf(fp, "%s", s) ; 
n = fun(s); 
fprintf(wf, "%ld\n", n) ; 
} 
fclose(fp) ; 
fclose(wf) ; 
} 

注意:由于NONO( )这个函数是改卷人用的,与考生没有什么关系,故下面从第2套试题开始均省略NONO( )
※※※※※※※※※※※※※※※※※※※※※※※※※ 
第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); 
} 
 

/* 宏为世纪教育 www.greatc.cn */ 

解题思路: 
本题是考察先把给定的数据写入到文本文件中,再从该文件读出并显示在屏幕上。 
第一处:定义文本文件类型变量,所以应填: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 ); 
} 
解题思路: 
第一处: 要求是取出原字符串中所有数字字符组成一个新的字符串,程序中是使用变量j 
来控制新字符串的位置,所以应改为:s[j++]=s[i];。 
第二处: 置新字符串的结束符,所以应改为:s[j]='\0';. 
*************************************************** 
请编写函数fun, 函数的功能是: 将M行N列的二维数组中的字符数据, 按列的 
顺序依次放到一个字符串中。 
例如, 二维数组中的数据为: 
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 
/* 宏为世纪教育 www.greatc.cn */ 

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) 
{ 
/* 宏为世纪教育 www.greatc.cn */ 

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

※※※※※※※※※※※※※※※※※※※※※※※※※ 
第03套: 
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所 
有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所 
指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学 
生的数据不变。 
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结 
果。 
/* 宏为世纪教育 www.greatc.cn */ 

注意:源程序存放在考生文件夹下的BLANK1.C中。 
不得增行或删行,也不得更改程序的结构! 
给定源程序: 
#include <stdio.h> 
#define N 5 
typedef struct student { 
long sno; 
char name[10]; 
float score[3]; 
} STU; 
void fun(char *filename, STU n) 
{ FILE *fp; 
/**********found**********/ 
fp = fopen(__1__, "rb+"); 
/**********found**********/ 
fseek(__2__, -1L*sizeof(STU), SEEK_END); 
/**********found**********/ 
fwrite(&n, sizeof(STU), 1, __3__); 
fclose(fp); 
} 
main() 
{ STU t[N]={ {10001,"MaChao", 91, 92, 77}, {10002,"CaoKai", 75, 60, 88}, 
{10003,"LiSi", 85, 70, 78}, {10004,"FangFang", 90, 82, 87}, 
{10005,"ZhangSan", 95, 80, 88}}; 
STU n={10006,"ZhaoSi", 55, 70, 68}, ss[N]; 
int i,j; FILE *fp; 
fp = fopen("student.dat", "wb"); 
fwrite(t, sizeof(STU), N, fp); 
fclose(fp); 
fp = fopen("student.dat", "rb"); 
fread(ss, sizeof(STU), N, fp); 
fclose(fp); 
printf("\nThe original data :\n\n"); 
for (j=0; j<N; j++) 
{ printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name); 
for (i=0; i<3; i++) printf("%6.2f ", ss[j].score[i]); 
printf("\n"); 
} 
fun("student.dat", n); 
printf("\nThe data after modifing :\n\n"); 
fp = fopen("student.dat", "rb"); 
fread(ss, sizeof(STU), N, fp); 
fclose(fp); 
for (j=0; j<N; j++) 
{ printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name); 
for (i=0; i<3; i++) printf("%6.2f ", ss[j].score[i]); 
printf("\n"); 
 

/* 宏为世纪教育 www.greatc.cn */ 

} 
} 
解题思路: 
本题是考察如何从文件中读出数据,再把结构中的数据写入文件中。 
第一处:从指定的文件中读出数据,所以应填:filename。 
第二处:读取文件fp的最后一条记录,所以应填:fp。 
第三处:再把读出的记录,写入文件fp指定的位置上,所以应填:fp。 
*************************************************** 
给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表, 并 
为各结点数据域赋0到m-1的值。 
请改正函数Creatlink中指定部位的错误, 使它能得出正确的结果。 
注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构! 
给定源程序: 
#include <stdio.h> 
#include <stdlib.h> 
typedef struct aa 
{ int data; 
struct aa *next; 
} NODE; 
NODE *Creatlink(int n, int m) 
{ NODE *h=NULL, *p, *s; 
int i; 
/**********found***********/ 
p=(NODE )malloc(sizeof(NODE)); 
h=p; 
p->next=NULL; 
for(i=1; i<=n; i++) 
{ s=(NODE *)malloc(sizeof(NODE)); 
s->data=rand()%m; s->next=p->next; 
p->next=s; p=p->next; 
} 
/**********found***********/ 
return p; 
} 
outlink(NODE *h) 
{ NODE *p; 
p=h->next; 
printf("\n\nTHE LIST :\n\n HEAD "); 
while(p) 
{ printf("->%d ",p->data); 
p=p->next; 
} 
printf("\n"); 
} 
main() 
{ NODE *head; 
head=Creatlink(8,22); 
/* 宏为世纪教育 www.greatc.cn */ 

outlink(head); 
} 
解题思路: 
第一处: 指向刚分配的结构指针,所以应改为:p=(NODE *)malloc(sizeof(NODE)); 
第二处: 在动态分配内存的下一行语句是,使用临时结构指针变量h保存p指针的初始位置, 
最后返回不能使用p,是因为p的位置已经发生了变化,所以应改为返回h。 
*************************************************** 
请编写函数fun, 函数的功能是:统计一行字符串中单词的个数,作为函数值返 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -