C实训三答案[推荐]由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言实训三”。
实验三
教学重、难点:程序改错、编程
教学内容:练习四川省计算机等级考试C机试试题
教学过程:
一、评讲实验二课后作业
二、课堂模拟题
1、fun函数功能是在一个字符串,根据给定的插入位置i,插入一个指定的字符ch。如果i超过了字符串的长度,则将字符ch添加到字符串的末尾。
在main函数中,输入一个字符串、插入位置和要插入的一个字符,调用函数fun,最后将插入后的结果输出到屏幕和文件test1-2.dat中。
例如输入abcdefg字符串,给定插入位置为3,插入字符为A。则输出结果为:abcAdefg。若给定的插入位置为20,则输出结果为:abcdefgA。
请改正程序中的错误,使它能得出正确的结果。注意:不得增行或删行,也不得更改程序的结构。源程序如下: #include #include #include #define N 80 char insert(char str,int i,char ch)
*str {
int j,len;
len=strlen(str);
if(i>len)
{
for(j=len-1;j>=i;j++)
j--
str[j+1]=str[j];
str[i]=ch;
str[len]=' ';
str[len+1]
}
else
{
i=len;
str[i]=ch;
str[len+1]=' ';
} } void main(){
char str[81],ch;
int i;
FILE *fp;
fp=fopen(“test1-2.dat”,“r”);
“w”
if(fp==NULL)
{
printf(“file can not open!n”);
exit(0);
}
printf(“Input a string:”);
gets(str);
printf(“Input insert position and character:”);
scanf(“%d,%c”,&i,&ch);
insert(str,i,ch);
printf(“%sn”,str);
fprintf(fp,“%sn”,str);
fclose(fp);}
2、fun函数的功能是统计M行字符串中最长的字符串,并返回最长字符串的字符个数。
在main函数中,从文件test3-1.dat中输入M行字符串(每行字符串的长度不超过80个字符),调用fun函数,然后输出最长字符串的字符个数。
请改正程序中的错误,使它能得出正确结果。注意:不得增行或删行,也不得更改程序结构。源程序如下: # include # define M 10 # define N 80 void main(){
int max,lin,i=0,a[M];
char str[M][N];
int fun(char [M][N],int *);
FILE *fp;
if((fp=fopen(“test3-1.dat”,“r”))==null)
{
printf(“Cannot open file.n”);
exit(0);
}
while(!feof(fp))
gets(str[i++],N,fp);
fclose(fp);
fun(str,a);
printf(“max=%dn”,max);} int fun(char str[][N],int a[]){
int i,j=0,max;
for(i=0;i
{
while(str[i][j])j++;
a[i]=i;
j=0;
}
max=a[0];
for(i=1;i
if(a[i]>max)
max=a[i];
return;}
三、评讲课堂模拟题
四、课后作业
1、fun函数的功能是:将字符串s中的数字字符取出,转换成一个整数,整数作为函数值返回。例如:字符串为“ab12CD34”,则取出数字字符转换成整数1234。
在main函数中调用fun函数,并将转换后的结果写到文本文件test4-1.dat中。请改正程序中的错误,使它能得出正确的结果。注意:不得增行或删行,也不得更改程序结构。源程序如下: #define N 20 # include int fun(char s)
char*s {
int i,t=0;
for(i=0;s[i]!=' ';i++)
if(s[i]>='0'||s[i]
&&
t=t*10+s[i];
t=t*10+s[i]-„0‟
return t;} void main(){
char s[20];
int t;
file *fp;
FILE
if((fp=fopen(“test4-1.dat”,“w”))==NULL)
{
printf(“Cannot open file!n”);
exit(0);
}
gets(s);
t=fun(s);
printf(“t=%dn”,t);
fprintf(“t=%dn”,t);
fprintf(fp,”t=%dn”,t);
fclose(fp);}
2、在main函数中,从文本文件test1-1.dat中读出N个数,调用fun函数,统计其中素数的个数,并在main函数中输出其素数的个数及其所有素数。
请改正程序中的错误,使它能得出正确结果。注意:不得增行或删行,也不得更改程序结构。
源程序如下: # include # define N 10 int fun(int *a,int c[]){
int i,j,k=0;
for(i=0;i
{
for(j=2;j
if(*(a+i)/j==0)break;
*(a+i)%j
if(j
{
c[k]=a+i;
*(a+i)
k++;
}
}
return k;} void main(){
int a[N],c[N],cnt,i;
FILE *fp;
fp=fopen(test5-1.dat,“r”);
“test5-1.dat”
if(fp==NULL)
{
printf(“Can not open file!n”);
exit(0);
}
for(i=0;i
fscanf(“%d”,a+i,fp);
fscanf(fp,”%d”,a+i)
cnt=fun(a,c);
printf(“amount: %4dn”,cnt);
printf(“prime number: ”);
for(i=0;i
printf(“%4d”,c[i]);}