内容正文:
第六章数组(B)
第六章
数
组(B)
一、理论测试题(每小题12分,其中输出格式占2分,共60分)
1.写出下面程序的运行结果。
#include <stdio.h
int main()
char ch={"12ab56");int i,s=0;
for(i=0;ch[i]>=0'&.&ch[i]<=9;i+=2)
s=10¥s+ch[i]-0;
printf("%d",s);
2.写出下面程序的运行结果。
include "stdio.h"
#include "string.h"
int main()
{inti=014;
int j=4.9;
char a]="\141\x62R\bcd",b[]="abc";
printf("%os\t%od
",a,j);
printf("size=%d\tcomp=%d
",sizeof(a),stremp(strepy(a,"abc12"),b));
printf("%dt%dn",(i=5+3,4+5,i+7),-i++);
3.写出下列程序的运行结果。(toupper功能:转大写)
#include <stdio.h
#include <ctype.h
int main()
{
char words[20]="Jiang",ch;
int sum=0,i;
for(i=0;words[i];+)
ch=toupper(words[i]);
switch((ch-65)/5)
case 0:sum+=1;break;
case 1:sum++=2;break;
case2:sum十=3;break;
case 3:sum++=4;break;
case 4:sum+=5;break;
default:sum+=6;
printf("%s\t",words);
printf("sum=%d",sum);
4.写出下列程序的运行结果。
#include<stdio.h
include<ctype.h
int main()
char s[]="one world one dream !"
int i,inword=0;
for(i=0;s];++i)
if(isalpha(s[i))
if(inword==0)
·25·
单招零距离·计算机专业综合测试卷·下册
{s[i]-=32;
inword=1;
putchar(s[i]);
else if(inword==1)
inword=0;
putchar();
putchar←!');
5.当程序运行时从键盘输入20501001<cr>,其中<cr>表示回车键,请分析运行结果。
#include <stdio.h>
int main()
{
char a[30];
inti=0,k=1,s=0;
char c;
gets(a);
do
{c=a[i]:
switch(c)
{case'1':k=k+2;
case 50:s+=2;break;
case'5':k++;continue;
default:s++;
case'0':k=k十2;
s+十;
while(aCi++]);
printf("i=%d\ts=%d\tk=%d",i,s,k);
6.随机产生20个【29,92】互不相同的整数,放在数组a中,再从键盘上输入两个整数m
和n(且m<n),然后对数组a中第m到第n个数进行降序排序后输出。请在横线上填写合适
的内容。
#include <stdio.h>
#include <stdlib.h
include <time.h>
int main()
int x,a[10],i,j,m,n,t;
srand((unsigned)time(NULL));
/*产生互不相同的随机数并输出*/
for(i=0;i<10;i++)
{a[i]=
(1)
for(j=i-1j>=0j--)
(2);
printf("Before sort:");
for(i=0;i<10;i++)
printf("%4d",ai);
printf("
");
scanf("%d%d",&m,&n);
/*将第m个数到第n个数排成降序后输出*/
for(i=m-1;i<n-1;i++)
for(Gj=m-1;(3)j++)
·26·
第六章数组(B)
if((4)
t=aLj];a[j]=a[j+1];a[j+1]=t;)
printf("After sort:")
for(i=0:i<10;i++)
printf("%4d",ai]);
printf("
");
二、技能测试题(第1题20分,第2、3题各30分,共80分)
1.程序填空题:函数fu的功能是:在形参s所指定字符串中的每个数字字符之后插入
一个$号。例如:形参s所指的字符串为:def35abh3 kjsdf?7。执行结果为:def3$5$adh3
$kisdf7$。
#include<stdio.h
void fun(char s[]
int i,j,n;
char t1[80],t2[80];
for(i=0;s[i]!=\0;i++)
/*米*米米米****SPACE*米米关0米米**米*/
if(s[i]>=0(1)s[i]<=9)
{n=0;
/米0米米米米米关关*米SPACE关关并米¥关0米米米米/
whilet(s[i+1+n]!=(2))
n十十;
for(j=i+n+1;j>i;j--)
/关米米米米米*米*米米SPACE关米米米米米米米米米米/
s[j+1]=(3)
/米*米米米米*米*0兴SPACE米米米米米米米米米**/
s(4)]=$':
i-i+1;
int main()
char s[80]="eba3af54cd23ak6";
printf("
The original string is:%s
",s);
fun(s);
printf("
The result is:%s
",s);
2.程序改错题:函数main()首先从键盘接收一串字符,以回车符结束串输入,并保存在变
量str1中,输入一个字符给变量ch;其次,调用fun()函数将字符串strl中的所有为ch字符
去掉;最后输出字符串strl。
#include <stdio.h
void fun(char str[」,char ch)
inti=0,j=0;
while(str[i]!=0)
{if(str[i]!=ch)
/米米米米米米*米装*米0米米米装*著FOUND米米兴*¥米米米米米米米米著兴
***关并
str[j++]=str[i++];
i+十;
/*关米米*米米****0*米0米**F0UJND黄*关米米关米**关*0关关
米米**兴/
str[i]=\0';
int main()
char str1[200,ch;
·27·
单招零距离·计算机专业综合测试卷·下册
int i=0;
/米茶养米关米*米米*米0并米关米*茶FOUND*米米米关米关0米茶”关0黄0
并关并关并/
while(strl[i]=getchar()!=
')
i++;
str1[i]=\0;
scanf("%c",&ch);
fun(strl,ch);
printf("%s
",str1);
3.程序设计题:编写程序,找出二维整型数组a[4][4]中每行元素的最大值,并将该元素
移动至该行首列。
编写函数:
①编写void findmax(inta[门[N],intn[门)函数,找出二维数组a中每行元素的最大值,
并将该元素的列下标存入数组n中,即第0行元素最大值的列下标存入[0],第3行元素
最大值的列下标存入n[3]。
②编写void move(inta[][N],intn[门)函数,根据数组n中保存的数据,将a数组中每行
最大值元素移动到该行首列,要求移动后该元素与该行其他元素的相对位置不变。
例如,a数组的初始数据为:
-21369
254011
-831016
47520
经过处理后a数组中数据为:
1369-2
254011
16-8310
20475
#include <stdio.h>
#include <stdlib.h
#define N4
void findmax(int a]N],int n){
/**********Pr0gram*****米米***/
/**米0关关00*关End关米米米英英00米米/
void move(int a[][N],int n[]){
/**米米米米米***Pr0gram米米*米**米米米米/
/**米米米米*米米米Ed米*米*米**米米米/
int main()
int i,j;
inta[N][N]={{-2,13,6,9},(25,4,0,11},{-8,3,10,16},{4,7,5,20},n[4;
findmax(a,n);
move(a,n);
for(i=0;i<N;i++)
for(j=0;j<N;j++)
printf("%d\t",a);
printf("
");
}
·28· {newnum=newnum∗10+sum1%10;
sum1/=10;
}
if(newnum==sum)
printf("newnum=%ld是回文数",newnum);
else
printf("newnum=%ld 不 是 回 文 数",newG
num);
第五章 循环结构(二)
一、理论测试题
1.5,30,91
2.sum1=-3,sum2=10
3.7,12,12
4.IloveBeiJing
OlympicGames!loveOlympicGames!
5.①num ②100 ③0 ④sum1
二、技能测试题
1.(1)z%j==0 (2)x
2.(1)i=left==1? left+1:left;
(2)break;
(3)if(j>k)printf("%d\t",i);
3.
intx,num,p,left,right,mid,newnum;
scanf("%d",&x);
if(x>=10)
{num=x;
p=1;
while(num>=10)
{num/=10;
p=p∗10;
}
left=x/p;right=x%10;
mid=x%p/10;
newnum=right∗p+mid∗10+left;
}
elsenewnum=x;
printf("x=%d,newnum=%d",x,newnum);
第六章 数 组(A)
一、理论测试题
1.1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
2.3 2 5
3.Japan
chinafranch
4.i=0,k=2
sum=sum+s[i]
k++,sum=0
5.if(a[j]==a[i])i--;
for(j=0;j<20-i;j++)
f==0&&l<=r
p=m
二、技能测试题
1.(1)1
(2)a[i]%2==1
(3)break
2.(1)floatfun(intn)
(2)for(i=2;i<=n;i++)
(3)A =1.0/(1+A);
3.while(str[i+n-1])
{str[i-1]=str[i+n-1];
i++;
}
str[i-1]='\0';
第六章 数 组(B)
一、理论测试题
1.1
2.abcd 4
size=7 comp=1
15 -12
3.Jiang sum=10
4.OneWorldOneDream !
5.i=9 s=15 k=16
6.(1)rand()%64+29
(2)i--或i--,break
(3)j<n+m-2-i
(4)a[j]<a[j+1]
二、技能测试题
1.(1)&&
(2)0或'\0'
(3)s[j]
3
总复习方案参考答案
(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
单招零距离计算机专业综合测试卷下册