C.a>10&&a<15D.!
(a<=10)&&!
(a>=15)
3.当调用函数时,实参是一个数组名,则向函数传送的是()。
A.数组的长度B.数组的首地址
C.数组每一个元素的地址D.数组每个元素中的值
4.执行下面的程序段后,k的值是()
intk=1,n=325;
do{k*=n%10;n/=10;}while(n);
A.3B.30C.523D.325
5.若有以下数组说明,则i=6;a[a[i]]元素数值是( )。
inta[12]={1,4,7,10,2,5,8,11,3,6,9,12};
A.3B.8C.6D.5
6.若变量已正确定义,要求程序段完成求5!
的计算,不能完成此操作的程序段是()
A.for(i=1,p=1;i<=5;i++)p*=i;
B.for(i=1;i<=5;i++){p=1;p*=i;}
C.i=1;p=1;while(i<=5){p*=i;i++;}
D.i=1;p=1;do{p*=i;i++;}while(i<=5);
7.若有:
inta[][3]={{1,2,3},{4,5},{6,7},{8}};则数组a的第一维的大小为:
()
A.12B.3C.4D.无确定值
8.设有如下程序段,则执行p=s;语句后,以下叙述正确的是()。
chars[20]=“Bejing”,*p;
p=s;
A.可以用*p表示s[0]
B.s数组中元素的个数和p所指字符串长度相等
C.s和p都是指针变量
D.数组s中的内容和指针变量p中的内容相等
9.以下正确的函数定义是()。
A.doublesum(intx,inty)B.doublesum(intx,y)
{z=x+y;returnz;}{intz;returnz;}
C.sum(x,y)D.doublesum(intx,inty)
{intx,y;doublez;{doublez;
z=x+y;returnz;}z=x+y;returnz;}
10.已知学生信息描述为
structstudent
{
intno;
charname[20];
charsex;
struct{intyear;intmonth;intday;}birth;
};
structstudents;
设变量s中的“生日”应是“1984年11月11日”,下列对“生日”的正确赋值方式是()。
A.year=1984;month=11;day=11;
B.birth.year=1984;birth.month=11;birth.day=11;
C.s.year=1984;s.month=11;s.day=11;
D.s.birth.year=1984;s.birth.month=11;s.birth.day=11;
11.下列数据中,为字符串常量的是()。
A.′A′B.Howdoyoudo.C."A"D.$abc
12.break语句表示中止,但不是中止()语句。
A.switchB.doC.ifD.for
13.执行以下程序段后,输出结果和a的值是()。
inta=10;
printf("%d",++a);
A.10和10B.10和11C.11和10D.11和11
14.有定义语句:
intx,y;若要通过scanf("%d%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,正确的是()。
A.1112<回车>B.11,<空格>12<回车>
C.11,12<回车>D.11,<回车>12<回车>
15.下列定义数组的语句中,正确的是( )。
A.intx[0..10];B.intx[];
C.#defineN10D.intN=10;
intx[N];intx[N];
16.若已定义x为int类型变量,下列语句中说明指针变量p的正确语句是()。
A.intp=&x;B.int*p=x;C.*p=*x;D.int*p=&x;
17.以下不是无限循环的语句为()。
A.for(y=0,x=1;x>++y;x=i++)i=x;
B.for(;;x++=i);
C.while
(1){x++;}
D.for(i=10;;i--)sum+=i;
18.有以下函数,函数的功能是( )。
intfun(char*x,char*y)
{ intn=0;
while((*x==*y)&&*x!
='\0'){x++;y++;n++;}
returnn;
}
A.将y所指字符串赋给x所指存储空间
B.查找x和y所指字符串中是否有'\0'
C.统计x和y所指字符串中最前面连续相同的字符个数
D.统计x和y所指字符串中相同的字符个数
19.语言中,定义结构体的保留字是()。
A.unionB.structC.enumD.typedef
20.应用缓冲文件系统对文件进行读写操作,关闭文件的函数名为()。
A.openB.fopenC.closeD.fclose
21.在C语言中,if语句后的一对原括号中,用以决定分支的流程的表达式()。
A.只能用逻辑表达式B.只能用关系表达式
C.只能用逻辑表达式或关系表达式D.可用任意表达式
22.假设所有变量均为整型,表达式:
a=2,b=5,a>b?
a++:
b++,a+b的值是()。
A.7B.8C.9D.2
23.若有如下代码,则a的值为()。
inta=1,b=2,c=3;
if(a>b)a=b;
if(a>c)a=c;
A.1B.2C.3D.不一定
24.假定所有变量均已正确定义,下列程序段运行后x的值是()。
k1=1;k2=2;k3=3;x=15;
if(!
k1)x--;
elseif(k2)x=4;
elsex=3;
A.14B.4C.15D.3
25.以下for循环的执行次数是for(x=0,y=0;(y=123)&&(x<4);x++);()。
A.是无限循环B.循环次数不定C.4次D.3次
26.以下运算符中,优先级最高的运算符是()。
A.||B.%C.!
D.==
27.能将高级语言编写的源程序转换成目标程序的是()
A.编译程序B.解释程序C.链接程序D.编辑程序
28.chara[10];不能将字符串"abc"存储在数组中的是()。
A.strcpy(a,"abc");B.a[0]=0;strcat(a,"abc");
C.a="abc";D.inti;for(i=0;i<3;i++)a[i]=i+97;a[i]=0;
29.以下程序段char*alp[]={"ABC","DEF","GHI"};intj;puts(alp[1]);的输出结果是()。
A.AB.BC.DD.DEF
30.若执行fopen函数时发生错误,则函数的返回值是()。
A.地址值B.0C.1D.EOF
二、读程序,写出程序的运行结果(6*3)
1.以下程序的输出结果是()。
#include
intmain()
{
intw=3,z=7,x=10;
printf("%d",x>10?
x+100:
x-10);
printf("%d",!
w>z);
printf("%d",w&&z);
}
2.以下程序的输出结果是()
#include
intmain()
{intx=-5,y=2,z=1;
if(xif(y<0)z=0;
elsez=z+1;
printf(“%d”,z);
}
3.以下程序的输出结果是:
()
#include"stdio.h"
intmain()
{
intj,k,x[4][4],y[4][4];
for(j=0;j<4;j++)
for(k=0;k<4;k++)
x[j][k]=j+k;
for(j=0;j<4;j++)
for(k=0;k<4;k++)
y[k][j]=x[j][k];
for(j=0;j<4;j++)
{for(k=0;k<4;k++)
printf("%d",y[j][k]);
printf("\n");
}
}
4.以下程序的输出结果是:
()
#include
intmain()
{inti,j;
for(i=j=1;j<10;j++,i++)
{
if(j==5)
break;
if(i%2)
continue;
printf("i=%d,j=%d",i,j);
}
}
5.若有以下程序段,则输出结果是( )。
#include
intmain()
{
chars2[]="\"c:
\\abc.dat\"";
printf(“%s”,s2);
}
6.以下程序的输出结果是:
()
#include
intfun(intn)
{ints;
if(n==1||n==0)s=5;
elses=n+fun(n-1);
returns;
}
intmain()
{
printf("%d",fun(3));
}
7.以下程序的输出结果是:
()
intmain()
{inta[]={2,4,6,8,10};
inty=120,x,*p;
p=&a[1];
for(x=0;x<3;x++)y+=*(p+x);
printf("y=%d",y);
}
8.以下程序的输出结果是:
()
#include
intmain()
{ints=0,n;
for(n=0;n<4;n++)
{switch(n)
{default:
s+=5;
case1:
s+=1;
case2:
s+=2;
case3:
s+=3;
}
}
printf("%d",s);
}
9.以下程序段运行后sum的值是:
()
#include
intmain()
{
inta[3][3]={{3,5},{8,9},{12,35}},i,sum=0;
for(i=0;i<3;i++)sum+=a[i][2-i];
printf("%d",sum);
}
10.以下程序的输出结果是:
()
#include
intmain()
{
inti=10,n=0,m=0;
do
{
if(i%2!
=0)
n=n+i;
else
m=m+i;
i--;
}while(i>=0);
printf("n=%d,m=%d",n,m);
return0;
}
11.以下程序的输出结果是:
()
#include
funa(inta)
{intb=0;
staticintc=4;
a=c++,b++;
return(a);
}
intmain()
{inta=2,i,k;
for(i=0;i<2;i++)
k=funa(a++);
printf("%d",k);
}
12.以下程序段的输出结果是:
()
#include
intmain()
{
inta=3,b=2,c=1;
if(a>b>c)a=b;
elsea=c;
printf("%d",a);
}
13.20.下列程序执行后的输出结果是()。
intmain()
{
inta[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p[i]=i+1;
printf("%d",a[1][2]);
}
14.以下程序的输出结果是:
()
#include
intmain()
{inti,f[10];
f[0]=f[1]=1;
for(i=2;i<10;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<5;i++)
printf("%d",f[i]);
}
15.以下程序的输出结果是:
()
#include
intmain()
{intm=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf("%d,%d,%d,%d",m,n,*p,*q);
}
16.以下程序的输出结果是:
()
#include
#include
intmain()
{
inti;
charstr[20]="abcdef";
strcpy(str,"opqrst");
str[5]='\0';
for(i=0;iputchar(str[i]);
printf("\n");
return0;
}
17.以下程序运行后输出的结果是:
()
intmain()
{inta[]={1,3,5,7,9,11};
intm,*ptr;
ptr=&a[0];
m=(*ptr)*(*(ptr+2))*(*(ptr+4));
printf("%d\n",m);
}
18.以下程序运行后输出的结果是:
()
#include
intt(intx,inty,intcp,intdp)
{
cp=x*x+y*y;
dp=x*x-y*y;
}
intmain()
{
inta=4,b=3,c=5,d=6;
t(a,b,c,d);
printf("%d%d",c,d);
}
三、程序填空(5*2*3)
1.将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。
例如:
当s串为"ABCD"时,则t串的内容应为"ABCDDCBA"。
#include
#include
voidfun(char*s,char*t)
{
inti,d;
d=;
for(i=0;it[i]=;
for(i=0;it[]=s[d-1-i];
;
}
intmain()
{
chars[100],t[100];
printf("\nPleaseenterstrings:
");
scanf("%s",s);
;
printf("\nTheresultis:
%s\n",t);
}
2.功能:
计算并输出high以内最大的10个素数之和,high由主函数传给fun函数,若high的值为100,则函数的值为732。
#include
intfun(inthigh)
{intsum=0,n=0,j,yes;
while((high>=2)&&())
{yes=;
for(j=2;j<=high/2;j++)
if()
{yes=0;
break;
}
if(yes)
{sum+=;
n++;
}
high--;
}
;
}
intmain()
{
printf("%d\n",fun(100));
}
3.下面给定程序的功能是:
从键盘输入的字符中统计数字字符的个数,用换行符结束循环。
请按要求把程序补充完整。
#include
intmain()
{intn=0,c;
c=;
while()
{if()
n++;
c=;
}
printf("个数字\n",n);
}
4.程序的功能是:
求矩阵的转置。
请按要求把空白部分补充完整。
#include
#include
intmain()
{inta[2][4]={1,3,5,7,2,4,6,8},b[4][2];
inti,j;
for(i=0;i<;i++)
for(j=0;j<;)
b[j][i]=;
for(i=0;i<;i++)
printf("%2d%2d\n",b[i][0],b[i][1]);
}
5.将100个整数进行逆置。
函数fun的功能是:
逆置数组元素中的值。
形参n给出数组中的数据的个数。
例如:
若a所指数组中的数据依次为:
1、2、3、4、5、6、7、8、9,则逆置后依次为:
9、8、7、6、5、4、3、2、1。
请按要求把空白部分补充完整。
voidfun(inta[],intn)
{ inti,t;
for(i=0;i<;i++)
{t=a[i];
a[i]=a[n-1-];
=t;
}
}
intmain()
{
inta[100];
for(i=0;i<100;i++)scanf("%d",);
fun();
for(i=0;i<100;i++)printf("%d",a[i]);
return0;
}
6.下面的程序是用选择法按由小到大排序。
#defineN8
intmain()
{ints[]={1,-3,0,-9,8,5,-20,3};
inti,j,k,t;
for(i=0;i{
;
for(j=i+1;j<;j++)
if(s[k]>s[j]);
if()
{t=s[k];s[i]=t;}
}
}
四、编程题(4*3)
1.计算下列公式的值并输出,x的值由键盘输入。
,直到
2.编程求方程3X+4Y=50的所有非负整数解。
3.从键盘输入一个只包含数字字符的最多10个字符的字符串,存入字符数组,请编程实现把该字符数组中的数字字符转换成相应的整数,并把该整数乘以2的值显示出来。
如:
输入"368"存入字符数组,把该数组转换成一个整数368,最后显示736。
字符串转换成整数。
输入时必须存放在一个字符数组中。
4.有一分数序列
求出这个数列的前30项之和。
5.定义一个二维数组,任意输入200个学生的数学、语文、英语、物理、化学5门课程的成绩,计算并输出每一门课程的平均成绩和每一位学生的平均成绩。
6.已知一个3*3的整型二维数组,输出数组元素中的最小值及其位置(不用考虑有多个相等的最小值的情况)。
要求:
数组元素的初值初始化如下:
,最小值是0,其位置是第1行第0列。
7.若一个字符串正读和反读都一样,如level、madam,则称之为回文字符串。
请编写程序,输入任意一个字符串,验证其是否为回文。
8.编写函数实现两个字符串的连接。
要求不能使用strlen,strcat,strcpy等字符串处理函数。
函数原型voidcat(chars1[],chars2[],chars3[]);主函数中完成两个串的输入,cat函数的调用,连接后的结果输出。
9.输入一个任意位数的非负的整数,将该数反序输出。
例如:
输入:
1386
输出:
6831
10.输入N个数到数组中,输出所有大于N个数平均值的数。
要求:
计算N个数的平均值用函数实现;输出大于平均值的数在主函数中实现。
11.请按题目要求完成程序编写:
(1)编写函数,功能是把一维整型数组由小到大排序
函数原型是:
voidsort(inta[],intn)
(2)编写函数,功能是判断一个整数是否是“完数”。
一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。
函数原型是:
intwanshu(intx)
(3)编写main函数,在main函数中任意输入20个整数,通过调用
(1)中的函数把这20个数由小到大排好序并输出,然后通过调用
(2)中的函数找出这个数组中所有的完数,并输出。
12.从键盘输入两个整数,计算这两个整数之间所有素数之和。
要求:
a)定义函数isprime(),判断任意一个正整数是否是素数
b)定义函数add(),实现求两个整数之间所有素数之和
提示:
intadd(intx,inty)
其中x,y用来接收在主程序中输入的两个整数,函数内对x到y之间的数判断是否是素数,并求素数和,素数之和用return语句返回。
c)在主函数main()中,输入两个整数,调用add(),输出结果
例如:
从键盘输入:
100200
屏幕上输出:
3167