20.若执行fopen函数时发生错误,则函数的返回值为()。
A)地址值B)0C)1D)EOF
D)n=a
D)~,<,&,||
填空题答案
1.[&arr[i],arr+i]
2.[
(1)a[0]=1a[1]=2
(2)
实参和形参是值传递]
3.[
(1)0
(2)6]4.[*(s+j++)=*(s+i);]5.[
(1)i<=7
(2)j=i+7]
6.[123]
7.
[EFGH
IJKL]
8.[n1=1,n2=6]
9.[
(1)longnum
(2)num!
=0]
10.[120]
11.[FO]
12.[
(1)FILE*fp
(2)fname(3)fp]
填空题(本大题共11小题,每空2分,共30分)
1.intarr[20];贝Uarr[i]的地址可表示为_
2•函数swap(intx,inty)可完成对x和y值的交换。
在运行调用函数中的如下语句后,a[0]
和a[1]的值分别为_和,原因是swap(a[0],a[1])只是将形参的值交换,实参a[0]和a[1]
并不交换.。
a[0]=1;a[1]=2;swap(a[0],a[1]);
3.若有定义inta[3][4]={{1,2},{0},{4,6,78,10}};则初始化后a[1][2]得到的初值是_0,a[2][1]得到的初值
是6。
4•函数delete_string(chars[],charc)将字符串s中所出现的与变量c相同的字符删除,请填空。
delete_string(char*s,charch)/*定义外部函delete_string*/
{inti,j;
for(i=j=0;*(s+i)!
='\0';i++)
if(*(s+i)!
=ch)*(s+(j++))=*(s+i)
*(s+j)='\0';
}
5.下面程序段将输出computer,请填空
inti,j=0;
charc[for(i=0;j=7,i<8;i++)
]=”it'sacomputer”;
for(i=0;+=i;
;i++)
{_printf("%c",c[j]);
_rintf(%c,c[j];)
6.如下程序段的输出结果是123
。
#include
main()
{charstr[]="1a2b3c";inti;
for(i=0;str[i]!
='\0';i++)
if(str[i]>='0'&&str[i]<='9')printf("%c",str[i]);
}
7•如下程序段的输出结果是_EFGH
IJKL。
#include
main()
{charstr[][10]={"ABCD","EFGH","IJKL","MNOP"},k;
for(k=1;k<3;k++)
printf("%s\n",str[k]);
}
8.如下程序段的输出结果是—n1=1,n2=6
#include
main()
{inta[]={1,2,3,4,5,6},*p,i;
p=a;
*(P+3)+=2;
printf("n仁%4,n2=%d\n",*p,*(p+3));
}
9阅读下面函数func,其功能是计算用户输入的整数num的各位数字之积。
填空使程序完整。
#include
longfunc(longnum
)
{longk=1;
if(num<0)num=-num;
do{
k*=num%10;
num/=10;
}while(num!
=0
);
return(k);
}
main()
{longn;
printf("Pleaseinputanumber");
scanf("%ld",&n);
printf("Resultis:
%ld",func(n));
}
10•以下程序的输出结果是120
#include
fun(intb[],intn)
{inti,r=1;
for(i=0;i<=n;i++)r=r*b[i];
return(r);
}
main()
{intx,a[]={2,3,4,5,6,7,8,9};
x=fun(a,3);
printf("%d\n",x);
}
11.下面程序段的输出结果是FO
#include
main()
{char*p[]={"LOOK","OUT","A","FM"};
inti;
for(i=3;i>=0;i--,i--)
printf("%c",*p[i]);
}
12•建立一个磁盘文件,文件名和内容由键盘输入。
#include
#include
voidmain()
{charch,fname[20];
_____________FILE*fp;
scanf("%s",fname);
if((fp=fopen(fname
"w"))==NULL)
exit(O);
ch=getchar();
while(ch!
='*')
{fputc(ch,fp);
putchar(ch);ch=getchar();
}
fclose(fp
);
}
三、程序设计题
1.定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数,然后按顺序每5个数求出一个平均值,放在另一个数组中并输出。
2.从键盘输入一个字符串和一个字符,把此字符串中偶数位的字符变为输入的字符,要求用函数实现字符串偶数位字符的改变,在主函数中输入字符串和字符,并输出偶数位改变的字符串。
3.编程将一个输入的字符串逆序显示输出。
在主函数中输入字符串并输出逆序存放的字符串,在函数中实现字符串的逆序存放。
例如:
输入“abcdef',输出"fedcba"
(此题是书上p202页的8.5题)
4.用递归方法求n阶勒让德多项式的值,递归公式为:
1n0
pn(x)xn1
((2n1)?
xpn1(x)(n1)*pn2(x))/nn1
(此题是书上p202页的8.13题)
5.从键盘输入4个学生的有关数据,然后把它们转存到磁盘文件上去。
#includevoidmain()
{inta[31];floatb[6];
inti,k=1;
while(k<31){
a[k]=2*k;k++;
}
k=1;i=1;
while(i<=5){
b[i]=(a[k]+a[k+1]+a[k+2]+a[k+3]+a[k+4])/5;
k=k+5;i++;
}
for(i=1;i<=5;i++)printf("%f\n",b[i]);
}
2.
#include
#include
#defineMAX80
voidconvert(chars[],charch)
{inti=0;
while(s[i]!
='\0'){
if(i%2==0)s[i]=ch;
i++;
}
}
voidmain()
{chars[MAX],ch;
gets(s);
scanf("%c",&ch);
convert(s,ch);
puts(s);
}
3.
#include
#include
voidinv(char*x,intn)
{char*p,m,temp,*i,*j;
m=(n-1)/2;
i=x;j=x+n-1;p=x+m;
for(;i
{temp=*i;*i=*j;*j=temp;}
}
voidmain()
{charstr[80];gets(str);
inv(str,strlen(str));
puts(str);
}
4.
#include
voidmain()
{intx,n;
floatp(int,int);
printf("\ninputn&x:
");
scanf("%d,%d",&n,&x);
printf("n=%d,x=%d\n",n,x);printf("P%d(%d)=%6.2f\n",n,x,p(n,x));
}
floatp(intn,intx)
{if(n==0)
return
(1);
elseif(n==1)
return(x);
else
return((2*n-1)*x*p((n-1),x)-(n-1)*p((n-2),x))/n;
}
5.
#include
#defineSIZE5
structstudent_type
{charname[10];
intnum;
intage;
charaddr[15];
}stud[SIZE];
voidsave()
{FILE*fp;
inti;
if((fp=fopen("stu-list","wb"))==NULL)
{printf("cannotopenfile\n");
return;
}
for(i=0;iif(fwrite(&stud[i],sizeof(structstudent_type),1,fp)!
=1)printf("filewriteerror\n");
fclose(fp);
}
voidmain()
{inti;
for(i=0;i}