⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 练习(二).txt

📁 谭浩强的C语言题集
💻 TXT
📖 第 1 页 / 共 3 页
字号:
   (A) 668977
   (B) 668966
   (C) 66778777
   (D) 6688766
14、C语言中while和do-while循环的主要区别是(   )
   (A) do-while的循环体至少无条件执行一次
   (B) while的循环控制条件比do-while的循环控制条件严格
   (C) do-while允许从外部转到循环体内
   (D) do-while的循环体不能是复合语句
15、以下能正确计算1×2×3×...×10的程序段是(   )
   (A) do{i=1; s=1;
	  s=s*i;
	  i++;
	 }while(i<=10);
   (B) do{i=1;s=0;
	  s=s*i;
	  i++;
	 }while(i<=10);
   (C) i=1; s=1;
       do{s=s*i;
	  i++;
	 }while(i<=10);
   (D) i=1; s=0;
       do{s=s*i;
	  i++;
	 }while(i<=10);
16、以下程序段(   )
	x=-1;
	do{x=x*x;}while(!x);
   (A) 是死循环
   (B) 循环执行二次
   (C) 循环执行一次
   (D) 有语法错误
17、以下描述中正确的是(   )
   (A) 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
   (B) do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
   (C) 在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作
   (D) do-while循环中,根据情况可以省略while
18、若有如下语句
	int x=3;
	do{printf("%d\n",x-=2);}while(!(--x));
    则上面程序段(   )
   (A) 输出的是1
   (B) 输出的是1和-2
   (C) 输出的是3和0
   (D) 是死循环
19、下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。①(   )②(   )
	#include<stdio.h>
	void main()
	{
		int n,sum=0;
		n=2345;
		do{
			sum=sum+  ①  ;
			n=  ②  ;
		}while(n);
		printf("sum=%d",sum);
	}
① (A) n%10
   (B) (n%10)*(n%10)
   (C) n/10
   (D) (n/10)*(n/10)
② (A) n/1000
   (B) n/100
   (C) n/10
   (D) n%10
20、下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环。请选择填空。①(   )②(   )
	#include<stdio.h>
	void main()
	{
		long int num;
		scanf("%ld",&num);
		do{if(  ①  ) printf("%ld",num);
			scanf("%ld",&num);
		}while(  ②  );
	}
① (A) num%100/10==3
   (B) num/100%10==3
   (C) num%10/10==3
   (D) num/10%10==3
② (A) !num
   (B) num>0==0
   (C) !num==0
   (D) !num!=0
21、等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项和小于100的最大n,请选择填空。①(   )②(   )
	#include<stdio.h>
	void main()
	{
		int a,q,n,sum;
		a=1; q=2; n=sum=0;
		do{  ①  ;
			++n; a*=q;
		}while(sum<100);
		  ②  ;
		printf("%d\n",n);
	}
① (A) sum++
   (B) sum+=a
   (C) sum*=a
   (D) a+=sum
② (A) n=n-2
   (B) n=n
   (C) n++
   (D) n-=1
22、下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除。请选择填空。①(   )
	#include<stdio.h>
	void main()
	{
		int i=0,j,k;
		do{i++; k=316-13*i;} while(  ①  );
		j=k/11;
		printf("316=13*%d+11*%d",i,j);
	}
① (A) k/11
   (B) k%11
   (C) k/11==0
   (D) k%11==0
23、下面程序的运行结果是(   )
	#include<stdio.h>
	void main()
	{
		int y=10;
		do{y--;}while(--y);
		printf("%d\n",y--);
	}
   (A) -1
   (B) 1
   (C) 8
   (D) 0
24、若运行以下程序时,从键盘输入ADescriptor〈CR〉(〈CR〉表示回车),则下面程序的运行结果是(   )
	#include<stdio.h>
	void main()
	{
		char c;
		int v0=0,v1=0,v2=0;
		do{
			switch(c=getchar())
			{
			case 'a': case 'A':
			case 'e': case 'E':
			case 'i': case 'I':
			case 'o': case 'O':
			case 'u': case 'U': v1+=1;
			default: v0+=1; v2+=1;
			}
		}while(c!='\n');
		printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);
	}
   (A) v0=7,v1=4,v2=7
   (B) v0=8,v1=4,v2=8
   (C) v0=11,v1=4,v2=11
   (D) v0=12,v1=4,v2=12
