您好,欢迎来到赴品旅游。
搜索
您的当前位置:首页计算机技能改错(易)

计算机技能改错(易)

来源:赴品旅游
计算机技能改错(易)

2011-02-09 19:53试卷编号:8539 所属语言:大学计算机基础 试卷方案:程序改错易 试卷总分:300分 共有题型:1种

━━━━━━━━━━━━━━━━━━ 一、程序改错 共10题 (共计300分) ━━━━━━━━━━━━━━━━━━

第1题 (30.0分) 题号:4

/*------------------------------------------------------ 【程序改错】

--------------------------------------------------------

功能:在一个已按升序排列的数组中插入一个数,插入后,数 组元素仍按升序排列。

------------------------------------------------------*/

#define N 11 main() {

int i,j,t,number,a[N]={1,2,4,6,8,9,12,15,149,156};

printf(\"please enter an integer to insert in the array:\\n\"); /**********FOUND**********/ scanf(\"%d\

printf(\"The original array:\\n\"); for(i=0;i/**********FOUND**********/ for(i=N-1;i>=0;i--) if(number<=a[i])

/**********FOUND**********/ a[i]=a[i-1]; else {

a[i+1]=number;

/**********FOUND**********/ exit; }

if(numberprintf(\"The result array:\\n\"); for(i=0;iprintf(\"%5d\ printf(\"\\n\"); }

答案:

1). scanf(\"%d\

2). for(i=N-2;i>=0;i--) 或 for(i=N-2;0<=i;i--) 3). a[ i + 1 ]=a[i]; 4). break;

第2题 (30.0分) 题号:255

/*------------------------------------------------------ 【程序改错】

--------------------------------------------------------

功能:以下程序把两个数按由大到小的顺序输出来.

------------------------------------------------------*/

/***********FOUND***********/ swap( int *p1,*p2) {

int p; p=*p1; *p1=*p2; *p2=p; }

main( ) {

int a,b, *p,*q;

printf(\"input a,b:\");

/***********FOUND***********/ scanf(\"%d%d\ p=&a; q=&b; if(aprintf(\"a=%d,b=%d\\n\ /***********FOUND***********/ printf(\"max=%d,min=%d\\n\

}

答案:

1). swap( int *p1,int *p2) 或 void swap( int *p1,int *p2) 2). scanf(\"%d%d\

3). printf(\"max=%d,min=%d\\n\或 printf(\"max=%d,min=%d\\n\

第3题 (30.0分) 题号:370

/*------------------------------------------------------ 【程序改错】

--------------------------------------------------------

功能:将s所指字符串中出现的、t1所指子串全部替换成t2所指 子字符串,所形成的新串放在w所指的数组中。在此处, 要求t1和t2所指字符串的长度相同。

例如:当s所指字符串中的内容为:\"abcdabfab\",t1所指子串中 的内容为:\"ab\",t2所指子串中的内容为:\"99\"时,结果 在w所指的数组中的内容应为:\"99cd99f99\"。

------------------------------------------------------*/

#include #include #include

int fun (char *s, char *t1, char *t2 , char *w) {

int i; char *p , *r, *a; strcpy( w, s ); while ( *w ) {

p = w; r = t1;

/**********FOUND**********/ while ( r )

if ( *r == *p ) {

r++; p++; } else break;

/**********FOUND**********/ if ( *r = '\\0' ) {

a = w; r = t2;

/**********FOUND**********/ while ( *a ) {

*a = *r; a++; r++; }

w += strlen(t2) ; } else w++; } }

main() {

char s[100], t1[100], t2[100], w[100]; clrscr();

printf(\"\\nPlease enter string S:\"); scanf(\"%s\

printf(\"\\nPlease enter substring t1:\"); scanf(\"%s\ printf(\"\\nPlease enter substring t2:\"); scanf(\"%s\ if ( strlen(t1)==strlen(t2) ) {

fun( s, t1, t2, w);

printf(\"\\nThe result is : %s\\n\ } else

printf(\"Error : strlen(t1) != strlen(t2)\\n\"); }

答案:

1). while(*r)

2). if ( *r == '\\0' ) 3). while ( *r )

第4题 (30.0分) 题号:402

/*------------------------------------------------------ 【程序改错】

--------------------------------------------------------

功能:编写函数fun求20以内所有5的倍数之积。

------------------------------------------------------*/

#define N 20

#include \"stdio.h\"

main() {

int sum; sum=fun(5);

printf(\"%d以内所有%d的倍数之积为: %d\\n\ getch(); }

int fun(int m) {

/**********FOUND**********/ int s=0,i;

for(i=1;i/**********FOUND**********/ if(i%m=0)

/**********FOUND**********/ s=*i; return s; }

答案:

1). int s=1 , i ; 2). if(i%m==0)

3). s=s*i 或 s=i*s 或 s*=i

第5题 (30.0分) 题号:448

/*------------------------------------------------------ 【程序改错】

--------------------------------------------------------

功能:编写函数fun计算下列分段函数的值: x*20 x<0且x≠-3

f(x)= sin(x) 0≤x<10且x≠2及x≠3 x*x+x-1 其它

------------------------------------------------------*/

#include #include \"stdio.h\"

float fun(float x) {

/**********FOUND**********/ float y

/**********FOUND**********/ if (x<0 || x!=-3.0) y=x*20;

else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0) y=sin(x); else y=x*x+x-1;

/**********FOUND**********/ return x; }

main() {

float x,f;

printf(\"Input x=\"); scanf(\"%f\ f=fun(x);

printf(\"x=%f,f(x)=%f\\n\ getch(); }

答案:

1). float y;

2). if (x<0 && x!=-3.0) 3). return y;

第6题 (30.0分) 题号:9

/*------------------------------------------------------ 【程序改错】

--------------------------------------------------------

功能:将一个字符串中的大写字母转换成小写字母。 例如:输入aSdFG输出为asdfg。

------------------------------------------------------*/

#include

/**********FOUND**********/ bool fun(char *c) {

if(*c<='Z'&&*c>='A')*c-='A'-'a'; /**********FOUND**********/ fun= c; }

main() {

/**********FOUND**********/ char s[81],p=s; gets(s); while(*p) {

*p=fun(p);

/**********FOUND**********/ puts(*p); p++; }

putchar('\\n'); }

答案:

1). char fun(char *c)

2). return *c; 或 return (*c); 或 return(*c); 3). char s[81],*p=s;

