编写程序
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)