大一c语言期末试题及参考答案文档格式.docx
《大一c语言期末试题及参考答案文档格式.docx》由会员分享,可在线阅读,更多相关《大一c语言期末试题及参考答案文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
sub_result);
printf(“a*a+b*b=%d,a*an”,add_result,sub_result)
}
floatcalculate(floatx,floaty,float*sub)添加函数类型
sub=a*a-b*b;
*sub=a*a-b*b;
temp=a*a+b*b;
return*temp;
returntemp
(2)统计N个字符中大写字母和数字字符的个数
#include<
stdio.h>
#defineN5
Count(char*str,int*result);
添加函数声明main()
charstring[N][80];
chari;
intCapital_Count=0,Num_Coun=t0;
需要初始化为0for(i=0;
i<
N;
i++)
scanf(“%s”,&
string[i]);
去掉&
符
for(I=0;
I<
I++)
Capital_Count+=Count(string[I],&
Num_Count);
Printf(“Capitalcountn”
Capital_Count,Num_Count);
Count(char*str,int*result)
inttemp,I;
inttemp=0,i;
temp应该初始化为0for(I=0;
80;
If(str[I]>
='
A'
str[I]<
Z'
)Temp++;
'
0'
||str[I]<
9'
)*result++;
returntemp;
四程序填空10分
(答案参考书中p85~86)
3
(1)利用公式sinx=x-x/3!
+x
x=0.5,n=20
#include<
main()
floaty,s,x,d,t;
intn,I,j;
scanf(“%d%”f,&
n,&
x);
s=1.0;
for(I=2;
n;
d=t=;
for(j=1;
;
j++)
d=;
t=;
}s=(-1)*s;
y+=;
(2)利用库函数char*strstr(char*sl,char*s2)在给定字符串中查找子串最后(最右)一次出现的位置。
如果S2并没有出现在S1的任何地方,函
数返回一个NULL指针。
如果第二个参数是一个空字符串,函数就返回S1;
注:
库函数charstrstr(char*s1,char*s2),这个函数在S1中查找子字符串S2第一次出现的起始位置,并返回一个指向该位置的指针。
如果S2并没有出
现在S1的任何地方,函数返回一个NULL指针。
如果第二个参数是一个空字符串,函数返回S1;
(答案见书中p196~197)
#include<
string.h>
voidmain(void){
charstr[80]=”ABCdabcdfgabc”;
char*p;
p=my_strrstr(str,”abc”);
printf(“%sn”,p);
p=my_strrstr(str,”“);
printf(“%sn”,p);
}char*my_strrstr(char*s1,char*s2)
char*last;
char*current;
if()
last=current=;
While();
{last=current;
current=;
}}returnlast;
五.写输出结果(20分)
(1)#include<
voidfun(int*,int);
voidmain(){
inta[]={5,6,7,8},i;
fun(a,4);
for(i=0;
4;
i++)printf("
%d\n"
a[i]);
voidfun(int*b,intn)
inti;
b[i]=i*2;
return;
2
4
6
(2)
voidmain()
inti,j,max;
introw=0,column=0;
inta[3][3]={{1,2,3},{2,-3,4},{9,4,7}};
max=a[0][0];
3;
for(j=0;
j<
if(a[i][j]>
max)
max=a[i][j];
row=i+1;
column=j+1;
}printf("
max=%d,row=%d,column=%d\n"
max,row,column);
(书中例题5.5,p123)
max=9,row=3,column=1
(3)
intn=1;
voidfunc();
staticintx=5;
inty;
y=n;
printf("
main:
x=%d,y=%d,n=%d\n"
x,y,n);
func();
voidfunc()
staticintx=4;
inty=10;
x=x+2;
n=n+2;
y=y+n;
func:
x=5,y=1,n=1
x=6,y=13,n=3
x=5,y=1,n=3
(4)#include<
structperson
charname[20];
intcount;
};
structpersonleader[3]={{"
li"
0},{"
zhang"
wang"
0}};
charname[20],m,n;
for(m=1;
m<
7;
m++)
scanf("
%s"
name);
for(n=0;
n<
n++)
if
(!
strcmp(name,leader[n].name))
leader[n].count++;
break;
\n"
);
for(m=0;
m<
%s:
leader[m].name,leader[m].count);
当程序运行时,键入情况如下:
Li
Wang
Lei
Zhang
写出程序的输出结果。
(基本上是书中例题)
Li:
Zhang:
1
Wang:
#include
<
char*name[]={"
capital"
"
index"
large"
small"
inta,b,n=4;
char*temp;
for(a=0;
a<
n-1;
a++)
for(b=a+1;
b<
b++)
{if(strcmp(name[a],name[b])>
0){
temp=name[a];
name[a]=name[b];
name[b]=temp;
在此之前是书中的例题7.19
输出时应该能够识别指针及偏移情况
a++)printf("
%s\n"
name[a]+a);
capital
ndexrge
ll
六、编写程序(35分)
(1)求一元二次方程ax+bx+c=0的根,实系数a,b,c从终端输入,只考虑两个不同实根和两个相同的实根(9分)
(书中例题3.4,p66'
67)
math.h>
voidmain()
floata,b,c;
floatx1,x2;
floatx3,x4;
floatm;
inputthenumbers:
a,b,c"
scanf("
%f%f%f"
&
a,&
b,&
c);
if(a==0)
theinputiserror!
return;
m=b*b-4*a*c;
if(m>
0)
{x1=(-b+sqrt(m))/(2*a);
x2=(-b-sqrt(m))/(2*a);
x1:
%.2fx2:
%.2f\n"
x1,x2);
elseif(m==0)
x1=x2=(-b+sqrt(m))/(2*a);
printf("
x1=x2=%.2f\n"
x1);
else
{x3=-b/(2*a);
x4=sqrt(m)/(2*a);
x1=%.2f+%.2fi\n"
x3,x4);
x2=%.2f-%.2fi\n"
其中a是调用所函数
(2)编写一个函数,求s=a+aa+aaa++aaaaaaaaaa,
个数字,例如2+22+222+2222(此时n=4)。
主函数a和n的输入,和输出所求的累加和;
编写的函数完成计算。
(9分)注意:
不得使用全局变量,注意程序结构
(书中习题3:
4。
16)
longCal(longa,longn);
main()
longsn=0;
longa,n;
pleaseinputan:
"
%d%d"
n);
sn=Cal(a,n);
a+aa+aaa+...+aa...a=%ld\n\n"
sn);
longintCal(longa,longn)
longsn=0,m=0;
m=m*10+a;
sn+=m;
returnsn;
(3)从十个字符串中找出所要的某个字符串,若能找到则把他删除,然后输出新字符串;
若未找到则输出“”cannotfond