high=mid-1;
elseif(m>a[mid])
low=mid+1;
else
return;/*改为:
returnmid*/
}
return-1;
}
voidmain()
{
inti,a[]={-3,4,7,9,11,13,45,60,66,70},k,m;
printf("\narraya:
\n");
for(i=0;iprintf("%d,",a[i]);
printf("\n\nEnterm:
\n");
scanf("%d",m);/*改为:
&m*/
k=fun(a[N],m);/*改为:
a*/
if(k>=0)
printf("m=%d,index=%d\n",m,k);
else
printf("Notbefound!
\n");
}
评分标准:
每改对一处得8分
二、编程题(程序文件取名为test1-2.c)(60分)
评分标准:
1、while循环编写正确,数字提取正确30分2、文件打开、关闭、数据写入正确15分
3、指针定义和使用正确5分4、屏幕输出正确5分5、程序结构合理5分
参考程序:
#include
#defineLEN256
voidmain()
{charline[LEN],b[20],*ptr1,*ptrb;
intn=0,j,a[50];
FILE*fp;
printf("Pleaseenterthestrings:
\n");
gets(line);
ptr1=line;
while(*ptr1!
='\0')
{ptrb=b;
for(j=0;*ptr1>='0'&&*ptr1<='9';ptr1++,ptrb++,j++)
*ptrb=*ptr1;
if(j)
{*ptrb='\0';
*(a+n)=atoi(b);
n++;
}
if(*ptr1!
='\0')ptr1++;
}
fp=fopen("test1-2.dat","w");
if(fp==NULL)
{printf("Cannotopenfile!
\n");
exit(0);
}
printf("Result:
\n");
for(j=0;j{printf("%10d\n",*(a+j));
fprintf(fp,"%10d\n",*(a+j));
}
fclose(fp);
}
27-2套参考答案:
一、程序调试题(文件名为test2-1.c)(40分)
#include"stdio.h"
#include"ctype.h"
intUpperNum(charstr[])
{
intn,i=0;/*改为:
n=0*/
while((str+i))/*改为:
*(str+i)*/
{
if(isupper(str[i]))
n++;
i++;
}
returni;/*改为:
n*/
}
voidmain()
{
charstr[];/*改为:
str[80]*/
printf("\nInputastring:
\n");
gets(str);
printf("\nTheNumberofUpperLetteris:
%d\n",UpperNum(str[]));/*改为:
str*/
评分标准:
每改对一处得8分
二、编程题(程序文件取名为test2-2.c)(60分)
评分标准:
1、被调函数编写正确(具体参照程序注释)(30分)
2、文件打开、关闭、数据读入正确(15分)
3、函数调用正确(5分)4、屏幕输出正确(5分)5、程序结构合理(5分)
参考程序:
#include
#include
intmystrcmp(char*q1,char*q2)
{
intk=0,t;
while(*(q1+k)!
='\0'||*(q2+k)!
='\0')/*5分*/
{if(*(q1+k)!
=*(q2+k))/*10分*/
{t=*(q1+k)-*(q2+k);
break;
}
else
t=0;/*5分*/
k++;/*5分*/
}
returnt;/*5分*/
}
voidmain()
{
FILE*fp;
intt;
chars1[20],s2[20];
fp=fopen("test2-2.dat","r");
if(fp==NULL)
{printf("Filecannotoepn\n");
exit(0);
}
fgets(s1,80,fp);
fgets(s2,80,fp);
puts(s1);
puts(s2);
t=mystrcmp(s1,s2);
printf("\nThecomparingresultofstringsis:
%d\n",t);
fclose(fp);
}
27-3套参考答案:
一、程序调试题(文件名为test3-1.c)(40分)
#include"stdio.h"
#defineN100
intfun(ints,intn)/*改为:
*s*/
{inti,j,k,a,b,c;
j=0;
for(i=100;i<=n;i++)
{
k=j;/*改为:
i*/
a=k%10;
k/=10;
b=k%10;
k/=10;
c=k;
if(a==b||a==c)/*改为:
&&*/
s[j++]=i;
}
returni;/*改为:
j*/
}
voidmain()
{
inta[N],n,num=0,i;
do
{printf("Entern(100~1000):
\n\n");
scanf("%d",&n);
}while(n>1000)/*改为:
while(n>1000);*/
num=fun(a,n);
printf("\n\nTheresult:
\n");
for(i=0;iprintf("%5d",a[i]);
printf("\n");
}
评分标准:
每改对一处得8分
二、编程题(程序文件取名为test3-2.c)(60分)
评分标准:
1、被调函数编写正确(具体参照程序注释)(30分)
2、文件打开、关闭、数据读入正确(15分)
3、函数调用正确(5分)4、屏幕输出正确(5分)5、程序结构合理(5分)
参考程序:
#include
voidfun(char*s,int*t)/*函数定义、形参书写正确10分*/
{
inti;
*t=0;/*5分*/
for(i=0;*(s+i)!
='\0';i++)/*算法正确,指针使用正确15分*/
if(*(s+i)>='0'&&*(s+i)<='9')(*t)++;
}
voidmain()
{
charstr[80];
FILE*fp;
inti=0,count;
if((fp=fopen("test3-2.in","r"))==NULL)
{printf("Cannotopenfile!
\n");
exit(0);
}
while(!
feof(fp))
{str[i]=fgetc(fp);
i++;
}
str[i]='\0';
fclose(fp);
fun(str,&count);
printf("Count=%d\n",count);
}
第27-4套参考答案
一、程序调试题(文件名为test4-1.c)(40分)
#include"stdio.h"
intfun1(int*n)/*改为:
n*/
{
inti;
for(i=2;i<=n;i++)/*改为:
<*/
if!
(n%i)/*改为:
(!
(n%i))*/
return0;
return;/*改为:
return1*/
}
voidmain()
{
intj,k;
printf("\nPleaseenteraintegernumber2~10000:
");
scanf("%d",k);/*改为:
&k*/
printf("\nTheprimefactor(s)of%dis(are):
",k);
for(j=2;j<=k;j++)
if(!
(k%j)&&fun1(j))
printf("\n%4d",j);
printf("\n");
}
评分标准:
每改对一处得8分
二、编程题(程序文件取名为test4-2.c)(60分)
评分标准:
1、被调函数编写正确(具体参照程序注释)(30分)
2、文件打开、关闭、数据读入正确(15分)
3、函数调用正确(5分)4、屏幕输出正确(5分)5、程序结构合理(5分)
参考程序:
#include
voidconvert(charstr[])/*函数定义、形参书写正确10分*/
{inti=0;
while(str[i]!
='\0')/*5分*/
{if(str[i]>='a'&&str[i]<='z')/*5分*/
str[i]-=32;/*5分*/
i++;/*5分*/
}
}
voidmain()
{
FILE*fp;
charstr[100];
if((fp=fopen("test4-2.dat","r"))==NULL)
{printf("Cannotopenfile!
\n");
exit(0);
}
while(!
feof(fp))
{fgets(str,81,fp);
convert(str);
puts(str);
}
fclose(fp);
}
第27-5套参考答案
一、程序调试题(文件名为test5-1.c)(40分)
#include"stdio.h"
#defineN80
voidfun(int*s,int*t,intk)/*改为:
*k*/
{
inti,m;
*k=0;
m=*s;
for(i=1;i<(*t-1);i++)
if(m
*(s+i)*/
{
m=*(s+i);
*k=i;
}
s[i+1]=m;
*t++;/*改为:
(*t)*/
}
voidmain()
{
inta[N]={876,675,896,101,301,401,980,431,451,777};
inti,n=10,mi;
fun(a[N],&n,&mi);/*改为:
a*/
printf("Theindexofmaxis:
%d\n",mi);
printf("Theresult:
\n");
for(i=0;ia[i]*/
}
评分标准:
每改对一处得8分
二、编程题(程序文件取名为test4-2.c)(60分)
评分标准:
1、被调函数编写正确(具体参照程序注释)(30分)
2、文件打开、关闭、数据读入正确(15分)
3、函数调用正确(5分)4、屏幕输出正确(5分)5、程序结构合理(5分)
参考程序:
#include
#defineN80
char*fun(char*s,char*t)/*函数定义、形参书写正确10分*/
{char*p,*ss,*tt;
ss=s;
tt=t;
while(*ss)
{n++;ss++;}/*5分*/
while(*tt)
{m++;tt++;}/*5分*/
if(n>=m)/*5分*/
p=s;
else
p=t;
returnp;/*5分*/
}
voidmain()
{chara[N],b[N];
FILE*fp;
printf("Input1thstring:
\n");
gets(a);
printf("Input2thstring:
\n");
gets(b);
fp=fopen("test5-2.dat","w");
if(fp==NULL)
{printf("Cannotopenfile!
\n");
exit(0);
}
printf("Theresultis:
%s\n",fun(a,b));
printf("Thelengthoftwostringsis:
%d,%d\n",n,m);
fprintf(fp,"Theresultis:
%s\n",fun(a,b));
fprintf(fp,"Thelen