25、下面程序的运行结果是(   )
	#include<stdio.h>
	void main()
	{
		int a=1,b=10;
		do{ b-=a; a++; } while(b--<0);
		printf("a=%d,b=%d\n",a,b);
	}
   (A) a=3,b=11
   (B) a=2,b=8
   (C) a=1,b=-1
   (D) a=4,b=9
26、下面有关for循环的正确描述是(   )
   (A) for循环只能用于循环次数已经确定的情况
   (B) for循环是先执行循环体语句,后判断表达式
   (C) 在for循环中,不能用break语句跳出循环体
   (D) for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
27、对for(表达式1;  ; 表达式3)可理解为(   )
   (A) for(表达式1; 0; 表达式3)
   (B) for(表达式1; 1; 表达式3)
   (C) for(表达式1; 表达式1; 表达式3)
   (D) for(表达式1; 表达式3; 表达式3)
28、若i为整型变量,则以下循环执行次数是(   )
	for(i=2;i==0;) printf("%d",i--);
   (A) 无限次
   (B) 0次
   (C) 1次
   (D) 2次
29、以下for循环的执行次数是(   )
	for(x=0,y=0;(y=123)&&(x<4);x++);
   (A) 是无限循环
   (B) 循环次数不定
   (C) 执行4次
   (D) 执行3次
30、以下不是无限循环的语句为(   )
   (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;
31、下面程序段的运行结果是(   )
	for(y=1;y<10;) y=((x=3*y,x+1),x-1);
	printf("x=%d,y=%d",x,y)
   (A) x=27,y=27
   (B) x=12,y=13
   (C) x=15,y=14
   (D) x=y=27
32、下面程序段的运行结果是(   )
	for(x=3;x<6;x++) printf((x%2)?("**%d"):("##%d\n"),x);
   (A) **3
       ##4
       **5
   (B) ##3
       **4
       ##5
   (C) ##3
       **4##5
   (D) **3##4
       **5
33、下列程序段不是死循环的是(   )
   (A) int i=100;
       while(1)
       {
	  i=i%100+1;
	  if(i>100) break;
       }
   (B) for(  ;  ;  );
   (C) int k=0;
       do{++k;}while(k>=0);
   (D) int s=36;
       while(s); --s;
34、执行语句for(i=1;i++<4; ); 后变量i的值是(   )
   (A) 3
   (B) 4
   (C) 5
   (D) 不定
35、有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数,请选择填空。①(   )
	#include<stdio.h>
	void main()
	{
		int i;
		for(i=100;i<200;i++)
			if(i-2)%4==0)
				if(!((i-3)%7))
					if(  ①  )
						printf("%d",i);
	}
   (A) i%9=5
   (B) i%9!=5
   (C) (i-5)%9!=0
   (D) i%9==5
36、下面程序的功能是计算1至50中是7的倍数的数值之和,请选择填空。①(   )
	#include<stdio.h>
	void main()
	{
		int i,sum=0;
		for(i=1;i<=50;i++)
			if(  ①  ) sum+=i;
		printf("%d",sum);
	}
   (A) (int)(i/7)==i/7
   (B) (int)i/7==i/7
   (C) i%7=0
   (D) i%7==0
37、下面程序的功能是计算1至10之间的奇数之和及偶数之和。请选择填空。①(   )②(   )
	#include<stdio.h>
	void main()
	{
		int a,b,c,i;
		a=c=0;
		for(i=0;i<=10;i+=2)
		{
			a+=i;
			  ①  ;
			c+=b;
		}
		printf("偶数之和=%d\n",a);
		printf("奇数之和=%d\n",  ②  );
	}
