文档库 最新最全的文档下载
当前位置:文档库 › C语言编程改错完善1

C语言编程改错完善1

C语言编程改错完善1
C语言编程改错完善1

编写程序

1. /*------------------------------------------------

【程序设计】

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

功能:编写函数fun(str,i,n),从字符串str中删除第i个

字符开始的连续n个字符(注意:str[0]代表字符串

的第一个字符)。

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

#include "stdio.h"

#include "string.h"

main()

{

char str[81];

int i,n;

void fun(char str[],int i,int n);

void TestFunc();

printf("请输入字符串str的值:\n");

scanf("%s",str);

printf("你输入的字符串str是:%s\n",str);

printf("请输入删除位置i和待删字符个数n的值:\n");

scanf("%d%d",&i,&n);

while (i+n-1>strlen(str))

{

printf("删除位置i和待删字符个数n的值错!请重新输入i和n的值\n"); scanf("%d%d",&i,&n);

}

fun(str,i,n);

printf("删除后的字符串str是:%s\n",str);

TestFunc();

}

void fun(char str[],int i,int n)

{

/*********Begin**********/

/********** End **********/

}

void TestFunc()

{

FILE *IN,*OUT;

char i[200];

/*char o[200];*/

IN=fopen("in.dat","r");

if(IN==NULL)

{

printf("Read File Error");

}

OUT=fopen("out.dat","w");

if(OUT==NULL)

{

printf("Write File Error");

}

fscanf(IN,"%s",i);

fun(i,2,8);

fprintf(OUT,"%s\n",i);

fclose(IN);

fclose(OUT);

}

2. /*------------------------------------------------

【程序设计】

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

功能:请编一个函数void fun(int tt[M][N],int pp[N]),

tt指向一个M行N列的二维数组,求出二维数组每列

中最小元素,并依次放入pp所指一维数组中。二维

数组中的数已在主函数中赋予。

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

#include "conio.h"

#include "stdio.h"

#define M 3

#define N 4

void fun(int tt[M][N],int pp[N])

{

/*********Begin**********/

/********** End **********/

}

main()

{

int t[M][N]={{22,45,56,30},{19,33,45,38},{20,22,66,40}}; void NONO();

int p[N],i,j,k;

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

for(i=0;i

{

for(j=0;j

printf("%6d",t[i][j]);

printf("\n");

}

fun(t,p);

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

for(k=0;k

printf("\n");

NONO();

}

void NONO()

{

int i,j, array[3][4],p[4];

FILE *rf, *wf ;

rf = fopen("in.dat", "r") ;

wf = fopen("out.dat", "w") ;

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

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

fscanf(rf, "%d", &array[i][j]); fun(array,p);

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

{

fprintf(wf, "%7d", p[j]);

fprintf(wf, "\n");

}

fclose(rf) ;

fclose(wf) ;

答案

1.while(str[i+n-1])

{

str[i-1]=str[i+n-1];

i++;

}

str[i-1]='\0';

2. int i,j;

for(j=0;j

{

pp[j]=tt[0][j];

for(i=1;i

if(tt[i][j]

pp[j]=tt[i][j];

程序改错

1.

}

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

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

功能:求1到20的阶乘的和。

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

#include "stdio.h"

void fun()

{

int n,j;

float s=0.0,t=1.0;

for(n=1;n<=20;n++)

{

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

s=1;

for(j=1;j<=n;j++)

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

t=t*n;

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

s+t=s;

}

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

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

}

main()

{

fun();

}

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

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

功能:编写一个函数,该函数可以统计一个长度为3的字符串在另一个字符串中出现的次数。

例如:假定输入的字符串为:asdasasdfgasdaszx67asdmklo,字符串为:asd,则应输出n=4。

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

#include "stdio.h"

#include "string.h"

#include "conio.h"

int fun(char *str,char *substr)

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

int i,n=0

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

for(i=0;i<=strlen(str);i++)

if((str[i]==substr[0])&&(str[i+1]==substr[1])&&(str[i+2]==substr[2])) /**********ERROR**********/

++i;

return n;

}

main()

{

char str[81],substr[4];

int n;

printf("输入主字符串: ");

gets(str);

printf("输入子字符串: ");

gets(substr);

puts(str);

puts(substr);

n=fun(str,substr);

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

.

答案

1.改错1

t=1;

t=1.0;

改错2.

t=t*j;

t*=j;

t=j*t;

改错3.

s=s+t;

s+=t;

s=t+s;

改错4.

printf("jiecheng=%f\n",s);

2.改错1.

int i,n=0;

改错2.

for(i=0;i<=strlen(str)-3;i++)

for(i=0;i

改错3.

n+=1;

n=n+1;

++n;

程序填空

1. /*-------------------------------------------------------

【程序填空】

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

功能:计算平均成绩并统计90分以上的人数,输入的成绩为负时程序结束。

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

#include "stdio.h"

main()

{

int n,m;float grade,average;

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

average=n=m=_____;

while(1)

{

scanf("%f",&grade);

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

if(_______) break;

n++;

average+=grade;

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

if(grade<90)_____;

m++;

}

if(n) printf("%f\n%d\n",average/n,m);

}

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

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

功能:求出二维数组中的最大元素值。

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

#include "stdio.h"

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

int max_value(int m,int n,int ______)

{

int i,j,max;

max=array[0][0];

for(i=0;i

for(j=0;j

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

if(max

return(max);

}

main()

{

int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}}; /***********FILL***********/

printf("max value is %d\n",_____);

}

答案

1.

空1.

0.0

空2.

grade<0

0>Grade

空3.

continue

2.

空1.

array[][4]

array[3][4]

空2.

max=array[i][j]

空3.

max_value(3,4,a)

相关文档