4). putchar(*p); 或 printf(\"%c\

第7题 (30.0分) 题号:253

/*------------------------------------------------------ 【程序改错】

--------------------------------------------------------

功能:输入10个数,要求输出这10个数的平均值

------------------------------------------------------*/

float average(float array[10])

{

int i;

float aver,sum=array[0];

/***********FOUND***********/ for(i=0;i<10;i++) sum=sum+array[i]; aver=sum/10.0; return(aver); }

main( ) {

/***********FOUND***********/ int score[10],aver ; int i;

printf(\"input 10 scores:\\n\"); for(i=0;i<10;i++)

/***********FOUND***********/ scanf(\"%f\ printf(\"\\n\");

/***********FOUND***********/ aver=average(score[10]);

printf(\"average score is %5.2f\}

答案:

1). for(i=1;i<10;i++) 或 for(i=1;i<=9;i++)

2). float score[10],aver; 或 float aver,score[10]; 3). scanf(\"%f\或 scanf(\"%f\ 4). aver=average(score);

第8题 (30.0分) 题号:386

/*------------------------------------------------------ 【程序改错】

--------------------------------------------------------

功能:分别统计输入的字符串中各元音字母(即:A、E、I、O、U) 的个数。

注意:字母不分大、小写。

例如:若输入:THIs is a boot,则输出应该是:1、0、2、2、0。

------------------------------------------------------*/

#include

#include

fun ( char *s, int num[5] ) {

int k, i=5;

for ( k = 0; k/**********FOUND**********/ num[i]=0; for (; *s; s++) {

i = -1;

/**********FOUND**********/ switch ( s ) {

case 'a': case 'A': {

i=0; break; } case 'e': case 'E': {

i=1; break; } case 'i': case 'I': {

i=2; break; } case 'o': case 'O': {

i=3; break; } case 'u': case 'U': {

i=4; break; }

}

/**********FOUND**********/ if (i < 0) num[i]++; } }

main( ) {

char s1[81]; int num1[5], i; clrscr();

printf( \"\\nPlease enter a string: \" ); gets( s1 ); fun ( s1, num1 );

for ( i=0; i < 5; i++ ) printf (\"%d \ printf (\"\\n\"); }

答案:

1). num[k]=0; 2). switch(*s) 3). if (i >= 0)

第9题 (30.0分) 题号:381

/*------------------------------------------------------ 【程序改错】

--------------------------------------------------------

功能:读入一个英文文本行,将其中每个单词的第一个字母改成 大写,然后输出此文本行 (这里的“单词”是指由空格 隔开的字符串)。 例如:若输入:“I am a student to take the examination.”, 则应输出:“I Am A Student To Take The Examination.”。

------------------------------------------------------*/

#include #include #include

/**********FOUND**********/ upfst ( char p ) {

int k=0;

/**********FOUND**********/ for ( ; p; p++ ) if ( k ) {

if ( *p == ' ') k = 0; }

/**********FOUND**********/ else if ( *p == ' ' ) {

k = 1;

*p = toupper( *p ); } }

main( ) {

char chrstr[81]; clrscr();

printf( \"\\nPlease enter an English text line: \" ); gets( chrstr );

printf( \"\\n\\nBefore changing:\\n %s\ upfst( chrstr );

printf( \"\\nAfter changing:\\n %s\\n\}

答案:

1). upfst(char *p) 2). for ( ; *p; p++ ) 3). else if ( *p != ' ' )

第10题 (30.0分) 题号:431

/*------------------------------------------------------ 【程序改错】

--------------------------------------------------------

功能:编写input()和output()函数输入,输出5个学生的数据记录。

------------------------------------------------------*/

#include \"stdio.h\" #define N 5

struct student {

char num[6]; char name[8]; int score[4]; } stu[N];

input(stu)

struct student stu[]; {

/**********FOUND**********/ int i;j;

for(i=0;iprintf(\"\\n please input %d of %d\\n\ printf(\"num: \");

scanf(\"%s\ printf(\"name: \");

scanf(\"%s\ for(j=0;j<3;j++) {

/**********FOUND**********/ printf(\"score %d.\

scanf(\"%d\ }

printf(\"\\n\"); } }

print(stu)

struct student stu[]; {

int i,j;

printf(\"\\nNo. Name Sco1 Sco2 Sco3\\n\"); /**********FOUND**********/ for(i=0;i<=N;i++) {

printf(\"%-6s%-10s\ for(j=0;j<3;j++)

printf(\"%-8d\ printf(\"\\n\"); } }

main() {

input(); print(); getch(); }

答案:

1). int i , j ;

2). printf(\"score %d.\ 3). for(i=0;i

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- fupindai.com 版权所有 赣ICP备2024042792号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务