① (A) b=i--
   (B) b=i+1
   (C) b=i++
   (D) b=i-1
② (A) c-10
   (B) c
   (C) c-11
   (D) c-b
38、下面程序的运行结果是(   )
	#include<stdio.h>
	void main()
	{
		int i;
		for(i=1;i<=5;i++)
			switch(i%5)
			{
			case 0: printf("*"); break;
			case 1: printf("#"); break;
			default: printf("\n");
			case 2: printf("&");
			}
	}
   (A) #&&&*
   (B) #&
       &
       &*
   (C) #
       &
       &
       &
       *
   (D) #&

       *
39、下面程序的运行结果是(   )
	#include<stdio.h>
	void main()
	{
		int x,i;
		for(i=1;i<=100;i++)
		{
			x=i;
			if(++x%2==0)
				if(++x%3==0)
					if(++x%7==0)
						printf("%d",x);
		}
	}
   (A) 39 81
   (B) 42 84
   (C) 26 68
   (D) 28 70
40、下面程序段的功能是计算1000!的末尾含有多少个零。请选择填空。(提示:只要算出1000!中含有因数5的个数即可)①(   )
	for(k=0,i=5;i<=1000;i+=5)
	{
		m=i;
		while(  ①  ){k++; m=m/5;}
	}
   (A) m%5=0
   (B) m=m%5==0
   (C) m%5==0
   (D) m%5!=0
41、下面程序的功能是求算式xyz+yzz=532中x,y,z的值(其中xyz和yzz分别表示一个三位数),请选择填空。①(   )②(   )
	#include<stdio.h>
	void main()
	{
		int x,y,z,i,result=532;
		for(x=1; x<10; x++)
			for(y=1; y<10; y++)
				for(  ①  ; z<10; z++)
				{
					i=100*x+10*y+z+100*y+10*z+z;
					if(  ②  ) printf("x=%d,y=%d,z=%d\n",x,y,z);
				}
	}
① (A) z=x
   (B) z=1
   (C) z=0
   (D) z=y
② (A) i/result==1
   (B) i=result
   (C) i!=result
   (D) i==result
42、下面程序是输出一个正整数等差数列的前十项,此数列前四项之和及之积分别是26和880,请选择填空。①(   )②(   )
	#include<stdio.h>
	void main()
	{
		int a,d,i,s,f,x;	/* a是第一项 */
		for(a=1;a<30;a++)
			for(d=1;  ①  ;d++)
			{
				s=0; f=1; x=a;
				for(i=1;i<=4;i++)
				{
					s=s+x;
					f=f*x;
					x=x+d;
				}
				if(s==26&&f==880)
					for(i=0;i<10;i++)
						printf("%3d",  ②  );
			}
		printf("\n");
	}
① (A) d<=a
   (B) 空
   (C) d<=5
   (D) d<a
② (A) a+i*d
   (B) i*d
   (C) a+(i+1)*d
   (D) a+d
43、下面程序的运行结果是(   )
	#include<stdio.h>
	void main()
	{
		int i,b,k=0;
		for(i=1;i<=5;i++)
		{
			b=i%2;
			while(b-->=0) k++;
		}
		printf("%d,%d",k,b);
	}
   (A) 3,-1
   (B) 8,-1
   (C) 3,0
   (D) 8,-2
44、以下正确的描述是(   )
   (A) continue语句的作用是结束整个循环的执行
   (B) 只能在循环体内和switch语句体内使用break语句
   (C) 在循环体内使用break语句或continue语句的作用相同
   (D) 从多层循环嵌套中退出时,只能使用goto语句
45、下面程序段(   )
	for(t=1;t<=100;t++)
	{
		scanf("%d",&x);
		if(x<0) continue;
		printf("%3d",t);
	}
   (A) 当x<0时整个循环结束
   (B) x>=0时什么也不输出
   (C) printf函数永远也不执行
   (D) 最多允许输出100个非负整数
