内容正文:
第七章函数(A)】
第七章函
数(A)
一、理论测试题(每小题12分,其中输出格式占2分,共60分)
1.阅读程序,回答问题。
(1)/*求两数中较大数程序*
(2)#include <stdio.h
(3)int max(int x,int y)
(4){
(5)int z;
(6)z=x>y?x:y:
(7)return z;
(8)}
(9)int main()
(10){
(11)int a,b,c;
(12)
scanf("%d,%d",&.a,&.b);
(13)
c=max(a,b);
(14)printf("较大数是:%d八n",c):
(15)}
上述程序中,(2)行处的“stdio.h”称为①
文件,函数scanf()和printf()都是
stdio.h中的
②函数:(13)行中的“a”和“b”是函数max()的
③参数:该程序
运行后,若输人数“3,5”并回车,可得到的运行结果是:④
2.写出下列程序的运行结果。
#include<stdio.h
inta=1,c=0,k=1:
int f(int c)
static int a=2;
c++;
return(-a+十十c);
int main()
static int i,k=0;
for(:i<3:i++,k++)
int a=3;k+=f(a);)
·29·
单招零距离·计算机专业综合测试卷·下册
k+=a;
printf("%d小n",k):
}
3.写出下列程序的运行结果。
#include <stdio.h
#include <string.h
void fun(char q[][20],int N)
int i,j;
for(i=0:i<N-1;i++)
{j=0:
while(q[i]])j++;
if(stremp(qli],qli+1])>0)
strcat(q[i],q[i+1]);
strcpy(q[j],q[i]);
}
int main()
char p]20]="abe","bdefg","abcd123","456ace","#$%");
int i,j:
fun(p,5);
for(i=0;i<5;i++)
puts(p[);
printf("%d",strlen(p[i-4]));
}
4.写出下列程序的运行结果。
#include "conio.h"
#include "stdio.h"
int b=2;
int main()
void f(int x);
int a=1;
printf("a=%d,b=%d
",a,b);
f(a);
int a=3;
f(a):}
printf("a=%d,b=%d
",a,b)
·30·
第七章函数(A)】
}
void f(int x)
static int b=10;
b=b十x;
printf("b=%d
",b);
}
5.以下程序是将十进制数转换成十六进制数。请完善程序。
#include "stdio.h"
#include "string.h"
void cl0l6(char p[☐,intb):
int main (
int a,i;
char s[20];
printf("input a integer:
");
scanf("%d",&a):
c10_16(s,a);
for(
printf("%c",s[i门):
printf("
"):
}
void cl0_l6(char p[」,intb)
int j,i=0;
while
{
j=b%16:
if(j>=0&.&j<=9)
else
p[i]=j+55:
b=b/16;
i++;
二、技能测试题(第1题20分,第2、3题各30分,共80分)
1.程序填空题:输入一字符串,检查字符串是否满足以下条件:
·31·
单招零距离·计算机专业综合测试卷·下册
(1)字符串s中左括号“(”的个数与右括号“)”的个数相同:
(2)从字符串s的首字符起顺序查找右括号“)”的个数在任何时候均不超过所遇到的左括
号“(”的个数。若字串同时满足上述两个条件,函数返回1,否则返回0。
#include<stdio.h
#include<string.h
int main()
{int fun(char s[☐);
char s[80];
int c;
printf("Please input the string:");
gets(s);
c=fun(s);
printf("c=%d八n",c);
}
int fun(char s[])
int cl,c2,i;
i=cl=c2=0:
while(s[i]!=\o)
{if(s[i]==()cl++;
else if(sti]==))
{c2++;
/米米米米米**¥关米米SPACE第关米¥关米第¥米米
if((1))return(0);
i++:
/兴米¥米*关*兴兴米米SPACE关光兴米*米米米米米米7
return((2));
2.程序改错题:题目:下面的程序中,函数fun的功能是:从低位开始取出长整型变量s中
奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的
数为:654321时,t中的数为:531。
#include <stdio.h
#include <stdlib.h>
#include <time.h
#include <math.h>
·32·
第七章函数(A)
/0关米米关米米弟并0关FOUND米米米关关关并关关关并
void fun (long);
long getnumber():
int main()
long s,t;
srand((unsigned)time(NULL));f初始化随机数时间序列
s=getnumber();(随机获取一个长整数
t=fun(s);
printf("The result is:%ld,%ld
",s,t);
long fun (long s)
long t=0;
/米米米米米关关米米米米FOUND类0*英米关米米*关*
long step=10;
while (s >0)
{t=t十s%10*step;
step=10 step;
/关米米*为**米米米米F()UND关***米米米米**米/
s=s/10:
return t;
}
long getnumber()
int i,k;
long n=0;
k=rand()%4+5:
for(i=0;i<k;i++)
while(n==0)
n=10¥n+rand()%10;
n=10*n+rand()%10;
return n;
3.程序设计题:主函数main()中由数字与字母组成的字符串s为测试数据,程序主要将
字符串s中字符复制到字符数组t中,下标为偶数位置上的字母字符复制两次,其余字符复制
一次:然后判断字符串1中所包含数字子串对应的整数是否是“平方镜反数”。
·33·
单招零距离·计算机专业综合测试卷·下册
例如:字符串s为"g12bc32fA31",按上述规则,则字符串t为"gg12bcc32fAA31"。
平方镜反数:该数的平方与该数的反序数的平方互为反序数。
例如:12的平方等于144,12的反序数21的平方等于441,则12就是一个“平方镜反数”。
编写程序:
(I)编写函数void GenStr(char s[」,char t[门),按上述要求生成新的字符串,结果保存在
字符数组t中。
(2)编写函数int TestFanshu(char t[门,intb[]),判断字符串t中所包含数字子串对应的
整数是否是平方镜反数,将平方镜反数保存在数组b中,函数返回平方镜反数的个数。
#include<stdio.h
#include<stdlib.h
#include<ctype.h
#include<string.h>
#define N80
void GenStr(char s[,char t])
{/米米米**关兴米*米Pr0gram为*****米**/
/¥兴关米*¥兴米关米End关米第茶米为0**米/
int TestFanshu(char t],int b])
{/¥¥0米*¥*米米¥Pr0gram%米米**0米米米米
/关米关关并*¥兴关米Ed兴米米米米**米米*方
int main()
char s[]="g12bc32fA31";
char t[N];
int bN]=0);
int num=0,i=0;
FILE fp:
if((fp=fopen("DATA.TXT","w"))==NULL)
·34·
第七章函数(A)】
printf("File open error
");
exit(0);
}
GenStr(s,t);
printf("The string t is:%s
",t):
fprintf(fp,"The string t is:%s
",t);
num=TestFanshu(t,b);
printf("The pingfangjingfanshu is:")
fprintf(fp,"The pingfangjingfanshu is:")
for(i=0;i<num;i+)
{printf("%d "bi]):
fprintf(fp,"%d "bi);
}
printf("
"):
fprintf(fp,"
");
fclose(fp);
·35·(4)i或j+1
2.(1)str[j++]=str[i];
(2)str[j]='\0';
(3)while((str1[i]=getchar())! ='
')
3.(1)inti,j,max,maxl;
for(i=0;i<N;i++)
{ max=a[i][0];maxl=0;
for(j=1;j<N;j++)
if(a[i][j]>max)
{ max=a[i][j],maxl=j;
}
n[i]=maxl;
}
(2)inti,j,max,maxl;
for(i=0;i<N;i++)
{ max=a[i][0];maxl=0;
for(j=0;j<N;j++)
if(a[i][j]>max)
{ max=a[i][j],maxl=j;
}
n[i]=maxl;
}
第七章 函 数(A)
一、理论考试题
1.(1)标准输入输出头文件
(2)输入输出
(3)实际
(4)较大数是:5
2.7
3.Abc
Bdefgabcd123
Abcd123abc
Abc#$%
#$%
12
4.a=1,b=2
b=11
b=14
a=1,b=2
5.(1)i=strlen(s)-1;i>=0;i--
(2)b
(3)p[i]=j+48;
(4)p[i]=’\0’;
二、技能考试题
1.(1)c2>c1或c1<c2
(2)c1==c2或c2==c1
2.(1)longfun(long)或longfun(longs)
(2)longstep=1;
(3)s=s/100;
3.voidGenStr(chars[],chart[])
{inti=0,n=0,len=0;
len=strlen(s);
while(i<len)
{if(i%2==0)
{if('A'<=s[i]&&s[i]<='Z'||'a'<=s
[i]&&s[i]<='z')
{t[n++]=s[i];
t[n++]=s[i];
}
else
t[n++]=s[i];
}
else
t[n++]=s[i];
i++;
}
t[n]='\0';
}
intTestFanshu(chart[],intb[])
{intp=0,m=0,n=0,q=0,sum=0;
inti=0,num=0;
while(t[i])
{if('0'<=t[i]&&t[i]<='9')
{sum=0;
while('0'<=t[i]&&t[i]<='9')
{sum=sum∗10+t[i]-'0';
i++;
}
p=sum;
q=0;
while(p)
{q=q∗10+ p%10;
p=p/10;
}
n=0;
m=sum∗sum;
while(m)
{n=n∗10+ m%10;
4
单招零距离计算机专业综合测试卷下册
m=m/10;
}
if(q∗q==n)b[num++]=sum;
}
else
i++;
}
returnnum;
}
第七章 函 数(B)
一、理论测试题
1.(1)符号
(2)调用
(3)实际
(4)print(s)
2.i=2 j=2
i=2 j=0
1 3 5 7 9
3.k=25,k=49,k=60
4.1 6 120 s=135
5.(1)rq[2]>md[rq[1]-1]
(2)b[k--]=x%2+'0'
(3)strcpy(b,"error")
(4)split(a[i],b[i])
二、技能考试题
1.(1)l<=h或x==a[m]
(2)sizeof(a)/sizeof(int)
(3)a[i]>a[j]
(4)p=search(a,n,x)
2.(1)len=strlen(s);
(2)c[k]=t%2+48;或c[k]=t%2+'0';
(3)if(flag)或if(flag==1)或if(flag! =0)或if
(t>1)或if(t>=2)
3.intGenStr(chars[],inta[])
{ inti,x,y,t,max,jz,p;
for(i=0;i<strlen(s)-1;i++)
{ y=x=s[i]+s[i+1];
max=-1;
while(x)
{ if(x%10>max) max=x%10;
x/=10;
}
jz=max+1;p=1;t=0;
while(y)
{ t=t+y%10∗p;
y=y/10;
p=p∗jz;
}
a[i]=t;
}
returni;
}
intishz(intm,intn)
{ intt;
while(t=m%n)
{ m=n;n=t;
}
returnn==1;
}
intCalculate(inta[],intn,intb[][2])
{ inti,j,k=0;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(ishz(a[i],a[j]))
{ b[k][0]=a[i];
b[k][1]=a[j];
k++;
}
returnk;
}
第八章 文件一
一、理论测试题
1.98 76
2.IloveCHINA
3.(1)r (2)"d:\\file2.txt","w"
(3)ch,fpw2 (4)fgetc(fpw1)
4.abcdef
5.(1)c:\\test2.txt","w" (2)a (3)i++
(4)fprintf(fp2,"%c
",s+'A'-10)
二、技能测试题
1.(1)16∗num+st[i]-'0'
(2)"d:\\file1.txt","a+"
2.(1)FILE ∗fp1,∗fp2;
(2)if((fp1=fopen("d:\\test1.txt","r"))==
NULL)
(3)if(test_st(str))
5
总复习方案参考答案