计算机二级上机答案.doc_第1页
计算机二级上机答案.doc_第2页
计算机二级上机答案.doc_第3页
计算机二级上机答案.doc_第4页
计算机二级上机答案.doc_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一套:1. #include typedef struct int num; char name9; char sex; struct int year,month,day ; birthday; float score3;STU;/*found*/void show(STU _1_) int i; printf(n%d %s %c %d-%d-%d, tt.num, , tt.sex, tt.birthday.year, tt.birthday.month, tt.birthday.day); for(i=0; i3; i+)/*found*/ printf(%5.1f, _2_); printf(n);main( ) STU std= 1,Zhanghua,M,1961,10,8,76.5,78.0,82.0 ; printf(nA student data:n);/*found*/ show(_3_);答案:第一处:tt变量在函数体fun已经使用,所以应填:tt。第二处:利用循环分别输出学生的成绩数据,所以应填:tt.scorei。第三处:函数的调用,所以应填:std。2. #include #define N 20void fun ( int * a, int n ) int i, m, t, k ; for(i=0;i2;i+) /*found*/ m=0; for(k=i+1;kam) k=m; t=ai;ai=am;am=t; main( ) int bN=11,5,12,0,3,6,9,7,10,8, n=10, i; for ( i=0; in; i+ ) printf(%d , bi); printf(n); fun ( b, n ); for ( i=0; iam) m=k;。3. #include unsigned fun ( unsigned w )main( ) void NONO( ); unsigned x; printf ( Enter a unsigned integer number : ); scanf ( %u, &x ); printf ( The original data is : %un, x ); if ( x 10 ) printf (Data error !); else printf ( The result : %un, fun ( x ) ); NONO( );void NONO( )/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ unsigned x ; int i ; FILE *rf, *wf ; rf = fopen(C:WEXAM24990001in.dat,r) ; wf = fopen(C:WEXAM24990001out.dat,w) ; for(i = 0 ; i 10000) w %= 10000 ; else if(w1000) w %= 1000 ; else if(w100) w %= 100 ; else if(w10) w %=10 ; return w ;第二套:1.程序填空题#include #include #define M 5#define N 20void fun(char (*ss)N) int i, j, k, nM; char tN; for(i=0; iM; i+) ni=strlen(ssi); for(i=0; iM-1; i+) k=i;/*found*/ for(j=_1_; jnj) _2_; if(k!=i) strcpy(t,ssi); strcpy(ssi,ssk);/*found*/ strcpy(ssk,_3_); nk=ni; main() char ssMN=shanghai,guangzhou,beijing,tianjing,cchongqing; int i; printf(nThe original strings are :n); for(i=0; iM; i+) printf(%sn,ssi); printf(n); fun(ss); printf(nThe result :n); for(i=0; iM; i+) printf(%sn,ssi);答案:本题是要求按字符串的长短进行排序。第一处:内循环赋初值,应填:i+1。 第二处:找出最短的一个长度,所以应填:m=j。 第三处:交换字符串,所以应填:t。2. #include #include /*found*/void fun(char str, char ch ) while ( *str & *str != ch ) str+;/*found*/ if ( *str = ch ) str 0 = ch;/*found*/ str1 = 0; main( ) char s81, c ; printf( nPlease enter a string:n ); gets ( s ); printf (n Please enter the character to search : ); c = getchar(); fun(s, c) ; printf( nThe result is %sn, s);答案:第一处:第1个形参应该是字符串类型,所以应改为:void fun(char *str, char ch)。第二处:应该是判断不相等,所以应改为if(*str!=ch)。第三次:置字符串结束符错误,所以应改为:str1 = 0;。3. #include #define N 81void fun ( char *s )#include main( ) void NONO( ); char aN; printf ( Enter a string : ); gets ( a ); printf ( The original string is : ); puts( a ); fun ( a ); printf(n); printf ( The string after modified : ); puts ( a ); NONO( );void NONO( )/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ int i ; char aN ; FILE *rf, *wf ; rf = fopen(C:WEXAM24990001in.dat,r) ; wf = fopen(C:WEXAM24990001out.dat,w) ; for(i = 0 ; i = 0 ; j-) bi+ = sj ; strcpy(s, b) ;第三套:1. #include #include #define M 5#define N 20void fun(char (*ss)N) int i, j, k=0, n, m, len; for(i=0; in) /*found*/ n=len; _1_=i; for(i=0; i=0; j-) ssim-=ssij; for(j=0; jn-len; j+)/*found*/ _3_=*; main() char ssMN=shanghai,guangzhou,beijing,tianjing,cchongqing; int i; printf(nThe original strings are :n); for(i=0; iM; i+) printf(%sn,ssi); printf(n); fun(ss); printf(nThe result:n); for(i=0; iM; i+) printf(%sn,ssi);答案:第一处:使用变量k来保存第几个字符串是最长的字符串,所以应填:k。第二处:利用for循环把原字符串右移至最右边存放,字符串的长为len,所以应填:len。第三处:左边用字符*补齐,所以应填:ssij。2. #include double fun(int n) double result=1.0; while (n1 & n170)/*found*/ result*=-n;/*found*/ return _;main() int n; printf(Enter an integer: ); scanf(%d,&n); printf(nn%d!=%lgnn,n,fun(n);答案:第一处:-n是先减1,n-是后减1。本题应该先乘以n,再减1。第二处:返回计算结果所以应填result。3. #include #include void fun(char s,char c)main() void NONO( ); static char str=turbo c and borland c+; char ch; printf(原始字符串:%sn, str); printf(输入一个字符:); scanf(%c,&ch); fun(str,ch); printf(str=%sn,str); NONO();void NONO() /* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ FILE *rf, *wf ; char s81, ch, w ; int len ; rf = fopen(C:WEXAM24990001in.dat,r) ; wf = fopen(C:WEXAM24990001out.dat,w) ; fgets(s, 80, rf) ; fscanf(rf, %c, &ch) ; len = strlen(s) - 1 ; w = slen ; if(w = n | w = 0x1a) slen = 0 ; fun(s, ch) ; fprintf(wf, %s, s) ; fclose(rf) ; fclose(wf) ;答案:本题是考察考生怎样在字符串中删除指定的字符,结果仍存放在原字符串中。给出的程序是引用字符串指针p和while循环语句以及if条件判断语句进行处理的,新字符串的位置是由i来控制的,循环结束后,再给新字符串置字符串结束符,最后产生的新字符串形参s返回到主程序中。int fun(char s,char c) char *p = s ; int i = 0 ; while(*p) if(*p != c) si+ = *p ; p+ ; si = 0 ;第四套:1. #include #include #define M 5#define N 20void fun(char (*ss)N) int i, j, n, len=0; for(i=0; in)n=len; for(i=0; iM; i+) /*found*/ n=strlen(_1_); for(j=0; jlen-n; j+)/*found*/ ssi _2_=*;/*found*/ ssin+j+ _3_=0; main() char ssMN=shanghai,guangzhou,beijing,tianjing,cchongqing; int i; printf(The original strings are :n); for(i=0; iM; i+) printf(%sn,ssi); printf(n); fun(ss); printf(The result is :n); for(i=0; iM; i+) printf(%sn,ssi);答案:第一处:利用for语句取当前字符串的长度,所以应填ssi。第二处:在字符串的右边填字符*,其开始位置是n+j,其中n是该字符串本身的长度,j是循环控制变量,所以应填n+j。 第三处:字符串处理结束应置字符串结束符,其位置是n+j+1,所以应填1。2. #include #include #include void fun( char *p ) int k = 0; for( ; *p; p+ ) if( k ) /*found*/ if( p = ) k = 0;/*found*/ * (p-1) = toupper( *( p - 1 ) ) else k = 1;main() char chrstr64; int d ; printf( nPlease enter an English sentence within 63 letters: ); gets(chrstr); d=strlen(chrstr) ; chrstrd = ; chrstrd+1 = 0 ; printf(nnBefore changing:n %s, chrstr); fun(chrstr); printf(nAfter changing:n %s, chrstr);答案:第一处:关键字int错写成INT。第二处:该行括号没有配对,故只要加上一个右括号即可。3. #include #include #include void fun(char *s,int num)main() void NONO( ); char s10; printf(输入7个字符的字符串:); gets(s); fun(s,7); printf(n%s,s); NONO();void NONO()/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ char s10 ; FILE *rf, *wf ; int i = 0 ; rf = fopen(C:WEXAM24990001in.dat,r) ; wf = fopen(C:WEXAM24990001out.dat,w) ; while(i 10) fgets(s,10,rf) ; s7 = 0 ; fun(s,7); fprintf(wf, %sn, s) ; i+ ; fclose(rf) ; fclose(wf) ;答案:本题是考察考生如何对字符串中的字符按降序进行排序。给出的程序是使用双重for循环以及冒泡法进行排序的,结果仍存放在原先的字符串上。int fun(char *s,int num)char ch ; int i, j ; for(i = 1 ; i 6 ; i+) for(j = i + 1 ; j 6 ; j+) if(*(s + i) *(s + j) ch = *(s + j) ; *(s + j) = *(s +i) ; *(s + i) = ch ; 第五套:1. #include #include #define M 5#define N 20/*found*/int fun(char (*ss) _1_, int *n) int i, k=0, len=0; for(i=0; i*n) /*found*/ _3_; k=i; return(k);main() char ssMN=shanghai,guangzhou,beijing,tianjing,cchongqing; int n,k,i; printf(nThe original strings are :n); for(i=0;iM;i+)puts(ssi); k=fun(ss,&n); printf(nThe length of longest string is : %dn,n); printf(nThe longest string is : %sn,ssk);答案:第一处:形参ss的定义,它是一个字符串数组的定义,其宽度为N,所以应填:N。第二处:取第一个字符串的长度赋值给变量*n,所以应填:len。第三处:每循环一次,判断当前字符串的长度是否大于*n,如果大于,则*n=len。2. #include double fun( int m ) double t = 1.0; int i; for( i = 2; i = m; i+ )/*found*/ t += 1.0/k;/*found*/ _main() int m; printf( nPlease enter 1 integer number: ); scanf( %d, &m ); printf( nThe result is %lfn, fun( m ) );答案:第一处:在此变量k没有定义过,再根据公式和for语句中所用的变量可知,这里的k实际上是i。第二处:应是返回公式的值,函数中公式的值是存放在临时变量t中,应填return t;。3. #include #include int fun(char *str,char *substr)main() void NONO( ); char str81,substr3; int n; printf(输入主字符串: ); gets(str); printf(输入子字符串: ); gets(substr); puts(str); puts(substr); n=fun(str,substr); printf(n=%dn,n); NONO();void NONO()/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ char str81,substr3, ch; int n,len, i = 0; FILE *rf, *wf ; rf = fopen(C:WEXAM24990001in.dat,r) ; wf = fopen(C:WEXAM24990001out.dat,w) ; while(i 5) fgets(str, 80, rf) ; fgets(substr, 10, rf) ; len = strlen(substr) - 1 ; ch = substrlen ; if(ch = n | ch = 0x1a) substrlen = 0 ; n=fun(str,substr); fprintf(wf, %dn, n) ; i+ ; fclose(rf) ; fclose(wf) ;答案:本题是统计一个字符串在另一个字符串中出现的次数。程序流程如下:1. 利用strstr函数,首先找到第一个出现的位置。2.利用while循环和strstr依次查找所有出现的位置,并进行统计,并把统计结果作为函数值返回。strstr(const char *s1, const char *s2)是字符串s2在s1中出现的位置,如果找到则返回位置指针。int fun(char *str,char *substr) int cnt = 0 ; char *p = str, *q ; while(*p) q = strstr(p, substr) ; if(q = NULL) break; p = q + strlen(substr) ; cnt+ ; return cnt ;第六套:1. #include #include #define M 5#define N 20int fun(char (*ss)N, int *n) int i, k=0, len= N;/*found*/ for(i=0; i_1_; i+) len=strlen(ssi); if(i=0) *n=len;/*found*/ if(len _2_ *n) *n=len; k=i; /*found*/ return(_3_);main() char ssMN=shanghai,guangzhou,beijing,tianjing,chongqing; int n,k,i; printf(nThe original strings are :n); for(i=0;iM;i+)puts(ssi); k=fun(ss,&n); printf(nThe length of shortest string is : %dn,n); printf(nThe shortest string is : %sn,ssk);答案:第一处:字符串数组共有M个字符串,所以在循环中终止值应填M。第二处:由于本题是取长度最短的字符串,*n总是保存长度最短值,所以应填:。第三处:其中k是保存长度最短的字符串所在的行下标,所以应填k。2. #include #include char* fun( char tt ) int i; for( i = 0; tti; i+ )/*found*/ if( a = tti )|( tti = z ) )/*found*/ tti += 32; return( tt );main( ) char tt81; printf( nPlease enter a string: ); gets( tt ); printf( nThe result string is:n%s, fun( tt ) );答案:第一:判断是小写字母,则条件应是与的关系。第二:小写字母ASCII值减32是其大写字母。3. #include int prime ( int m ) int k = 2; while ( k = m & (m%k) k+; if (m = k ) return 1; else return 0;void fun( int m, int *k, int xx )main() int m, n, zz100; void NONO ( ); printf( nPlease enter an integer number between 10 and 100: ); scanf( %d, &n ); fun( n, &m, zz ); printf( nnThere are %d non-prime numbers less than %d:, m, n ); for( n = 0; n m; n+ ) printf( n %4d, zzn ); NONO();void NONO()/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ int m, n, zz100; FILE *rf, *wf ; rf = fopen(C:WEXAM24990001in.dat,r) ; wf = fopen(C:WEXAM24990001out.dat,w) ; fscanf( rf, %d, &n ); fun( n, &m, zz ); fprintf(wf, %dn%dn, m, n ); for( n = 0; n m; n+ ) fprintf(wf, %dn, zzn ); fclose(rf) ; fclose(wf) ;答案:本题是考察考生如何判断一个数不是素数,如果所给出的数是非素数且小于指定的数,那么这些数应存放到指定的数组xx中保存,最后由形参xx返回。在给出的程序中函数isP就是判断一个数是否是素数,若是非素数,则返回1,否则返回0。本题是用for(i=2;im;i+)循环语句分别判断i是否为非素数,如果i是非素数,则把该数i存入数组xx中。其中,i是控制变量,m是试题给出的整数。int isP(int m)int j, tag = 0 ; for(j = 2 ; j m & !tag ; j+) if(m % j = 0) tag = 1 ; return tag ;void fun( int m, int *k, int xx ) int i, cnt = 0 ;for(i = 2 ; i m ; i+) if(isP(i) xxcnt+ = i ; *k = cnt ;第七套:1. #include void fun(char *s) int i, j=0, k=0; char t180, t280; for(i=0; si!=0; i+) if(si=0 & si=9) /*found*/ t2j=si; _1_; else t1k+=si; t2j=0; t1k=0;/*found*/ for(i=0; ik; i+) _2_;/*found*/ for(i=0; i_3_; i+) sk+i=t2i;main() char s80=def35adh3kjsdf7; printf(nThe original string is : %sn,s); fun(s); printf(nThe result is : %sn,s);答案:t2是存放数字字符串t1是存放非数字字符串。第一处:t2存放数字字符串的位置是由j来控制的,每添加一个j必须加1,所以应填j+。第二处:利用for循环把t1字符串添加到原字符串s中,所以应填si=t1i。第三处:利用for循环把t2字符串添加到原字符串s的尾部,其中数字字符串的长度为j,所以应填j。2. #include #include #define MAXLINE 20fun ( char *pstr6) int i, j ; char *p ; for (i = 0 ; i 5 ; i+ ) /*found*/ for (j = i + 1, j 0) p = *(pstr + i) ;/*found*/ *(pstr + i) = pstr + j ; *(pstr + j) = p ; main( ) int i ; char *pstr6, str6MAXLINE ; for(i = 0; i 6 ; i+) pstri = stri ; printf( nEnter 6 string(1 string at each line): n ) ; for(i = 0 ; i 6 ; i+) scanf(%s, pstri) ; fun(pstr) ; printf(The strings after sorting:n) ; for(i = 0 ; i 6 ; i+) printf(%sn, pstri) ;答案:第一处:for循环语句中缺少分号。第二处:应把pstr+j位置上的值赋值给*(pstr+i)上,应改为:*(pstr+i)=*(pstr+j);。3. #include #include #define M 81int fun(char *ss, char c)main() char aM, ch; void NONO ( ); printf(nPlease enter a string:); gets(a); printf(nPlease enter a char:); ch = getchar(); printf(nThe number of the char is: %dn, fun(a, ch); NONO ( );void NONO ( )/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ int i ; FILE *rf, *wf ; char aM, bM, ch ; rf = fopen(C:WEXAM24990001in.dat,r) ; wf = fopen(C:WEXAM24990001out.dat,w) ; for(i = 0 ; i 10 ; i+) fscanf(rf, %s, a) ; fscanf(rf, %s, b) ; ch = *b ; fprintf(wf, %c=%dn, ch, fun(a, ch) ; fclose(rf) ; fclose(wf) ;答案:本题是考察考生怎样从字符串中找出指定字符的个数。使用while循环语句来字符串是否结束,如果没有结束,则判断当前字符是否是指定的字符,如果是指定的字符,则个数cnt加1,直至字符串结束为止,最后由函数返回。int fun(char *ss, char c)int cnt = 0 ; char *p = ss ;while(*p) if(*p = c) cnt+ ; p+ ; return cnt ;第八套:1. #include void fun(char *s) int i, j, n; for(i=0; si!=0; i+)/*found*/ if(si=0 _1_ sii; j-)/*found*/ sj+1= _3_; sj+1=*; i=i+1; main() char s80=ba3a54cd23a; printf(nThe original string is : %sn,s); fun(s); printf(nThe result is : %sn,s);答案:第一处:判断是数字,应该使用“与”,所以应填&。第二处:判断字符串是否是字符串结束符,所以应填0。第三处:如果当前字符是数字字符,则把当前字符以后的所有字符往后一个位置,应填sj。2.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论