{
int i,sum ;
//sum没有赋初值
for(i=1;i<6;i++) sum +=i; printf(\}
A.14 B.不确定
C.15
D.0
7.以下叙述中正确的是( )。
A.do-while语句构成的循环不能用其他语句构成的循环来代替 B.do-while语句构成的循环只能用break语句退出
C.用do-while语句构成的循环,在while后的表达式为非零时结束循环 D.用do-while语句构成的循环,在while后的表达式为零时结束循环 8.下面选项中,没有构成死循环的程序段是()。 A.int i=100;
while(1){i=i% 100+1;if(i>100)break;} //没有循环增量i++ B.for(;;); C.int k=1000;
do
{++k;}while(k>=10000); D.int s=36;
while(s); --s;
9.下面的程序段中while循环执行的次数是()。
int k=0; while(k=1)k++;
//== =
A.无限次 B.有语法错,不能执行 C.一次也不执行 D.执行1次 10.下列选项中与语句: while() {
if(i>=100) break; s+=i; i++; }
功能相同的语句是( )。
A.for(;i<100;i++) s=s+i; B.for(;i<=100;i++) s+=i; C.for(;i<100;i++,s=s+i); D.for(;i>=100;i++,s=s+i); 二、填空题
1.这个while循环的输出结果是 1 4 9 16 25 。
//while(s);后面不能有分号
//k=1001<10000
// for(;;)相当于while(1)
i = 0; while (i < 5) { i++;
printf(\}
2.有以下程序: #include
while((c=getchar())!='?') putchar(--c); }
程序运行时,如果从键盘输入:B ?C?<回车>,则输出结果为 A 。 3.假定a和b为int型变量,执行下面程序段后b的值为 8 。 a=1;b=10; do {
b-=a;a++; } while(b--<0);
4.若所有变量都已正确定义,下列程序的输出结果是 YESYES 。
for(i=0;i<2;i++) printf(“YES”); printf(“\\n”);
5.执行下列程序后,输出“*”号的个数是6 。 #include”stdio.h” main() { int i,j;
for(i=1;i<5;i++) for(j=2;j<=i;j++) putchar(‘*’); 三、编程题
1.计算1-3+5-7+…-99+101的值。
2.编写程序从输入的三个数中找出最大值和最小值。
3.编写程序,判断从键盘输入的一个整数是否是素数,是素数就输出“This is a prime number”,不是素数就输出“This is not a prime number”。
4.求10到100之间的全部素数。 5.编写程序输出如下所示的图形。
* *** ***** ******* *********
数组
一、选择题
(1) 在C语言中,引用数组元素时,其数组下标的数据类型允许是 。
A)整型常量 B)整型表达式 C)整形常量或整形表达式 C)任何类型的表达式
(2) 以下对一维整型数组a的正确说明是 。
A)int a(10) ; C)int n; scanf(“%d”,&n);
int a[n];
B)int n=10,a[n]; D)#define SIZE 10 int a[SIZE];
( 3) 若有定义:int a[10],则对数组a元素的正确引用是 。
A)a[10] B)a[3.5] C)a(5) D)a[10-10]
(4) 以下能对一维数组a进行正确初始化的语句是 。
A)int a[10]={0,0,0,0,0}; B)int a[10]={} ; C)int a[] = {0} ; D)int a[10]={10*1} ;
(5) 若有定义:int a[3][4],则对数组a元素的正确引用是 。
A)a[2][3] B)a[1,3] C)a(5) D)a[10-10]
(6) 以下能对二维数组a进行正确初始化的语句是 。
A)int a[2][]={{1,0,1},{5,2,3}} ; B)int a[][3]={{1,2,3},{4,5,6}} ; C)int a[2][4]={{1,2,3},{4,5},{6}} ; D)int a[][3]={{1,0,1},{},{1,1}} ;
(7) 若有说明:int a[3][4]={0};则下面正确的叙述是 。
A)只有元素a[0][0]可得到初值0 B)此说明语句不正确
C)数组a中各元素都可得到初值,但其值不一定为0 D)数组a中每个元素均可得到初值0
(8) 若有说明:int a[][4]={0,0};则下面不正确的叙述是 。
A)数组a的每个元素都可得到初值0 B)二维数组a的第一维大小为1
C)因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1 D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
(9) 若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为。 (设a[0][0]位于数组的第一个位置上)
A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+1
(10) 若有说明:int a[][3]={1,2,3,4,5,6,7};则数组a第一维大小是 。
A)2 B)3 C)4 D)无确定值
(11) 下面程序段的输出结果是 。
int k,a[3][3]={1,2,3,4,5,6,7,8,9};
for (k=0;k<3;k++) printf(“%d”,a[k][2-k]); A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7
(12)下面是对s的初始化,其中不正确的是 。
A)char s[5]={“abc”}; B)char s[5]={‘a’,’b’,’c’}; C)char s[5]=” ”; D)char s[5]=”abcdef”;
(13)下面程序段的输出结果是 。
char c[5]={‘a’,’b’,’\\0’,’c’,’\\0’} printf(“%s”,c);
A)’a’’b’ B)ab C)ab c D)abc
(14)判断字符串a和b是否相等,应当使用 。
A)if (a==b) B)if (a=b) C)if (strcpy(a,b)) D) if (strcmp(a,b))
(15)下列四种数组定义中,合法的数组定义是( )。
A) char a[ ]=“hello” ; B) int a[4]={4,3,2,1,0}; C) char a=“hello” ; D) char a[5]= “hello” ; (16)已知数组float a[4][3];该数组行下标的范围是( )。
A) 0—3 B) 1—3 C) 0—2 D) 1—2 二、写出运行结果。 1.#include
int i,t,a[5]={1,2,3,4,5}; for(i=0;i<2;i++) {
}
for(i=0;i<5;i++) printf(\
printf(\
t=a[i]; a[i]=a[4-i]; a[4-i]=t;
}
结果:5 4 3 2 1。 2. #include
int i,j,row,col,min;
int a[3][4]={{1,2,3,4},{9,8,7,6},{ 1, 2,0,5}}; min=a[0][0]; row=0; col=0; for(i=0;i<3;i++) for(j=0;j<4;j++) if(a[i][j] min=a[i][j]; row=i; col=j; } printf(\} 结果:min=0,row=2,col=2。 三、编程题。 1. 用数组求Fibonacci数列前20个数,Fibonacci数列指的是这样一个数列: 1,1,2,3,5,8,13,21……这个数列从第三项开始,每一项都等于前两项之和。 #include int fib[20]={1,1}; int i; for(i=2;i<20;i++) { fib[i]=fib[i-1]+fib[i-2]; } for(i=0;i<20;) { printf(\ i++; if(i%5==0)