当前位置:文档之家› 程序改错(1)

程序改错(1)

程序改错(1)
程序改错(1)

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

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

功能:将 m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指字符串中。

例如:把3个串:“abc”,“CD”,“EF”串连起来,结果是

“The result is: abcCDEF”。

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

#include

#include

#include

int fun ( char str[][10], int m, char *pt )

{

/**********ERROR**********/

int k, q, i

for ( k = 0; k < m; k++ )

{

q = strlen ( str [k] );

for (i=0; i

/**********ERROR**********/

pt[i] = str[k,i] ;

/**********ERROR**********/

pt = q ;

pt[0] = 0 ;

}

}

main( )

{

int m, h ;

char s[10][10], p[120] ;

printf( "\nPlease enter m:" ) ;

scanf("%d", &m) ; gets(s[0]) ;

printf( "\nPlease enter %d string:\n", m ) ;

for ( h = 0; h < m; h++ ) gets( s[h]) ;

fun(s, m, p) ;

printf( "\nThe result is : %s\n", p) ;

}

【改错1】正确

【学生答案】

int k, q, i;

【参考答案】

int k, q, i;

============================================================

【改错2】错误

【学生答案】

pt[i] = str[k,i] ;

【参考答案】

pt[i] = str[k][i] ;

============================================================

【改错3】错误

【学生答案】

pt = q ;

【参考答案】

pt += q ;

pt=pt+q;

============================================================

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

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

功能:使数组左下三角元素中的值乘以n 。

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

#include

#include

#include

#define N 3

int fun ( int a[][N], int n )

{

/**********ERROR**********/

int i;j;

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

/**********ERROR**********/

for(j=0; j

/**********ERROR**********/

a[i][j]=*n;

}

main ( )

{

int a[N][N], n, i, j;

printf("***** The array *****\n");

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

{

for ( j =0; j<3;j++)

{

a[i][j] = rand()%10;

printf( "%4d", a[i][j] );

}

printf("\n");

}

do

n = rand();

while ( n >=5||n<1 );

printf("n = %4d\n",n);

fun ( a, n );

printf ("***** THE RESULT *****\n");

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

{

for ( j =0; j<3;j++)

printf( "%4d", a[i][j] );

printf("\n");

}

【改错1】正确

【学生答案】

int i,j;

【参考答案】

int i,j;

============================================================

【改错2】错误

【学生答案】

for(j=1; j

【参考答案】

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

============================================================

【改错3】错误

【学生答案】

a[i][j]==n;

【参考答案】

a[i][j]*=n;

============================================================

/*------------------------------------------------------- 【程序填空】

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

功能:以下程序是用选择法对10个整数按升序排序。

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

#include

/**********FILL**********/

_____

main()

{

int i,j,k,t,a[N];

for(i=0;i<=N-1;i++)

scanf("%d",&a[i]);

for(i=0;i

{

/**********FILL**********/

_____

/**********FILL**********/

for(j=i+1; _____;j++)

if(a[j]

/**********FILL**********/

if(_____)

{

t=a[i];

a[i]=a[k];

a[k]=t;

}

}

printf("output the sorted array:\n");

for(i=0;i<=N-1;i++)

printf("%5d",a[i]);

printf("\n");

}

【空1】错误

【学生答案】

_____

【参考答案】

#define N 10

============================================================

【空2】错误

【学生答案】

_____

【参考答案】

k=i

============================================================

【空3】错误

【学生答案】

for(j=i+1; _____;j++)

【参考答案】

j

N>j

j<=N-1

N-1>=j

============================================================

【空4】错误

【学生答案】

if(_____)

【参考答案】

k!=i

i!=k

============================================================

/*------------------------------------------------------- 【程序填空】

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

功能:文件操作。

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

# include

# include

void main()

{

/* 定义一个文件指针fp */

/**********FILL**********/

_____ *fp;

char ch, filename[10];

printf("Please input the name of file: ");

scanf("%s", filename); /* 输入字符串并赋给变量filename */ /* 以读的使用方式打开文件filename */

/**********FILL**********/

if((fp=fopen(filename, "_____")) == NULL)

{

printf("Cannot open the file.\n");

exit(0); /* 正常跳出程序 */

}

/* 关闭文件 */

/**********FILL**********/

_____;

}

【空1】错误

【学生答案】

_____ *fp;

【参考答案】

FILE

============================================================

【空2】错误

【学生答案】

if((fp=fopen(filename, "_____")) == NULL)

【参考答案】

r

============================================================

【空3】错误

【学生答案】

break;

【参考答案】

fclose(fp)

============================================================

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

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

功能:求一个3行4列矩阵的外框的元素值之和。

注意:矩阵四个角上的元素不能重复加。

例如:矩阵元素为1,2,3,4,5,6,7,8,9,10,11,12时,四框元素值之和应为65。

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

int fun(int a[3][4],int m,int n)

{

/**********ERROR**********/

int i,j,s,s1=s2=s3=s4=0;

for(j=0;j

{

s1=s1+a[0][j];

/**********ERROR**********/

s2=s2+a[m][j];

}

/**********ERROR**********/

for(i=0;i

{

s3=s3+a[i][0];

s4=s4+a[i][n-1];

}

/**********ERROR**********/

s=s1-s2-s3-s4;

return s;

}

main()

{

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

printf("total=%d\n",fun(a,3,4));

}

【改错1】错误

【学生答案】

int i,j,s,s1=s2=s3=s4=0;

【参考答案】

int i,j,s,s1=0,s2=0,s3=0,s4=0;

============================================================

【改错2】错误

【学生答案】

s2=s2+a[n][j];

【参考答案】

s2=s2+a[m-1][j];

s2+=a[m-1][j];

s2=a[m-1][j]+s2;

============================================================

【改错3】错误

【学生答案】

for(i=0;i

【参考答案】

for(i=1;i

for(i=1;i<-1+m;i++)

for(i=1;m-1>i;i++)

for(i=1;-1+m>i;i++)

for(i=1;i<=m-2;i++)

for(i=1;m-2>=i;i++)

============================================================

【改错4】错误

【学生答案】

s=s1-s2-s3-s4;

【参考答案】

s=s1+s2+s3+s4;

============================================================

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

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

功能:请编写函数fun,对长度为8个字符的字符串,将8个字符按降序排列。

例如:原来的字符串为CEAedcab,排序后输出为edcbaECA。

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

#include

#include

#include

int fun(char *s,int num)

{

/**********ERROR**********/

int i;j;

char t;

for(i=0;i

/**********ERROR**********/

for(j=i;j

/**********ERROR**********/

if(s[i]>s[j])

{

t=s[i];

s[i]=s[j];

s[j]=t;

}

}

main()

{

char s[10];

printf("输入8个字符的字符串:");

gets(s);

fun(s,8);

printf("\n%s",s);

}

【改错1】正确

【学生答案】

int i,j;

【参考答案】

int i,j;

============================================================

【改错2】错误

【学生答案】

for(j=0;j

【参考答案】

for(j=i+1;j

============================================================

【改错3】错误

【学生答案】

if(s[i]>s[j])

【参考答案】

if(s[i]

============================================================

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

【程序填空】

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

函数max_sum的功能是:利用函数计算连续的数组元素累加和的最大值。如果最大值是负数则返回0;

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

int max_sum(int x[], int n) {

int max;

int i;

/**********FILL**********/

_____;

/**********FILL**********/

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

max =max+x[i];

/**********FILL**********/

if (max>_____)

return max;

else

return 0; }

#include

void main(void)

{

int x[20] = { 2, -3, 1, -1, 3, -2, -3, 3};

int n=5;

int i;

printf("\n\nGiven Array :");

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

printf("%4d", x[i]);

printf("\n\nMaximum Sum is %d", max_sum(x, n));

}

【空1】错误

【学生答案】

;

【参考答案】

max=0

============================================================

【空2】错误

【学生答案】

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

【参考答案】

n

============================================================ 【空3】错误

【学生答案】

if (max>i)

【参考答案】

============================================================

空1】正确

【学生答案】

for(hb=0;hb<=100;hb+=hb/3)

【参考答案】

3

============================================================

【空2】正确

【学生答案】

for(hm=0;hm<=100-hb;hm+=hm/2)

【参考答案】

2

============================================================

【空3】正确

【学生答案】

hl=100-hb-hm;

【参考答案】

hm

============================================================

【空4】正确

【学生答案】

if(hb/3+hm/2+2*hl==100)

【参考答案】

hl

============================================================

/*------------------------------------------------------- 【程序填空】

--------------------------------------------------------- 功能:百马百担问题:有100匹马,驮100担货,大马驮三担,中

马驮2担,两匹小马驮一担,求大、中、小马各多少匹?

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

#include

main()

{

int hb,hm,hl,n=0;

/**********FILL**********/

for(hb=0;hb<=100;hb+=_____)

/**********FILL**********/

for(hm=0;hm<=100-hb;hm+=_____)

{

/**********FILL**********/

hl=100-hb-_____;

/**********FILL**********/

if(hb/3+hm/2+2*_____==100)

{

n++;

printf("hb=%d,hm=%d,hl=%d\n",hb/3,hm/2,2*hl);

}

}

printf("n=%d\n",n);

static struct {int a1;float a2;char a3;}a[10]={1,3.5,'A'}; 说明数组a是地址常量,它有10个结构体型的下标变量,采用静态存

储方式,其中被初始化的下标变量是(B)。

A、a[10]

B、a[0]

C、a[1]

D、a[-1]

对以下说明语句 int a[10]={6,7,8,9,10}; 的正确理解是(D)。

A、将5个初值依次赋给a[1]至a[5]

B、将5个初值依次赋给a[6]至a[10]

C、因为数组长度与初值的个数不相同,所以此语句不正确

D、将5个初值依次赋给a[0]至a[4]

在C语言中,能代表逻辑值“真”的是(C)。

A、大于0的数

B、True

C、非0的数

D、非0整数

假定所有变量均已正确定义,下列程序段运行后x的值是(D)。

k1=1;

k2=2;

k3=3;

x=15;

if(!k1) x--;

else if(k2) x=4;

else x=3;

A、15

B、14

C、3

D、4

若有说明语句:char c='\72';则变量c(C)。

A、说明不合法,c的值不确定

B、包含3个字符

C、包含1个字符

D、包含2个字符

以下不符合C语言语法的赋值语句是(B)。

A、a=b=5;

B、a=1,b=2

C、++j;

D、y=(a=3,6*5);

C 语言程序的三种基本结构是顺序结构、选择结构和___D___结构.

A、递归

B、转移

C、嵌套

D、循环

以下叙述中不正确的是(A)。

A、在C程序中,赋值运算符的优先级最低

B、在C程序中,j++;是一条赋值语句

C、C程序中的#include和#define均不是C语句

D、一个好的程序应该有详尽的注释

若有下列定义,则对a数组元素地址的正确引用是(B)。

int a[5],*p=a;

A、&a

B、p+2

C、a++

D、&a[5]

static char str[10]="China";数组元素个数为(B)。

A、5

B、10

C、6

D、9

以下程序中,c的二进制值是 D

char a = 3, b = 6, c;

c = a ^ b << 2;

A、00011100

B、00010100

C、00011000

D、00011011

以下程序的输出结果是_A_______.

void fun(int a, int b, int c)

{ a=456; b=567; c=678; }

main()

{ int x=10, y=20, z=30;

fun(x, y, z);

printf("%d,%d,%d\n", z, y, x);}

B、10,20,30

C、678567456

D、456567678

执行下列程序后,其输出结果是(B)。

main()

{int a=9;

a+=a-=a+a;

printf("%d\n",a);

}

A、18

B、-18

C、-9

D、9

若从终端输入以下数据,要给变量c赋以283.19,则正确的输入语句是 D

A、scanf(%8.4f”, &c);

B、scanf(%6.2f”, &c);

C、scanf(%f”,c)

D、scanf(%8f”, &c);

下列变量定义中合法的是(A)。

A、short _a=1-.1e-1;

B、long do=0xfdaL;

C、double b=1+5e2.5;

D、float 2_and=1-e-3;

以下程序的输出结果是 D

#define FMT “%d,”

main()

{

int b[][4] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23};

printf(FMT, *(*(b+1)+1));

printfFMT, b[2][2]);

}

A、1,11,

B、1,11

C、11,21

D、11,21,

若int a=3,则执行完表达式a-=a+=a*a后,a的值是 B

A、-15

B、0

C、-9

D、-3

以下read函数的调用形式中,参数类型正确的是(D)。

A、read(int fd,int count,char *buf)

B、read(int count,char *buf,int fd)

C、read(int *buf,int fd,int count)

D、read(int fd,char *buf,int count)

已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用

八进制表示的字符常量'\101'是(D)。

A、字符e

C、非法的常量

D、字符A

C语言规定,函数返回值的类型是由(D)。

A、调用该函数时的主调函数类型所决定

B、return语句中的表达式类型所决定

C、调用该函数时系统临时决定

D、在定义该函数时所指定的函数类型所决定

与实际参数为实型数组名相对应的形式参数不可以定义为(A)。

A、float a;

B、float a[];

C、float (*a)[3];

D、float *a;

若有定义和语句:

int a[4][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, (*prt )[3] = a, *p[4], i;

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

p[i] = a[i];

则不能够正确表示a数组元素的表达式是 B

A、(*(p+1))[1]

B、a[4][3]

C、p[0][0]

D、prt[2][2]

为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else总与( C )配对

A、同一行上的if

B、其之后最近的if

C、其之前最近的未配对的if

D、缩排位置相同的if

以下程序的输出结果是 A 。

typedef union

{ long i;

int k[5];

char c;

} DATE;

struct date

{ int cat;

DATE cow;

double dog;

} too;

DATE max;

main()

{

printf(“%d\n”, sizeof(struct date) + sizeof(max) );

}

A、30

B、25

C、18

D、8

下列程序的输出结果为(D)。

{int m=7,n=4;

float a=38.4,b=6.4,x;

x=m/2+n*a/b+1/2;

printf("%f\n",x);

}

A、28.000000

B、27.500000

C、28.500000

D、27.000000

有以下程序(提示:程序中fseek(fp, -2L * sizeof(int), SEEK_END);语句的作用是 A

使位置指针从文件末尾向前移2*sizeof(int)字节)

#include

main()

{ FILE *fp; int i, a[4] = {1, 2, 3, 4}, b;

fp = fopen(“data.dat”, “wb”);

for(i = 0; i < 4; i++) fwrite(&a[i], sizeof(int), 1, fp);

fclose(fp);

fp = fopen(“data.dat”, “rb”);

fseek(fp, -2L * sizeof(int), SEEK_END);

fread(&b, sizeof(int), 1, fp); /*从文件中读取sizeof(int)字节的数据到变量b中*/

fclose(fp);

}

执行后输出结果是

A、3

B、4

C、1

D、2

printf函数中用到格式符%5s,其中数字5表示输出的字符串占用

5列,如果字符串长度大于5,则输出按方式(C)。

A、右对齐输出该字串,左补空格

B、从左起输出该字符串,右补空格

C、按原字符长从左向右全部输出

D、输出错误信息

1 语句int max(int x,int max(int y, int z));是正确的函数声明语句. F

2 若有int ⅰ=10, j=0;则执行完语句

if (j=0)ⅰ+ +; else ⅰ- -; ⅰ的值为11。F

3 char *p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。F

4 如果想使一个数组中全部元素的值为0,可以写成

int a[10]={0*10};F

5 如果有一个字符串,其中第十个字符为'\n',则此字符串的

有效字符为9个。F

6 共同体变量所占的内存长度等于最长的成员的长度。T

7 函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));中,含有的实参个数是5.F

8 #define 和printf 都不是C语句。T

9 C语言本身不提供输入输出语句,输入和输出操作是由函数来

实现的。T

10 若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义,

所以此宏定义是错误的。F

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

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

功能:根据整型形参 m,计算某一数据项的值。

y = 1/(100*100)+1/(200*200)+1/(300*300)+ …… +1/(m*m) 例如:若m = 2000,则应输出: 0.000160。

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

#include

#include

/**********ERROR**********/

fun ( int m )

{

double y = 0, d ;

int i ;

/**********ERROR**********/

for( i = 100, i <= m, i += 100 )

{

d = (double)i * (double)i ;

/**********ERROR**********/

y += 1.0 \ d ;

}

return( y ) ;

}

main( )

{

int n = 2000 ;

clrscr( ) ;

printf( "\nThe result is %lf\n", fun ( n ) ) ;

}

【改错1】错误

【学生答案】

fun ( int m )

【参考答案】

double fun ( int m )

============================================================

【改错2】错误

【学生答案】

for( i = 100, i <= m, i += 100 )

【参考答案】

for( i = 100; i <= m; i += 100 )

============================================================

【改错3】错误

【学生答案】

y += 1.0 \ d ;

【参考答案】

y += 1.0 / d ;

============================================================

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

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

功能:移动一维数组中的内容; 若数组中有n个整数, 要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。

例如:一维数组中的原始内容为:“1,2,3,4,5,6,7,8,9,10” p的值为3。移动后,一维数组中的内容应为“ 5,6,7,8,9,10,1,2,3,4”

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

#include

#define N 80

void fun(int *w, int p, int n)

{

/**********ERROR**********/

int i,k=0;b[N];

/**********ERROR**********/

for(i=1; i < n; i++) b[k++]=w[i];

/**********ERROR**********/

for(i=0; i <= p; i++) b[k]=w[i];

for(i=0; i < n; i++) w[i]=b[i];

}

main()

{

int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

int i,p,n=15;

printf("The original data:\n");

printf("\n\nEnter p: ");scanf("%d",&p);

fun(a,p,n);

printf("\nThe data after moving:\n");

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

printf("%d ",a[i]);

printf("\n\n");

【改错1】错误

【学生答案】

int i,k=0;b[N];

【参考答案】

int i,k=0,b[N];

============================================================

【改错2】错误

【学生答案】

for(i=1; i < n; i++) b[k++]=w[i];

【参考答案】

for(i=p+1; i < n; i++) b[k++]=w[i];

============================================================

【改错3】错误

【学生答案】

for(i=0; i <= p; i++) b[k]=w[i];

【参考答案】

for(i=0; i <= p; i++) b[k++]=w[i];

============================================================

/*------------------------------------------------------- 【程序填空】

--------------------------------------------------------- 功能:打印以下图形。

*****

*****

*****

*****

*****

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

main ( )

{

char a[5][9]={" "};

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

/**********FILL**********/

for(j=i; _____;j++)

a[i][j]='*';

/**********FILL**********/

for(_____;i<5;i++)

{

for(j=0;j<9;j++)

/**********FILL**********/

printf("%c", _____ );

/**********FILL**********/

_____;

}

}

【空1】错误

【学生答案】

for(j=i; _____;j++)

【参考答案】

j

i+5>j

j<=i+4

i+4>j

============================================================

【空2】错误

【学生答案】

for(_____;i<5;i++)

【参考答案】

i=0

============================================================

【空3】错误

【学生答案】

printf("%c", _____ );

【参考答案】

a[i][j]

============================================================

【空4】错误

【学生答案】

_____;

【参考答案】

计算机程序改错题,及答案

11 *程序名:TEST.prg *检索选修课程门数等于3门或3门以上,每门课程成绩大于或等于70分的每个学生的 *学号,姓名,性别,平均成绩,最低分和选课门数,并将结果存储到表NEW_TEST中. *以下程序有三处错误,请改正 OPEN DA TABASE SDB SELECT STUDENT.学号,姓名,性别,A VG(成绩) 平均成绩,MIN(成绩) 最低分,COUNT(*) 选课门数; FROM STUDENT,SC; WHere STUDENT.学号= SC.学号AND 成绩>= 70 ; &&**********Error********** GROUP BY STUDENT.学号HA VING count(课程号) >= 3; &&**********Error********** inTO table NEW_TEST &&**********Error********** CLOSE ALL 9 *程序名:dbtest3.prg *定义一个视图VS1, *检索选课门数是3门以上的每个学生的学号、姓名、平均成绩、最低分、选课门数和院系编号, *并按平均成绩降序排序. *以下程序有三处错误,请改正 SET TALK OFF SET SAFETY OFF open DATABASE SDB &&****Error***修改本行的语法错误,不许注释掉本行或删除本行 CREATE VIEW VS1 SELECT STUDENT2.学号, 姓名, A VG(成绩) 平均成绩, MIN(成绩) 最低分, COUNT(*) 选课门数, 院系编号; FROM STUDENT2, sc; &&*************Error************* WHERE STUDENT2.学号= SC.学号; GROUP BY SC.学号HA VING COUNT(课程号) > 3; ORDER BY 平均成绩desc &&*************Error************* CLOSE DATABASE RETURN i=2 create table four(结果I) do while i<=1000 if i%3=0 insert into four values(i) &&错误语句请修改 endif

程序改错C

程序改错 ================================================== 题号:7471 /*------------------------------------------------------ 【程序改错】:只允许修改错误代码,其他代码不允许修改! -------------------------------------------------------- 功能:计算正整数num的各位上的数字之积。 例如:若输入:252,则输出应该是:20。 若输入:202,则输出应该是:0。 ------------------------------------------------------*/ #include #include long fun (long num) { /**********ERROR**********/ long k=1 do { k*=num%10 ; /**********ERROR**********/ num\=10; /**********ERROR**********/ }while(!num) ; return (k) ; } void main( ) { long n ; printf("\Please enter a number:") ; scanf("%ld",&n) ; printf("\n%ld\n",fun(n)) ; } 答案: 位置 1: long k=1; 位置 2:

num/=10; 【或】 num=num/10; 位置 3: } while(num) ; 【或】 while(num!=0) 题号:7383 /*------------------------------------------------------ 【程序改错】:只允许修改错误代码,其他代码不允许修改! -------------------------------------------------------- 功能:统计出若干个学生的平均成绩,最低分以及得最低分的人数。例如:输入10名学生的成绩分别为92,87,68,56,92,84,67, 75,92,66,则输出平均成绩为77.9,最低高分为56,得最低分的人数为1人。 ------------------------------------------------------*/ #include "stdio.h" float Min=0; int J=0; float fun(float array[],int n) { int i;float sum=0,ave; Min=array[0]; for(i=0;iarray [i]) Min=array [i]; /**********ERROR**********/ sum=+array [i]; } /**********ERROR**********/ ave=sum\n; for(i=0;i

程序改错题

程序改错题 (注意:每小题只有1行有错误,答题时请指出错误位置并给出改正结果)1. 输出计算结果。 main() { int a=b=10; a+=b+5; b*=a+=10; printf("%d%d\n",a,b); } 2. 输出计算结果。 #include main() { float x,y; scanf("%f",x); y=x*56/97; printf("%f\n",y); } 3. 输出计算结果。 main() { int x=2,y=3; z=(x++,y++); printf("%d",z); } 4. 输出运行结果。 main() { float a,b,c,v; a=2.0;b=3.0;c=4.0; v=a*b*c; printf("%f\n" ,v) } 5. 输出运行结果。 #include “stdio.h” main(){ float r,s; r=5.0; s=3.14159*r*r; printf("%d\n",s); }

输出程序运行结果。 #include main() { char ch; scanf("%c",ch); printf("%d\n",ch); } 7. 输入一整数判断是否能被13整除。main() { int i; scanf(“%d”,i); if(i%13==0) printf("yes"); else printf("no"); } 8. 输出程序运行结果。 main() { int a,b; float x,y,z; scanf("%f%f%f",&x,&y,&z); a=b=x+y+z; c=a+b; printf("%d%d%d",a,b,c); } 9. 输出程序运行结果。 #include main() { float x,y; scanf("%f",&x); y=2x+10; printf("%f\n",y); } 10. 输出程序运行结果。 main() { int a,b='B'; scanf("%d",a); printf("%c,",b++); printf("%d\n",b-a); }

c语言程序改错

【程序改错】 1.功能:利用递归函数调用方式,将所输入的5个字符,以相反顺序 打印出来。 char next; next=getchar(); palin(n-1); 2.功能:求广义菲玻那契级数的第n项。广义菲玻那契级数的前n 项为: 1,1,1,3,5,9,17,31,…… 项值通过函数值返回 main ( )函数。 例如:若 n = 15,则应输出:The value is: 2209。 for (k=4; k<=n; k++) a=b; return d; 3.功能:根据整型形参m,计算如下公式的值: y=1/2+1/8+1/18+...+1/2m*m double y=0.0; 4.功能:编制统计营业员一天的营业额的程序,设程序采用一个循环 实现,每次循环输入一笔交易金额并累计营业额。由于营 业员一天完成的交易次数是不确定的,为此以最后附加输 入一笔0或负数交易额作为交易金额已全部输入结束的标志。 float sale,sigma; scanf("%f",&sale); sigma=sigma+sale; 5.功能:读取7个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*。while(n<8) while(a<1||a>50); for(i=0;i

程序改错1

第1题(10.0分)题号:421 /*-------------------------------- 【程序改错】 -------------------------------- 功能:给一个不多于5位的正整数,要求: 一、求它是几位数, 二、逆序打印出各位数字。 --------------------------------*/ #include"stdio.h" main( ) { /**********FOUND**********/ long a,b,c,d,e,x, scanf("%ld",&x); a=x/10000; /**********FOUND**********/ b=x/10000/1000; c=x%1000/100; d=x%100/10; e=x%10; /**********FOUND**********/ if (a==0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a); else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b); else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c); else if (d!=0) printf("there are 2, %ld %ld\n",e,d); else if (e!=0) printf(" there are 1,%ld\n",e); getch(); } 答案: 1). long a,b,c,d,e,x; 2). b=x%10000/1000; 3). if (a!=0) 或 if (!a) 第2题(10.0分)题号:417 /*-------------------------------- 【程序改错】 -------------------------------- 功能:下题是一段有关结构体变量传递的程序. --------------------------------*/ #include "stdio.h" struct student { int x; char c; } a; main() { a.x=3; /**********FOUND**********/ a.c='a' f(a); /**********FOUND**********/ printf("%d,%c",a.x,b.c); getch(); } f(struct student b) { b.x=20; /**********FOUND**********/ b.c=y; } 答案: 1). a.c='a'; 2). printf("%d,%c",a.x,a.c); 3). b.c='y'; 第1题(10.0分)题号:440 /*-------------------------------- 【程序改错】 --------------------------------

程序改错2

【程序改错-1】 题目:在一个一维整型数组中找出其中最大的数及其下标。程序中共有4条错误语句,请改正错误。『错误答案』: 1 int fun(int *a,int *b,int n) 2 *b=c-a;} 3 scanf("%d",&a[i]); 4 max=fun(a,&p,N); 【程序改错-2】 题目:为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换;输出数组元素。程序中共有4条错误语句,请改正错误。 『错误答案』: 1 scanf("%d",p++); 2 max=p; 3 if(★max★==★arr ★) 4 for(i=0;ii;i++) 或 for(p=arr;pj;j++) 或 for(j=0;jj;j++) 3 if(x[j]>x[★j★+★1★]) 或 if(x[★j★+★1]★ =0;i--) 或 for(i=N-2;0<=i;i--) 3 a[★i★+★1 ★]=a[i]; 4 break;} 『Turbo C——程序改错』【程序改错-5】 题目:将一个字符串中第m个字符开始的全部字符复制成为另一 个字符串。 程序中共有4条错误语句,请改正错误。 『错误答案』: 1 { char *p1,*p2; 或{ char *p2,*p1; 2 p1= ★str1★+★m★ -1; 或 p1=-1+★str1★+★m★; 3 while(*p1) 4 strcopy(str1,str2,m); 【程序改错-6】 题目:以下程序的功能是求如下表达式:请改正程序中的错误,使程序能得到正确的运行结果。 『错误答案』: 1 scanf("%d",&n); 2 float fun(int n) 3 for(i=1;i<=n;i++) 或 for(i=1;n>=i;i++) 或 for(i=1;ii;i++) 4 s+=1.0/t 或 s=★s★+★1.0★/(float)t; 或 s=★s★ +★1.0★/t; 或 s+=1.0/(float)t 【程序改错-7】 题目:下面程序的功能是利用二维数组输出如图所示的图形。请改正程序中的错误,使程序能得到正确的运行结果。『错误答案』: 1 #define N 7 2 a[i][j]=' '; 3 z=z-1; 或 z--; 或 z=-1+z; 或 z=(n+1)/2-1; 或 z=(1+n)/2-1 4 printf("%c",a[i][j]); 【程序改错-8】 题目:输入一行英文文本,将每一 个单词的第一个字母变成大『错误 答案』: 1 fun(char *p) 或 fun(char p[]) 2 while(*p!='\0') 或 while(*p) 3 k=1;} 4 p++; 或 p=1+p; 或 ++p; 或 p=p+1; 【程序改错-9】 题目:将一个字符串中的大写字母 转换成小写字母。 例如:输入aSdFG输出为 asdfg。 『错误答案』: 1 char fun(char *c) 2 return *c; 或 return (*c); 或 return(*c); 3 { char s[81],*p=s; 4 putchar(*p); 或 printf("%c",*p); 【程序改错-10】 题目:将若干学生的档案存放在一 个文件中,并显示其内容。错误答 案』: 1 { struct student *p 2 FILE *fp; 3 for(p=stu;p<★stu★ +★3★;p++) 或 for(p=stu;★ stu★+★3★>p;p++) 或 for(p=stu;p<=★stu★+★2 ★;p++) 或 for(p=stu;★stu★+ ★2★>=p;p++) 4 printf("%4d %-10s %4d\n",(*p) .num ,p->name,(*p).age); 【程序改错-11】 题目:下列给定程序中,函数fun 的功能是:判断m是否为素数,若 是返回1,否则返回0。主函数的 功能是:按每行5个输出1-100 之间的全部素数。『错误答案』: 1 int fun( int m) 或 fun( int m) 2 for(i=2;ii;i++) 或 for(i=2;i<=m-1;i++) 或 for(i=2;m-1=>i;i++) 3 if(★m%i★==★0★) k=0; 4 return k; 或 return(k); 【程序改错-12】 题目:函数fun的功能是:用下面 的和式求圆周率的近似值。直 到最后一项的绝对值小于 等于0.0001。 错误答案』: 1 #include "math.h" 2 float s=0,t=1,p=1; 或 float s=0,p=1,t=1; 或 float p=1,s=0,t=1; 或 float p=1,t=1,s=0; 或 float t=1,p=1,s=0; 或 float t=1,s=0,p=1; 3 while(fabs(t)>1e-4) 或 while(0.00010.0001) 4 printf("pi=%f\n",★ s★*★4★); 【程序改错-13】 题目:下列给定程序中,函数fun 的功能是:求1到10的阶乘的 和。主函数和fun函数中, 各有两个错误,\『错误答案』: 1 for(i=1;i<=10;i++) 或 for(i=1;10>=i;i++) 或 for(i=1;i<11;i++) 或 for(i=1;11>i;i++) 2 s=★s★+★fac(i)★; 或 s+=fac(i); 3 float y=1.0; 或 float y=1; 4 return y; 或 return(y); 或 return (y); 【程序改错-14】 题目:函数fun的功能是:求1到 20的阶乘的和。请改正程序中的错 误,使它能得出正确的结果。 『错误答案』: 1 t=1; 或 t=1.0; 2 t=★t★*★j★; 或 t*=j; 3 s=★s★+★t★; 或 s+=t; 4 printf("jiecheng=%f\n",s); 【程序改错-15】 题目:函数fun的功能是:输出 Fabonacci数列的前20项,要求变 量类型定义成浮点型,输出 时只输出整数部分,输出项 数不得多于或少于20。 『错误答案』: 1 printf("%8.0f",f1); 或 printf("%f",f1); 2 for(i=1;i<20;i++) 或 for(i=1;20>i;i++) 或 for(i=2;i<=20;i++) 或 for(i=2;20>=i;i++) 或 for(i=1;i<=19;i++) 或 for(i=1;19>=i;i++) 3 f1=f2; 4 f2=f3; 【程序改错-16】 题目:函数fun的功能是:根据整 型形参m的值,计算如下公式的值。 1 1 1 t = 1- —— - —— - ... - —— 2x2 3x3 mxm 『错误答案』: 1 for(i=2;i<=m;i++) 或 for(i=2;m>=i;i++) 或 2 y-=1.0/(i*i); 或 y=y-1.0/(i*i); 或 3 return y; 或 return (y); 【程序改错-17】 题目:函数fun的功能是:实现交 换两个整数的值。例如给a和b 分别输入3和6 ,输出为 a=6 b=3『错误答案』: 1 void fun (int *a,int *b) 或 fun (int *a,int *b) 2 t=*a; 3 *a=*b; 4 *b=t; 【程序改错-18】 题目:函数fun的功能是:计算并 输出k以内最大的10个能被13 或17整除的自然数之和。k 的值由主函数传入,若k的值 为500,则函数值为4622。 请更改程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 while (★(2<=k)★&& ★(mc<10)★) 或 while (★(k>=2) ★&&★(10=k;k++) 【程序改错-21】 题目:函数fun的功能是:根据以 下公式求π值,并作为函数值 返回。例如,给指定精度的 变量eps输入0.0005时,应当 输出Pi=3.140578。 『错误答案』: 1 t=1; 或 t=1.0; 2 while (t>eps) 或 while (eps=eps) 或 while (eps<=t) 3 t=t*n/(2*n+1); 或 1.0*n/(2*n+1)*t 4 return (2*s); 或 return(2*s); 或 return (s*2); 或 return(s*2); 【程序改错-22】 题目:函数fun的功能是:求出两 个非零正整数的最大公约数, 并作为函数值返回。例如, 若给num1和num2分别输入49 和21,则输出的最大公约数 为7。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 a=b; 2 b=t; 3 r=a%b;} 4 return b; 或 return (b); 或 return(b); 【程序改错-23】 题目:在主函数中从键盘输入若干 个数放入数组中,用0结束输 入并放在最后一个元素中。 下列给定程序中,函数fun的 功能是:计算数组元素中值 为正数的平均值(不包括0)。 例如,数组中元素的值依次 为39,-47,21,2,-8,15, 0,则程序的运行结果为 19.250000。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 double sum=0.0; 2 while(★s[i]★!=★0 ★) 或 while!(s[i]==0) 或 while!(0==s[i]) 3 sum/=c; 或 sum=sum/c; 4 return sum; 或 return (sum); 【程序改错-24】 题目:fun函数的功能是:先从键 盘上输入一个3行3列矩阵的各 个元素的值,然后输出主对 角线上的元素之和sum。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 sum=0; 2 scanf("%d",&a[i][j]); 3 sum=★sum★+★ a[i][i]★; 或 sum+=a[i][i]; 4 printf("sum=%d\n",sum); 【程序改错-25】 题目:fun函数的功能是:给定n 个实数,输出平均值,并统计 在平均值以下(含平均值) 的实数个数。例如,n=6时, 输入23.5, 45.67, 12.1, 6.4,58.9, 98.4所得平均值 为40.828335,在平均值以 下的实数个数应为3。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 float xa=0; 或 float xa=0.0; 2 for(j=0;jj;j++) 或 for(j=0;n-1>=j;j++) 或 for(j=0;j<=n-1;j++) 3 for(j=0;jj;j++) 或 for(j=0;j<=n-1;j++) 或 for(j=0;n-1>=j;j++) 4 return c; 或 return (c); 【程序改错-26】 题目:fun函数的功能是:找出大 于m的最小素数,并将其作为 函数值返回。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 for(k=2;kk;k++)

程序改错1

程序改错 1.计算下列分段函数的值,输入x输出y 的值 f(x)= x*2 x<0且x≠-3 sin(x) 0<=x<10 且x≠2且x≠3 x*x+x-1 其他 1)scanf(“%f,&x); 2)y=sin(3*x); 3)printf(“%f\n”,y); 2.输入两个整数n1,n2(n10); 3)in=in/10; 4.从键盘上输入20个元素的值存入以为数组m中,然后将下标为奇数的元素赋值给数组n,最后输出数组n的内容。 1)for(a=0;a<20;a++) 2)if(a%2==1) 3)b++; 4)for(a=0;a<10;a++)

5.从键盘输入10个学生的成绩,统计最高分max,最低分min和平均分avg。 1)float a[8],min,max,avg; 2)scanf(“%f”,&a[i]); 3)max=min=avg=a[0]; 4)if(a[i]

程序改错包括答案版本.docx

12592 '题目 : 编程求一个十进制整数n 的各位数字之和,设n 为小于或等于 5 位的数。'------------------------------------------------ Option Explicit Private Sub Form_Click() Dim N As Integer, Sum As Integer, S1 As String, S2 As String Dim i As Integer, Ch As String Sum = 0 N = InputBox(" 输入整数n") S1 = Str(N) S1 = Trim(S1) For i = 1 To Len(S1) '**********ERROR********** Ch = Mid(N, i, 1) '**********ERROR********** Sum = Val(Ch) Next i Print " 该整数的各位数之和是: "; Sum End Sub 答案: Ch=Mid(S1 , i , 1) Sum = Sum + Val(Ch) 12610'题目:程序功能根据输入的学习成绩, 分别显示优秀 (90 分以上 ), 良好 (75 分以上 ), 及格 (60 分以上 )不及格四个等级 . '------------------------------------------------ Option Explicit Private Sub Form_Click() Cls Dim i As Integer i = InputBox(" 请输入学习成绩") Select Case i '**********ERROR********** Case 0 < i < 100 MsgBox " 成绩应该在0--100 之间 """ '**********ERROR********** Case 90 Print " 优秀 " Case 75 To 89 Print " 良好 " Case 60 To 74 Print " 及格 " '**********ERROR********** Case MsgBox " 不及格 ", vbCritical End Select End Sub 答案: Case 100 < x or x < 0 Case 90 to 100 Case Else 12616.题目:求 s=1!+3!+5!+7! ,阶乘的计算用Function 过程 fact 实现 . '------------------------------------------------ Option Explicit Private Sub Form_Click() Dim i As Integer, s As Integer '**********ERROR********** For i = 1 To 7 s = s + fact(i) Next i Print s End Sub '**********ERROR********** Public Function fact() Dim t As Integer, i As Integer t = 1 For i = 1 To n t = t * i Next i '**********ERROR********** fact = i End Function 答案: For i = 1 To 7 Step 2 Public Function fact%(n%) fact = t 12620 题目 :编程实现从左到右的滚动字幕,滚动的速度由滚动条控件来控制。 '------------------------------------------------ Option Explicit Private Sub HScroll1_Scroll() '**********ERROR********** Timer1.Interval = HScroll1.Min - HScroll1.Value End Sub Private Sub Timer1_Timer() '**********ERROR********** If Label1.Left <= Form1.Width Then '**********ERROR**********

程序改错练习题

程序改错练习题 下面每个程序的划线处有语法或逻辑错误,请找出并改正,使程序符合题意。 1.求1?2?3?4? ?n main() { int sum; 正确:int sum=1; int n,i=1; scanf("%d",n); scanf(“%d”,&n); printf(“\n”); while(ia[j]) if(max

main() { float a,b; int c; float c; scanf("%f,%f",&a,&b); c=sum(a,b); printf("\nSum is %f",sum); printf("\nSum is %f",c); } 4. x , y两个数中,让x中存较大的数,y存较小的数 #include main( ){ int x , y=200 , z=0; x=180; if ( x

VB程序设计例题-程序改错程序填空程序设计

'以下程序段用于输出杨辉三角:结果样式如图1 ' Private Sub Form_Click() Const n = 10 Dim arr(n, n) As Integer For I = 1 To n arr(I, I) = 1 '**********SPACE********** 【arr(I, 1) = 1】 Next I For I = 3 To n For j = 2 To I - 1 '**********SPACE********** arr(i, j) =arr(i-1,j-1)+arr(i-1,j) Next j Next I For I = 1 To n For j = 1 To I '**********SPACE********** 【print arr(I,j)】 Next j Print Next I End Sub Option Explicit '------------------------------------------------ '【程序改错】 '------------------------------------------------ '题目:用自定义函数的方法求sum(x),求当-1≤x≤1时,' sum(x)=x/2!+x^2/3!+x^3/4!+……+x^n/(n+1)!, ' 当x〉1或x〈-1时,函数值为0。当n〈=0时,输入数' 据错误。X、N都是由用户输入。 '------------------------------------------------ '注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Command1_Click() Dim s As Single Dim n As Integer, x As Single, k As Integer n = Val(InputBox("Please input a integer value:"))

程序改错完整版---C语言

(一)功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。#include "stdio.h" #define N 20 void fun(int a[], int n) { int i, j, t, k; for (j = 0 ;j < n-1 ;j++) { /**********ERROR**********/ k = j for (i = j+1;i < n; i++) /**********ERROR**********/ if(a[i] >a[k]) /**********ERROR**********/ k=j; t = a[k] ; a[k] = a[j] ; a[j] = t; } } main() { int a[N]={9,6,8,3,-1},i, m = 5; printf("排序前的数据:") ; for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n"); fun(a,m); printf("排序后的数据:") ; for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n"); } 【参考答案】 k = j; 【参考答案】 if(a[i] < a[k]) if(a[k] > a[i])

【参考答案】 k = i; (二)功能:求广义菲玻那契级数的第n项。广义菲玻那契级数的前n 项为: 1,1,1,3,5,9,17,31,…… 项值通过函数值返回 main ( )函数。 例如:若 n = 15,则应输出:The value is: 2209。 #include "conio.h" #include "stdio.h" long fun ( int n ) { long a=1, b=1, c=1, d=1, k; /**********ERROR**********/ for (k=4; k

程序改错

【程序改错】 1.下列给定程序中函数fun的功能是:删除s所指字符中所有的小写字母c 。 请改正程序中的错误,使它能得出正确的结果。 #include void fun( char *s ) { int I,j; for(i=j=0; s[i]!='\0'; i++) if(s[i]!='c') /***********FOUND***********/ s[j++]=s[i]; /***********FOUND***********/ s[j]='\0'; } main() { char s[80]; printf("Enter a string: "); gets(s); printf("The original string: "); puts(s); fun(s); printf("The string after deleted : "); puts(s);printf("\n\n"); } 2. 下列给定程序中,函数fun的功能是:根据整型参数m,计算如下公式的值。y=1/(100×100)+1/(200×200)+1/(300×300)+…+1/(m×m) 例如,若m=2000,则应输出0.000160。 请改正程序中的错误,使它能得出正确的结果。 #include #include #include /***********FOUND***********/ double fun (int m) { double y=0, d; int i; /***********FOUND***********/ for(i=100;i<=m;i+=100) {d=(double)i*(double)i; y+=1.0/d; } return(y); } void main() { int n=2000; system("CLS"); printf("\nThe result is %lf\n",fun(n)); } 3. 下列给定程序中函数fun的功能是:根据以下公式求π值,并作为函数值返回。

程序改错

1 已知C的公式表示如下: ' n! ' C=------------------ ' (n-m)!*m! 1). x=1 2). x=x*j 3). C = fac(n) / ( fac(n - m) * fac(m) ) 2题目:从计算机输入三个数, 找出中间数 1). If x < y Then 2). If y >= z Then 3). ElseIf x >= z Then 3'题目:求s=2!+4!+6!+8!,阶乘的计算用Function过程 ' fact实现 1). For i = 2 To 8 Step 2 2). Public Function fact(ByVal n As Integer) 3). fact = t 4 题目:编程求一个十进制整数n的各位数字之和,设n为小于或等于5位的数。 1). S1 = Trim(S1) 2). Ch = Mid(S1, i, 1) 3). Sum = Sum + Val(Ch) 5已知自然对数的底数e的级数表示如下: 1). x = x * i 2). n = 0 3). Loop While item >= 0.00000001 6下面的程序段用于实现以下功能:建立一顺序文件,存放10名同学的学号和三门功课成绩,显示 1). Open "c:\2.txt" For Output As #1 2). Open "c:\2.txt" For Input As #1 3). Input #1, n0, c1, c2, c3 7给定年号与月份,判断该年是否闰年,并根据给出的月份来判断是什么季节和该月有多少天? 1). If Year Mod 4 = 0 And Year Mod 100 <> 0 Or Year Mod 400 = 0 Then 2). Flag = 1 3). Select Case Month 8:一个两位的正整数,如果将它的个位数与十位数对调,则产生另一个正整数,我们把后者叫做前者的对调数,现给定一个两位的正数 1). h = k - g * 10 : m = h * 10 + g 2). For n = 11 To 99 3). End If 9程序功能为求解一元二次方程的实根,请修正程序中错误 1). work = b ^ 2 - 4 * a * c 2). root1 = (-b + Sqr(work)) / (2 * a) 3). root2 = (-b - Sqr(work)) / (2 * a) 10随机产生n个两位正整数(n由输入对话框输入,且n>0), ' 求出其中的偶数之和,并在标签框Label1上显示。 1). sum=0 2). rnddat = (10 + Int(90 * Rnd)) 3). If rnddat Mod 2 = 0 Then 11由输入对话框输入n(设n为大于零且小于30的自然数) 1). Do While n <= 0 Or n >= 30 2). k = k + 1 3). Loop Until k >= n 12判断给定的年月日是该年中的第几天。 1). Dim a(1 To 12) As Integer 2). days = days + a(i - 1) 3). days = days + day 13设窗体中有图片框Pic1,现要求在其中绘制10个同心圆, ' 然后将此图以Test.BMP作文件名存入磁盘。 1). for i=0 to 9 2). Do Until I < 0 3). I = I - 1 14给定三角形的三条边,计算三角形的面积。要求 ' 程序首先判断给定的三条边能否构成三角形。 1). If a + b < c Or b + c < a Or a + c < b Then 2). t = (a + b + c) / 2 3). s = Sqr(t * (t - a) * (t - b) * (t - c)) 15以下程序段用于计算5的N次方。 1). k=1 2). s=1 3). Loop 16随机产生n个两位正整数(n由输入对话框输入,且n>0), ' 求出其中的偶数之和,并在标签框Label1上显示。

相关主题
文本预览
相关文档 最新文档