内容正文:
综合测试卷一
一、理论题
1.①平方根
②函数声明
③判断是否是数字字符
④4 5 2
2.i=6 s=16 k=4
3.b=10,a=5
b=19,a=4
c=9
4.①"%f",&score[i][j]
②score[i][0]
③j=i;j<=mm;j++
④avestu[j+1]
5.①(fp=fopen("file.dat","w"))==NULL
②ch,fp
③(ch=getc(fp))
④ch=='||ch=='\t'
二、技能题
1.(1)++i
(2)a[j]<10
2.(1)if(i<=n/2)
(2)a[i][j]=a[n-i-1][j];
(3)}while(n%2==0||n>=30);
3.参考程序如下:
intfind(inta[])
{inti,j,head,p,t;
for(head=0,i=N-1;i>=head;)
{ p=a[i];
t=0;
while(p)
{ t=t∗10+p%10;
p/=10;
}
if(t==a[i])
{ for(j=i-1;j>=0;--j)
a[j+1]=a[j];
a[0]=t;
++head;
}
else --i;
}
returnhead;
}
voidchange(inta[],intn)
{ inti,right,left;
for(i=n;i<N;++i)
{ left=8; right=16;
while(right<a[i])
{ left=right;
right∗=2;
}
a[i]=(a[i]-left<=right-a[i]? left:
right);
}
}
综合测试试卷二
一、理论测试题
1.①isdigit()
②220
③Prime()函数的声明
④12 9 34
2.Olympics sum=23
3.①chars[] ②s[i]==s[i+1]
③count1==w ④ToSeeOrder(str)
4.①strmaxlen ②num>maxlen
③ch[k--] ④left++,right--
5.alpha=C
A或a出现次数为3
B或b出现次数为2
C或c出现次数为4
X或x出现次数为1
二、技能测试题
1.(1)i+=2
(2)i∗j<=N
2.(1)if(s[i-1]=='-')sign=-1;elsesign=1;
(2)sum=sum∗10+s[i++]-'0';
(3)p=p∗0.1;
3.voidabstract(charstr[][30],inta[][30],intcount[])
{
/∗∗∗∗∗∗∗∗∗∗∗∗Program∗∗∗∗∗∗∗∗∗∗∗∗/
inti,j,sum,n,k;
7
总复习方案参考答案
for(i=0;i<4;i++)
{k=0;
for(j=0;str[i][j];j++)
{
if(str[i][j]=='#')
{j++;
sum=0;n=0;
while(str[i][j]>='0'&&str[i][j]<='9'||str[i][j]>='A'&&str[i][j]<='F'||str[i]
[j]>='a'&&str[i][j]<='f')
{if(str[i][j]>='0'&&str[i][j]<='9')
sum=sum∗16+str[i][j]-'0';
elseif(str[i][j]>='A'&&str[i][j]<='E')
sum=sum∗16+str[i][j]-'A'+10;
else
sum=sum∗16+str[i][j]-'a'+10;
j++;n++;
if(! (str[i][j]>='0'&&str[i][j]<='9'||str[i][j]>='A'&&str[i][j]<='F'||str
[i][j]>='a'&&str[i][j]<='f'))
break;
if(n==2)break;
}
if(n! =0)a[i][k++]=sum;
}
}
count[i]=k;
}
/∗∗∗∗∗∗∗∗∗∗∗∗ End ∗∗∗∗∗∗∗∗∗∗∗∗/
}
intjudgeprime(inta[][30],intcount[],intprime[30])
{
/∗∗∗∗∗∗Program∗∗∗∗∗∗/
inti,j,flag,k,num=0;
for(i=0;i<4;i++)
for(j=0;j<count[i];j++)
{flag=1;
for(k=2;k<a[i][j];k++)
{if(a[i][j]%k==0)
{flag=0;break;
}
}
if(flag==1)
prime[num++]=a[i][j];
}
returnnum;
8
单招零距离计算机专业综合测试卷下册
/∗∗∗∗∗∗∗∗∗∗∗∗ End ∗∗∗∗∗∗∗∗∗∗∗∗/
}
综合测试试卷三
一、理论测试题
1.(1)嵌套 (2)长整型
(3)静态 (4)s=13
2.a=2 b=7 c=4
3.1∗1=1
1∗2=2 2∗2=4
1∗3=3 2∗3=6 3∗3=9
1∗4=4 2∗4=8 3∗4=12 4∗4=16
1∗5=5 2∗5=103∗5=15 4∗5=20 5∗5=25
4.20 23 24 27
5.①(st=fopen(“D:\\test\\score.txt”,”r+”))
②strcpy(name[j],name[j+1])
③j>=0&&at>avestu[j]
④fprintf(st,”%f
”,avestu[i])
二、技能测试题
1.①intcat(longintc[]);
②cat(catlan);
③s=s+c[j]∗c[i-1-j];
④s<=2e6或s<=2000000
2.(1)pos=LEN-2;
(2)s[pos--]='-';
(3)s[pos]=';或s[pos]=32;
3.intfind(intx,intn)
{ inti,j,k;
x=(x%2==0?x+1:x+2);
for(i=0;i<n;x+=2)
{ k=(int)(sqrt(x));
for(j=3;j<=k&&x%j;j+=2);
if(j>k)++i;
}
returnx-2;
}
voidcut(intp[])
{ intj=0,k,q=1;
k=p[2]/10;
while(k>10)
{ j=j+k%10∗q;
k/=10;
q∗=10;
}
p[3]=j;
}
9
总复习方案参考答案
综合测试卷二
综合测试卷二
一、理论测试题(每小题12分,共5小题,共60分)
1. 阅读下列程序,回答下列问题
10 #include "stdio.h"
20 #include "math.h"
30
#include"ctype.h"
40 #defineN5o
50 int Prime(int x);
60 int main()
70 (char ch[N]-("
12AC,7hj37gf 9jk34kljjhg29");
80 int a2o],i,sum,count=0;
90 i-0;
100
while(chi])
110
(if(isdigit(ch[i门))
120
(sum-0;
130
while(isdigit(ch[i]))
140
sum=sum*10+ch[i++]-0;
150
acount十十-sum
160
)
170
elsei+十;
180
)
190
for(i-0:i<count;i十十)
200
if(Prime(ai门))
210
printf("%5d",ai)
220
230
int Prime(int x)
240
(int i;
250
for(i-2;i<=sart(x);i++)
2600
if(x%i--0)
270
break;
280
return i-sart(x);
290)
.69·
单招零距离·计算机专业综合测试卷·下册
①ctype.h头文件是上述程序的哪个函数要用
②该程序从哪一行结束
③50句的作用是
④该程序的执行结果是
2. 阅读下列程序写出程序运行结果。
共include <stdio.h>
#include<ctype.h>
int mainO)
char words[2o]="Olympics",ch
int sum=0,i;
for(i-0;words i];i++)
(ch=toupper(words[i]);
switch((ch-65)/5)
{case 0:sum十-5;break
case 1:sum+-4:break;
case 2:sum+-3:break
case 3:sum+-2;break
case 4:sum+-1;break;
default:sum+=-1;
~
~
printf("%s\t",words);
printf("sum=%d",sum);
)
3. 阅读下列程序,完成所缺代码。程序实现判断数组中的字符是否有序存放。
#include<stdio.h>
#include<string.h>
共define N 20
int ToSeeOrder(①)
_
int i.countl,count2:
int w- strlen(s)-1;
count1-count2-0:
for(i-0:i<w:i十+)
.70.
综合测试卷二
if(
②
count1十十;count2+十;
)
else if(si<si+1]
count1十十;
else
count2十十;
if( ③
))return 1;
else if(count2<w)return0;
else return -1;
___
int maino)
_
char strN:int f
gets(str);
f
puts(str);
if(f>0)printf("升序
”);
else if(f<0)printf("降序n”)
elseprintf("无序n");
)
4. 本程序从键盘上输入一串单词,单词之间有一空格,求出最长单词、单词数及最长单词
的字母数。
如输人:I lovechina.
则输出:maxlenword- china
count-3,maxlen-5
(1)函数intcountword(charch,charstrmaxlen);求出单词数,且把最长单词的字母
放入strmaxlen中。
(2)函数yoidreverse(char ch);把ch中的字符逆序
完成下列所缺代码。
共include"stdio.h"
共include"string.h"
共define N 100
.71)
单招零距离·计算机专业综合测试卷·下册
int countword(char ch[,char strmaxlen);
void reverse(char ch)
int maino)
(char str N],strmaxlen[ 10]
int count;
printf(”请输入一串单词,单词之间有一空格隔开:”)
gets(str);
count=countword(str, strmaxlen);
reverse(_①);
printf("maxlenword-%s",strmaxlen)
printf(" ncount-%d,maxlen=%d",count,strlen(strmaxlen))
)
int countword(char ch[,char strmaxlen[)
int i,num,count,k,newnum,next,maxlen=0
count-0,num-0;
for(i-0;chi;i十十)
(if(ch[i]!一)num十十;
ifchi]!=&&(ch[i+1== ch[i+1]==o llch i+1=)
(count十十;
if(②)
{maxlen-num
k-i;newnum-num;
next-0;
while(newnum)
(strmaxlennext+十1=
③
newnum--;
)
strmaxlennext -0'
~_
num-0;
(__
)1
return count:
.72·
综合测试卷二
void reverse(char ch)
(int left,right;
char temp;
left-0;
right-0;
while(chright )right++;
right--;
while(left<right)
temp=ch left ];
ch[left ]=ch[right];
ch[right]-temp;
4
)
5. 阅读下面程序写出程序输出屏幕结果。假如:in.txt中内容为:ab12c1ab16caCxc
井include"stdio.h"
井include"ctype.h"
井include."stdlib.h"
#define N 100
void ReadFile(char str):
void Count(char str],int a]);
int Max(int a);
void WriteFile(int a)
int mainO)
(int a[26]-(0,i,k,maxp;
char ch[N];
ReadFile(ch);
Count(ch,a);
maxp-Max(a);
printf("alpha-%c
",maxp十A);
WriteFile(a);
)
void ReadFile(char strT)
.73
单招零距离·计算机专业综合测试卷·下册
(FILE*fpr
if((fpr=fopen("c:\in.txt","r”))==NULL)
(printf("open in.txt error")
exit(o);
)
fgets(str,N,fpr)
fclose(fpr);
)
void Count(char str[],int a]
fint i,k-0;
for(i-0;stri!=o';i十+)
if(stri>=a'&.&stri<=z)
k=toupper(stri)-A:
else
k=stri]一A;
ak]十十;
)
)
int Max(int a[)
fintp-0,i;
for(i-0;i<26;i++)
if(ai]>ap])p-i;
return p;
~
void WriteFile(int a)
(FILE*fpw;
int i;
if((fpw=fopen("c: out.txt","w”))=-NULL)
(printf("open out.txt error");
exit(0);
.74·
综合测试卷二
_~
for(i-0:i<26;i+十)
if(ai]!-0)
(printf("%c或%c出现次数为%dn”,i十A',i十a',a[i]);
fprintf(fpw,"%c或%c出现次数为%d
”,i十A',i十a',a[i)
)
fclose(fpw);
)
二、技能测试题(第1题20分,第2、3题各30分,共80分)
1. 程序填空题:函数Search(intpre)的功能是:找出[2,N之间的素数,存放在pre中.
函数最终返回pre中的素数个数。
例如:当N为50时,程序运行结果如下:
2 35711
13 1719 23 29
31 37 41 43 47
#include<stdio.h>
共include<string.h>
#include<math.h>
#include<ctype.h>
#include<stdlib.h
#define N 50
int Search(int pre])
inti,j,h-0;
int flag[N+1];
for(i-0:i<-N:+十i)
flagi]-1;
preo]-2;
for(i-3;i<-N;
if(flagi])
(_
pre十十]-i;
.75)
单招零距离·计算机专业综合测试卷·下册
/*关*关*******¥* *SPACE*
关 苦 关 关 关 关 关 关 关 关
for(i-2;
;j十-1)
flagi*j]-0;
_
_
return k+1:
~
int mainO)
_
int i,prime N/2
int n;
n=Search(prime);
for(i-0;in;++i)
,_
printf("%4d",primeli)
if(0==(i+1)%5)
printf("
");
__
printf("
");
return0;
_
2. 程序改错题:从字符串s中提取所有的正负号、数字和小数点等组成的子串,将其转换
为实数存储到数组a中,然后对其排序。排序规则为:按照整数部分绝对值升序排序,整数部
分绝对值相等时,按小数部分绝对值降序排序
例如:字符串s为”abc34.5y-3.8-.03hh-a125-0.55ASgf-3共"
程序运行结果为
-0.5500 -0.0300 -3.8000
-3.0000 34.5000 125.0000
函数intfun(chars,doublea)功能为:将字符串s中提取所有的正负号、数字和小数
点等组成的子串转换为实数存储到数组a中,函数返回提取的实数个数。
#include<stdio.h>
#includestring.h>
#includemath.h>
共include<ctype.h>
#include<stdlib.h>
.76.
综合测试卷二
int fun(char s,double a)
(_→
int i,k-0;
double sum,p, sign;
i-0;
while(si])
(if(isdigit(s[i]))
(sum-0;
/*关 * FO$UND* * *关 *$
if(si]-=.-)sign--1;else sign=1;
if((si-1]==:&8si-2]-=-))
(sign--1;goto 1;)
while(isdigit(si))
/* 关* 关关*FOUND* **关 关关*
sum=sum*10+si++];
if(s[i十十]-=:)
(1:p-0.1;
while(isdigit(si))
(sum=sum十(si十十]-0)*p;
/*关¥¥*关 * $* **FOUND* 关 关$关*关* *$* **
p-p*10;
~
)
ak十十]-sum*sign;
)
elsei十十;
~
return k;
_
int maino)
char s1-"abc34.5y-3.8-,03hh-a125-0.55ASgf-3+”
int i,j,n;
FILE*fp;
if((fp-fopen("DATA.dat","w"))--NULL)
(_
.77·
单招零距离·计算机专业综合测试卷·下册
printf("File open error
");
exit(0);
)
double a10]-0),t
n-fun(s,a);
for(i-0;i-n-2;i++)
for(i-i计1;j<-n-1;j+十)
if((int)fabs(a[i])>(int)fabs(a[j]) | l(int) fabs(ai])==(int)fabs(a[j])&.&.fabs(a
[i)-(int)fabs(ai)<fabs(a[i)-(int)fabs(ai))
_
t-ali];
ai]-a□i门;
ai]-t;
~
for(i-0;i<n;i十十)
printf("%.4f ",a[i]);
fprintf(fp,"%.4f ",a[i]);
__
fclose(fp);
return0;
_
3. 程序设计题:主函数二维数组str4门[30中存放了4行字符串,程序将str中每行的字
符串中以共开头的1一2位十六进制字符转换成十进制数。
如:技4Ad,则十六进制字符为4A,转换为十进制数为74
共5,则十六进制字符为5,转换为十进制数为5
技b4df,则十六进制字符为b4,转换为十进制数为180
G2,则不认为是十六进制字符;
编写函数:
1. void abstract(char str[][3o],int a[][3o],int count[])对str中的字符串按上述要求
转换成十进制数,放入二维数组a相应的行中。每行转换后产生的十进制数个数放入数组
count中。
2. int judgeprime(inta[][30],intcount[,int prime[30])统计出二维数组a中的素数放
入prime数组中,函数返回素数的个数,count数组元素值为数组a中每行含有的数据个数。
程序运行结果如下:
.78.