46、下面程序段(   )
	x=3;
	do{
		y=x--;
		if(!y){printf("x"); continue;}
		printf("#");
	}while(1<=x<=2);
   (A) 将输出##
   (B) 将输出##*
   (C) 是死循环
   (D) 含有不合法的控制表达式
47、以下是死循环的程序段是(   )
   (A) for(i=1;  ;  )
       {
	   if(++i%2==0) continue;
	   if(++i%3==0) break;
       }
   (B) i=32767;
       do{if(i<0) break;}while(++i);
   (C) for(i=1;  ;  ) if(++i<10) continue;
   (D) i=1;
       while(i--);
48、以下描述正确的是(   )
   (A) goto语句只能用于退出多层循环
   (B) switch语句中不能出现continue语句
   (C) 只能用continue语句来终止本次循环
   (D) 在循环中break语句不能独立出现
49、与下面程序段等价的是(   )
	for(n=100;n<=200;n++)
	{
		if(n%3==0) continue;
		printf("%4d",n);
	}
   (A) for(n=100;(n%3)&&n<=200;n++) printf("%4d",n);
   (B) for(n=100;(n%3)||n<=200;n++) printf("%4d",n);
   (C) for(n=100;n<=200;n++) if(n%3!=0) printf("%4d",n);
   (D) for(n=100;n<=200;n++)
       {
	   if(n%3) printf("%4d",n);
	   else continue;
	   break;
	}
50、下面程序的功能是将从键盘输入的偶数写成两个素数之和。请选择填空。①(   )
	#include<stdio.h>
	#include<math.h>
	void main()
	{
		int a,b,c,d;
		scanf("%d",&a);
		for(b=3;b<=a/2;b+=2)
		{
			for(c=2;c<=sqrt(b);c++) if(b%c==0) break;
			if(c>sqrt(b)) d=  ①  ; else break;
			for(c=2;c<=sqrt(d);c++) if(d%c==0) break;
			if(c>sqrt(d)) printf("%d=%d+%d\n",a,b,d);
		}
	}
   (A) a+b
   (B) a-b
   (C) a*b
   (D) a/b
51、下面程序的运行结果是(   )
	#include<stdio.h>
	void main()
	{
		int k=0; char c='A';
		do{
			switch(c++)
			{
			case 'A': k++; break;
			case 'B': k--;
			case 'C': k+=2; break;
			case 'D': k=k%2; continue;
			case 'E': k=k*10; break;
			default: k=k/3;
		}
		while(c<'G');
		printf("k=%d\n",k);
	}
   (A) k=3
   (B) k=4
   (C) k=2
   (D) k=0
52、若运行以下程序时,从键盘输入3.6 2.4〈CR〉(〈CR〉表示回车),则下面程序的运行结果是(   )
	#include<math.h>
	#include<stdio.h>
	void main()
	{
		float x,y,z;
		z=x/y;
		while(1)
		{
			if(fabs(z)>1.0) {x=y;y=z;z=x/y;}
			else break;
		}
		printf("%f\n",y);
	}
   (A) 1.500000
   (B) 1.600000
   (C) 2.000000
   (D) 2.400000
53、下面程序的运行结果是(   )
	#include<stdio.h>
	void main()
	{
		int a,b;
		for(a=1,b=1;a<=100;a++)
		{
			if(b>=20) break;
			if(b%3==1) {b+=3; continue;}
			b-=5;
		}
		printf("%d\n",a);
	}
   (A) 7
   (B) 8
   (C) 9
   (D) 10
54、下面程序的运行结果是(   )
	#include<stdio.h>
	void main()
	{
		int i,j,x=0;
		for(i=0;i<2;i++)
		{
			x++;
			for(j=0;j<=3;j++)
			{
				if(j%2) continue;
				x++;
			}
			x++;
		}
		printf("x=%d\n",x);
	}
   (A) x=4
   (B) x=8
   (C) x=6
   (D) x=12
55、下面程序的运行结果是(   )
	#include"stdio.h"
	void main()
	{
		int i;
		for(i=1;i<=5;i++)
		{
			if(i%2) printf("*");
			else continue;
			printf("#");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -