C语言程序设计作业2答案Word文件下载.docx
《C语言程序设计作业2答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计作业2答案Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
,fun(5)*w);
A)360B)3600C)1080
D)1200
7.以下程序的输出结果是()。
#include<
f(inta)
{intb=0;
staticintc=3;
b++;
c++;
return(a+b+c);
{inta=2,i;
for(i=0;
i<
3;
i++)printf("
%d"
f(a));
A)777B)710138.以下程序的输出结果是()。
C)7911
D)789
{inta[]={1,2,3,4,5,6},*p;
p=a;
*(p+3)+=2;
%d,%d\n"
*p,*(p+3));
A)0,5B)1,5C)0,6
9.以下程序的输出结果是()。
#include<
#definePT5.5
#defineS(x)PT*x*x
{inta=1,b=2;
%4.1f\n"
S(a+b));
A)49.5B)9.5C)12.5
D)1,6
D)33.5
10.下面程序段的输出结果是()
#defineLETTER1main()
{charstr[20]="
Language"
c;
inti=0;
while((c=str[i])!
='
\0'
)
已正确说明并赋值)元素值的正确引用为()
D)*(a+i)+j
D)p[1]+2
echo.exe,若希望在系统的命令状态下输入某一命令行后得到的输
D)(*p).age
#if(LETTER)
if(c>
a'
&
c<
z'
)c=c-32;
#else
A'
Z'
)c=c+32;
#endif
%c"
c);
A)LanguageB)languageC)LANGUAGED)lANGUAGE
11.若有说明:
char*s[]={“FORTRAN”,“BASIC”,”PASCAL”,”JAVA”,”C”};
则表达式*s[1]>
*s[3]比较的是()
A)字符F和字符PB)字符串BASIC和字符串JAVA
C)字符B和字符JD)字符串FORTRAN和字符串PASCAL
12.如下程序的输出结果是()。
{chara[20]="
chinese"
;
char*p=a;
for(;
p<
a+7;
p+=2)putchar(*p);
A)chineseB)cieeC)chineD)cie
13.若有定义:
inta[2][3];
则对a数组的第i行第j列(假设i,jA)*(*(a+i)+j)B)(a+i)[j]C)*(a+i+j)
14.若有以下定义和语句,则对a数组元素的正确引用为()。
inta[2][3],(*p)[3];
A)(p+1)[0]B)*(*(p+2)+1)C)*(p[1]+1)
15.若以下main函数经过编译、连接后得到的可执行文件名为出是chiantianjin,则命令行的内容应是()。
A)chiantianjin
B)echochiantianjin
C)echo
D)echo
chiantianjin
china
tianjin
16.以下对结构体变量stu中成员age的非法引用是()<
structstudent
{intage;
intnum;
}stu,*p;
p=&
stu;
A)stu.ageB)student.ageC)p->
age
17.已知学生记录描述为:
structDATE
{intyear;
intmonth;
intday;
};
{intno;
/*学号*/
charname[10];
/*姓名*/charsex;
/*性别*/structDATEbirth;
structstudents;
设变量s中的“生日”应该是“1984年11月11日”,下列对“生日
的正确赋值方式是()
A)year=1984;
month=11;
day=11;
C)s.year=1984;
s.month=11;
s.day=11;
18.若有以下定义的语句:
uniondata
B)birth.year=1984;
birth.month=11;
birth.day=11;
D)s.birth.year=1984;
s.birth.month=11;
s.birth.day=11;
{inti;
charc;
floatf;
}a;
intn;
则以下语句正确的是()
A)a.i=5B)a={2,'
1.2}C)printf(“%d”,a)
19.表达式a<
b||~c&
d的运算顺序是()。
A)~,&
,<
,||B)~,||,&
C)~,&
,||,<
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)!
;
i++)
if(*(s+i)!
=ch)*(s+(j++))=*(s+i)
*(s+j)='
5.下面程序段将输出computer,请填空
inti,j=0;
charc[for(i=0;
j=7,i<
8;
]=”it'
sacomputer”;
+=i;
{_printf("
c[j]);
_rintf(%c,c[j];
6.如下程序段的输出结果是123
。
{charstr[]="
1a2b3c"
inti;
str[i]!
if(str[i]>
0'
str[i]<
9'
)printf("
str[i]);
7•如下程序段的输出结果是_EFGH
IJKL。
{charstr[][10]={"
ABCD"
"
EFGH"
IJKL"
MNOP"
},k;
for(k=1;
k<
k++)
%s\n"
str[k]);
8.如下程序段的输出结果是—n1=1,n2=6
#include<
{inta[]={1,2,3,4,5,6},*p,i;
*(P+3)+=2;
n仁%4,n2=%d\n"
*p,*(p+3));
9阅读下面函数func,其功能是计算用户输入的整数num的各位数字之积。
填空使程序完整。
longfunc(longnum
{longk=1;
if(num<
0)num=-num;
do{
k*=num%10;
num/=10;
}while(num!
=0
return(k);
{longn;
Pleaseinputanumber"
scanf("
%ld"
&
n);
Resultis:
%ld"
func(n));
10•以下程序的输出结果是120
fun(intb[],intn)
{inti,r=1;
=n;
i++)r=r*b[i];
return(r);
{intx,a[]={2,3,4,5,6,7,8,9};
x=fun(a,3);
x);
11.下面程序段的输出结果是FO
{char*p[]={"
LOOK"
"
OUT"
A"
FM"
inti;
for(i=3;
i>
=0;
i--,i--)
*p[i]);
12•建立一个磁盘文件,文件名和内容由键盘输入。
stdlib.h>
voidmain()
{charch,fname[20];
_____________FILE*fp;
%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个学生的有关数据,然后把它们转存到磁盘文件上去。
voidmain()
{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;
=5;
%f\n"
b[i]);
2.
string.h>
#defineMAX80
voidconvert(chars[],charch)
{inti=0;
while(s[i]!
){
if(i%2==0)s[i]=ch;
voidmain()
{chars[MAX],ch;
gets(s);
&
ch);
convert(s,ch);
puts(s);
3.
voidinv(char*x,intn)
{char*p,m,temp,*i,*j;
m=(n-1)/2;
i=x;
j=x+n-1;
p=x+m;
p;
i++,j--)
{temp=*i;
*i=*j;
*j=temp;
{charstr[80];
gets(str);
inv(str,strlen(str));
puts(str);
4.
{intx,n;
floatp(int,int);
\ninputn&
x:
"
%d,%d"
n,&
x);
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.
#defineSIZE5
structstudent_type
{charname[10];
intnum;
intage;
charaddr[15];
}stud[SIZE];
voidsave()
{FILE*fp;
if((fp=fopen("
stu-list"
wb"
{printf("
cannotopenfile\n"
return;
for(i=0;
i<
SIZE;
if(fwrite(&
stud[i],sizeof(structstudent_type),1,fp)!
=1)printf("
filewriteerror\n"
fclose(fp);
i++)scanf("
%s%d%d%s"
stud[i].name,&
stud[i].num,&
stud[i].age,stud[i].addr);
save();