资源描述
C言语次序计划温习题及谜底
一、抉择题〔每题1分,共30分〕
1.以下表白准确的选项是()。
A)在C次序中,main函数必需位于次序的最后面
B)C次序的每行中只能写一条语句
C)C言语自身不输入输入语句
D)在对一个C次序进展编译的进程中,可发觉正文中的拼写过错
2.一个C言语次序的根本单元是()
A)函数B)子次序C)进程D)下令
3.一个C言语的语句必需运用的完毕标记是〔〕
A),B)。C):D);
4.以下选项中,能够作为C言语标识符的是〔〕
A)3stuB)#stuC)stu3D)stu.3
5.设有阐明:charw;intx;floaty;doublez;那么表白式w*x+z-y值的数据范例为
A)floatB)charC)intD)double
6.以下表白准确的选项是〔〕
A〕赋值语句中的“=〞是表现左边变量即是左边表白式
B〕赋值语句中左边的变量值不必定即是左边表白式的值
C〕赋值语句是由赋值表白式加上分号形成的
D〕x+=y;不是赋值语句
7.假定x为int型变量,那么履行x=6;x+=x-=x*x;语句后,x的值为〔〕
A)36B)-60C)60D)-24
8.假定有a=2,b=3,c=4,那么表白式a==3跟a=3的值分不为〔〕
A)0跟0B〕1跟3C〕3跟3D〕0跟3
9.使前提表白式〔year%4==0&&year%100!=0〕||〔year%400==0〕后果为假的值是〔〕
A)1950B)2000C)1996D)2004
10.假定x、i、j、k基本上int型变量,那么盘算上面表白式后,x的值为()。
x=(i=4,j=16,k=32)
A)4B)16C)32D)52
11.逻辑运算符两侧运算工具的数据范例〔〕
A)只能是0跟1B)只能是0或非0负数
C)只能是整型或字符型数据D)能够是任何范例的数据
12.假定盼望当A的值为奇数时,表白式的值为“真〞,A的值为偶数时,表白式的值为“假〞。那么以下不克不及满意请求的表白式是〔〕
A)A%2==1B)!(A%2==0)C)!(A%2)D)A%2
13.语句while(!E);中的表白式!E等价于〔〕。
A)E==0B)E!=1C)E!=0D)E==1
14.上面次序段的运转后果是〔〕
a=1;b=2;c=2
while(a<b&&a<c){t=a;a=b;b=t;c--;}
printf(%d,%d,%d〞,a,b,c);
A)1,2,0B)2,1,0C)1,2,1D)2,1,1
15.以下次序段〔〕
x=-1;
do{
x=x*x;
}
while(!x);
A)是逝世轮回B)轮回履行二次
C)轮回履行一次D)有语法过错
16.以下准确的函数本相阐明语句是〔〕
A)voidfun(intx);B)floatfun(voidy);
C)doublefun(x);D)int(charch);
17.在C言语中,形参必需是〔〕
A〕常量B〕变量C.〕数值D〕表白式
18.C言语的函数〔〕
A〕能够嵌套挪用,不克不及递归挪用B〕能够嵌套界说
C〕既能够嵌套挪用,也能够递归挪用D〕不克不及够嵌套挪用
19.正当的数组界说是〔〕
A〕inta[]=〞string〞;B〕inta[5]={0,1,2,3,4,5};
C〕chara=〞string〞;D〕chara[]={0,1,2,3,4,5};
20.表白式strlen(“string〞)+strlen(“C〞)的运算后果为〔〕
A〕9B〕10C〕7D〕8
21.假定有界说跟语句:chars[10];s=“abcd〞;printf(“%s\n〞,s);那么后果是〔〕〔以下u代表空格〕
A〕abcdB〕a
C〕abcduuuuuD〕编译不经过
22.假定已界说:inta[9],*p=a;并在当前的语句中未改动p的值,不克不及表现a[1]地点的表白式是〔〕
A〕p+1B〕a+1C〕a++D〕++p
23.假定有intx,*pb;那么准确的赋值表白式是
A〕pb=&xB〕pb=x;C〕*pb=&x;D〕*pb=*x
24.设有次序段:chars[]=〞china〞;char*p;p=s;那么上面表白准确的选项是〔〕
A〕s跟p完整一样
B〕数组s中的内容跟指针变量p中的内容相称
C〕*p与s[0]相称
D〕s数组长度跟p所指向的字符串长度相称
25.上面临构造变量的表白中过错的选项是〔〕
A〕一样范例的构造变量间能够互相赋值
B〕经过构造变量,能够恣意援用它的成员
C〕构造变量中某个成员与那个成员范例一样的复杂变量间可互相赋值
D〕构造变量与复杂变量间能够赋值
26.假定有构造范例界说如下:
structbd
{intx;
floaty;
}r,*p=&r;
那么,对r中的成员x的准确援用是〔〕
A〕(*p).r.xB〕(*p).x
27.在一个函数里不克不及阐明〔〕
A〕全局变量B〕静态变量
C〕部分变量D〕静态部分变量
28.以下对于文件包括的说法中过错的选项是〔〕
A〕文件包括是指一个源文件能够将另一个源文件的全体内容包括出去。
B〕文件包括处置下令的格局为
#include“包括文件名〞或#include<包括文件名>
C〕一条包括下令能够指定多个被包括文件
D〕文件包括能够嵌套,即被包括文件中又包括另一个文件。
29.以下语句中,将C界说为文件型指针的是〔〕
A〕FILEc;B〕FILE*c;
C〕filec;D〕file*c;
30.上面临typedef的表白中不准确的选项是〔〕
A)用typedef能够界说各品种型名,但不克不及用来界说变量
B)用typedef能够添加新范例
C)用typedef??是将已存在的范例用一个新的标识符来代表
D)运用typedef有利于次序的通用跟移植
二、写出以下次序的运转后果〔每题3分,共24分〕
1.以下次序的输入后果是。
#include"stdio.h"
main()
{intx=3;
switch(x)
{case1:
case2:printf("x<3\n");
case3:printf("x=3\n");
case4:
case5:printf("x>3\n");break;
default:printf("xunknow\n");
}
}
2.以下次序的输入后果是。
#include<stdio.h>
voidmain()
{inti,j,x=0;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{if(j%2)continue;
x++;
}
printf(“x=%d\n〞,x);
}
3.以下次序的输入后果是。
#include"stdio.h"
staticintx=20;
voidf1(intx)
{x+=10;
printf(“%d…f1()\n〞,x);
}
voidf2()
{x+=10;
printf(“%d…f2()\n〞,x);
}
voidmain()
{intx=10;
f1(x);
f2();
printf(“%d…main()\n〞,x);
}
4.以下次序的输入后果是。
#include<stdio.h>
#defineS‘’
voidmain()
{intn=5,i,j;
for(i=1;i<=n;i++)
{for(j=1;j<=10;j++)putchar(S);
for(j=1;j<=n-i;j++)putchar(S);
for(j=1;j<=i;j++){putchar(‘*’);}
putchar(‘\n’);
}
}
5.以下次序的输入后果是。
#include<stdio.h>
voidmain()
{staticinta[]={5,7,9};
int*p=a;
++p;
printf(“%d%d%d%d\n〞,*a,*(a+2),*(p+1),p[1]);
}
6.上面次序的运转后果是〔〕
#include“stdio.h〞
voidmain()
{chara[]=“ab12cd34ef〞;
inti,j;
for(i=j=0;a[i];i++)
if(a[i]>=’a’&&a[i]<=’z’)a[j++]=a[i];
a[j]=’\0’;
printf(“%s\n〞,a);
}
7.上面次序的运转后果是〔〕
#include“stdio.h〞
voidmain()
{int*p,i;
i=100;
p=&i;
i=*p+10;
printf(“%d%d\n〞,I,*p);
}
8.上面次序的运转后果是〔 〕
voidmain()
{
structcmplx{intx;
inty;
}cnum[2]={1,3,2,7};
printf(“%d\n〞,cnum[0].y/cnum[0].x*cnum[1].x);
}
三、次序填空:〔依照题意,将空白的语句补上。每空3分,共30分〕
1.以下次序对输入的两个整数,按从年夜到小次序输入。请填空。
main()
{intx,y,z;
scanf(“%d,%d〞,&x,&y);
if((1))
{z=x;(2)}
printf(“%d,%d\n〞,x,y);
}
2..以下次序实现的功用是求1+2+3+…+10的累加跟,并进展累加跟的输入打印。变量sum是寄存累加值的。
#include"stdio.h"
main()
{(3)
i=1,sum=0;
for(;i<=10;)
{sum+=i;
(4)}
printf("%d\n",sum);
}
3.上面次序的功用是用函数递归挪用的办法界说函数intf(intm,intn)求mn。请填空。
intf(intm,intn)
{ints;
if((5))s=1;
elses=(6);
return(s)
}
4.以下次序的功用是求数组num中小于零的数据之跟。请填空。
#include<stdio.h>
voidmain()
{intnum[20]={10,20,1,-20,23,-21,2,-2,-2,11,-21,22,12,-2,-234,-90,22,90,-45,20};
intsum=0,i;
for(i=0;i<=19;i++)
{if((7))sum=(8);}
printf(“sum=%d〞,sum);
}
5.以下次序将数组a中的数据按逆序寄存,请填空。
#defineM8
main()
{inta[M],i,j,t;
for(i=0;i<M;i++)scanf("%d",a+i);
i=0;j=M-1;
while(i<j)
{
t=*(a+i);(9);*((10))=t;
i++;j--;
}
for(i=0;i<M;i++)printf("%3d",*(a+i));
}
四、编写次序〔第1题7分,第2题9分,共16分〕
1.编一个次序,推断输入的整数x能否既是5又是7的整数倍。假定是,那么输入yes,否那么输入no。
2.编一个次序,请求:输入整数n,求整数n的列位数字的平方跟并输入。〔如输入数是n=234,那么盘算2*2+3*3+4*4=29并输入〕
一、抉择题〔每题1分,共30分〕
CADCDCBDACDCADCABCDCDCACDBACBB
二、写出以下次序的运转后果〔每题3分,共24分〕
1. x=3
x>3
2. x=4
3. 20…f1()
30…f2()
10…main()
4. *
**
***
****
*****
5. 5999
6.abcdef
7.2020
8.6
三、次序填空:〔依照题意,将空白的语句补上。每空3分,共30分〕
(1)x<y
(2)x=y;y=z;
(3)inti,sum;
(4)printf(“%d〞,sum);
(5)n==0
(6)m*f(m,n-1)
(7)num[i]<0
(8)sum+num[i]
(9)*(a+i)=*(a+j)
(10)a+i
四、编程题(第1题8分,第2题8分)
1.#include<stdio.h>
voidmain()
{intx;
scanf(“%d〞,&x);
if(x%5==0&&x%7==0)printf(“yes〞);
elseprintf(“no〞);
}
2.#include<stdio.h>
void main()
{intn,sum=0.0;
while(n!=0)
{
sum=sum+n%10;
n=n/10;
}
printf(“\nsum=%d〞,sum);
}
展开阅读全文