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

📄 练习(二).txt

📁 谭浩强的C语言题集
💻 TXT
📖 第 1 页 / 共 3 页
字号:
		}
		printf("$\n");
	}
   (A) *#*#*#$
   (B) #*#*#*$
   (C) *#*#$
   (D) #*#*$
56、下面程序的运行结果是(   )
	void main()
	{
		int i,j,a=0;
		for(i=0;i<2;i++)
		{
			for(j=0;j<4;j++)
			{
				if(j%2) break;
				a++;
			}
			a++;
		}
		printf("%d\n",a);
	}
   (A) 4
   (B) 5
   (C) 6
   (D) 7
二、填空题
57、下面程序段是从键盘输入的字符中统计数字字符的个数,用换行结束循环,请天空。
	int n=0,c;
	c=getchar();
	while(________)
	{
		if(________) n++;
		c=getchar();
	}
58、下面程序的功能是用公式π*π/6≈1/1*1+1/2*2+1/3*3+...+1/n*n求π的近似值,直到最后一项的值小于10的-6次方为止,请填空。
	#include<stdio.h>
	#include<math.h>
	void main()
	{
		long i=1;
		________pi=0;
		while(i*i<=10e+6) {pi=________;i++;}
		pi=sqrt(6.0*pi);
		printf("pi=%10.6f\n",pi);
	}
59、有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?请填空。
	#include<stdio.h>
	void main()
	{
		int day,x1,x2;
		day=0; x1=1020;
		while(________){x2=________;x1=x2;day++;}
		printf("day=%d\n",day);
	}
60、下面程序的功能是用“辗转相除法”求两个正整数的最大公约数。请填空。
	#include<stdio.h>
	void main()
	{
		int r,m,n;
		scanf("%d%d",&m,&n);
		if(m<n) ________;
		r=m%n;
		while(r) {m=n;n=r;r=________;}
		printf("%d\n",n);
	}
61、当运行以下程序时,从键盘键入right?〈CR〉(〈CR〉代表回车),则下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		char c;
		while((c=getchar())!='?') putchar(++c);
	}
62、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int a,s,n,count;
		a=2; s=0; n=1; count=1;
		while(count<=7){n=n*a; s=s+n; ++count;}
		printf("s=%d",s);
	}
63、当运行以下程序时,从键盘输入China#〈CR〉(〈CR〉表示回车),则下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int v1=0,v2=0;char ch;
		while((ch=getchar())!='#')
		switch(ch)
		{
		case 'a':
		case 'h':
		default: v1++;
		case 'o': v2++;
		}
		printf("%d,%d\n",v1,v2);
	}
64、执行下面程序段后,k值是________。
	k=1; n=263;
	do{ k*=n%10; n/=10;}while(n);
65、下面程序段中循环体的执行次数是________。
	a=10;
	b=0;
	do{b+=2;a-=2+b;}while(a>=0);
66、下面程序段的运行结果是________。
	x=2;
	do{printf("*");x--;}while(!x==0);
67、下面程序段的运行结果是________。
	i=1;a=0;s=1;
	do{a=a+s*i;s=-s;i++;}while(i<=10);
	printf("a=%d",a);
68、下面程序的功能是用do-while语句求1至1000之间满足“用3除余2;用5除余3;用7除余2”的数,且一行只打印五个数。请填空。
	#include<stdio.h>
	void main()
	{
		int i=1;j=0;
		do{
			if(________)
			{
				printf("%4d",i);
				j=j+1;
				if(________) printf("\n");
			}
			i=i+1;
		}while(i<1000);
	}
69、下面程序的功能是统计正整数的各位数字中零的个数,并求各位数字中的最大者。请填空。
	#include<stdio.h>
	void main()
	{
		int n,count,max,t;
		count=max=0;
		scanf("%d",&n);
		do{
			t=________;
			if(t==0) ++count;
			else if(max<t) ________;
			n/=10;
		}while(n);
		printf("count=%d,max=%d",count,max);
	}
70、等差数列的第一项a=2,公差d=3,下面程序的功能是在前n项和中,输出能被4整除的所有的和。请填空。
	#include<stdio.h>
	void main()
	{
		int a,d,sum;
		a=2;d=3;sum=0;
		do{
			sum+=a;
			a+=d;
			if(________) printf("%d\n",sum);
		}while(sum<200);
	}
71、下面程序的功能是求11的11次方的个、十、百位上的数字之和。请填空。
	#include<stdio.h>
	void main()
	{
		int i,s=1,m=0;
		for(i=1;i<=11;i++) s=s*11%1000;
		do{ m+=________; s=________;}while(s);
		printf("m=%d\n",m);
	}
72、当运行以下程序时,从键盘输入12345-1〈CR〉(〈CR〉表示回车),则下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int k=0,n;
		do{scanf("%d",&n);k+=n;}while(n!=-1);
		printf("k=%d n=%d\n",k,n);
	}
73、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int i,x,y;
		i=x=y=0;
		do{
			++i;
			if(i%2!=0){x=x+i;i++;}
			y=y+i++;
		}while(i<=7);
		printf("x=%d,y=%d\n",x,y);
	}
74、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int a,b,i;
		a=1;b=3;i=1;
		do{
			printf("%d,%d,",a,b);
			a=(b-a)*2+b;
			b=(a-b)*2+a;
			if(i++%2==0) printf("\n");
		}while(b<100);
	}
75、当运行以下程序时,从键盘输入-1 0〈CR〉(〈CR〉表示回车),则下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int a,b,m,n;
		m=n=1;
		scanf("%d%d",&a,&b);
		do{
			if(a>0){m=2*n;b++;}
			else{n=m+n;a+=2;b++;}
		}while(a==b);
		printf("m=%d n=%d",m,n)
	}
76、下面程序段是找出整数的所有因子,请填空。
	scanf("%d",&x);
	i=1;
	for(  ;________;  )
	{
		if(x%i==0) printf("%3d",i);
		i++;
	}
77、鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空。
	for(x=1;x<=29;x++)
	{
		y=30-x;
		if(________) printf("%d,%d\n",x,y);
	}
78、下面程序段的运行结果是________。
	for(a=1,i=-1;-1<=i<1;i++)
	{a++;printf("%2d",a);}
	printf("%2d",i);
79、若for循环用以下形式表示:
	for(表达式1;表达式2;表达式3) 循环体语句
    则执行语句for(i=0;i<3;i++) printf("*"); 时,表达式1执行________次,表达式3执行________次。
80、下面程序的功能是计算1-3+5-7+...-99+101的值,请填空。
	#include<stdio.h>
	void main()
	{
		int i,t=1,s=0;
		for(i=1;i<=101;i+=2)
		{________; s=s+t;________;}
		printf("%d\n",s);
	}
81、以下程序是用梯形法求sin(x)*cos(x)的定积分。求定积分的公式为:
	s=(h/2)*[f(a)+f(b)]+h*∑f(xi) (注:x1+x2+x3+...+xn)
	其中xi=a+ih,h=(b-a)/(n+1)
	设a=0,b=1.2为积分上下限,积分区间分割数n=99,请填空。
	#include<stdio.h>
	#include<math.h>
	void main()
	{
		int i,n; double h,s,a,b;
		printf("Input a,b:");
		scanf("%lf%lf",________);
		n=100; h=________;
		s=0.5*(sin(a)*cos(a)+sin(b)*cos(b));
		for(i=1;i<=n-1;i++) s+=________;
		s*=h;
		printf("s=%10.4lf\n",s);
	}
82、以下程序的功能是根据公式e=1+1/1!+1/2!+1/3!+...求e的近似值,精度要求为10的-6次方。请填空。
	#include<stdio.h>
	void main()
	{
		int i; double e,new;
		________; new=1.0;
		for(i=1;________;i++)
		{
			new/=(double)i;
			e+=new;
		}
		printf("e=%f\n",e);
	}
83、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int i,t,sum=0;
		for(t=i=1;i<=10; )
		{
			sum+=t; ++i;
			if(i%3==0) t=-1;
			else t=i;
		}
		printf("sum=%d",sum);
	}
84、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int i;
		for(i=1;i<=5;i++)
			switch(i%2)
			{
			case 0: i++; printf("#"); break;
			case 1: i+=2; printf("*");
			default: printf("\n");
			}
	}
85、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int i,j=4;
		for(i=j;i<=2*j;i++)
			switch(i/j)
			{
			case 0: printf("*"); break;
			case 1: printf("#");
			}
	}
86、下面程序的功能是求出数字0至9可以组成多少个没有重复的三位偶数。请填空。
	void main()
	{
		int n,i,j,k;
		n=0;
		for(i=1; i<=9; i++)
			for(k=0; k<=8; ________)
				if(k!=i)
					for(j=0; j<=9; j++)
						if(________)
							n++;
		printf("n\%d\n",n);
	}
87、下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数。请填空。
	#include<stdio.h>
	void main()
	{
		int n,k=1,s=0,m;
		for(n=1;n<=100;n++)
		{
			k=1;s=0;
			________;
			while(________)
			{
				k*=m%10;
				s+=m%10;
				________;
			}
			if(k>s) printf("%d",n);
		}
	}
88、下面程序的功能是求1000以内的所有完全数。请填空。
    (说明:一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数,例如:6=1+2+3,6为完全数)
	#include<stdio.h>
	void main()
	{
		int a,i,m;
		for(a=1;a<=1000;a++)
		{
			for(________;i<=a/2;i++) if(!(a%i)) ________;
			if(m==a) printf("%4d",a);
		}
	}
89、下面程序的功能是完成用一元人民币换成一分、两分、五分的所有兑换方案。请填空。
	#include<stdio.h>
	void main()
	{
		int i,j,k,l=1;
		for(i=0;i<=20;i++)
			for(j=0;j<=50;j++)
			{
				k=________;
				if(________)
				{
					printf("  %2d %2d %2d  ",i,j,k);
					l=l+1;
					if(l%5==0) printf("\n");
				}
			}
	}
90、下面程序的功能是从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。请填空。
	#include<stdio.h>
	void main()
	{
		int i,j,k;
		printf("\n hong bai hei \n");
		for(i=0;i<=3;i++)
			for(_______;j<=5;j++)
			{
				k=8-i-j;
				if(________) printf("  %3d %3d %3d \n",i,j,k);
			}
	}
91、若从键盘输入65 14〈CR〉(〈CR〉表示回车符),则下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int m,n;
		printf("Enter m,n:");
		scanf("%d%d",&m,&n);
		while(m!=n)
		{
			while(m>n) m-=n;
			while(n>m) n-=m;
		}
		printf("m=%d\n",m);
	}
92、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int y,a;
		y=2;a=1;
		while(y--!=-1)
		{ do{ a*=y; a++;} while(y--); }
		printf("%d,%d",a,y);
	}
93、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int i,j;
		for(i=0;i<=3;i++)
		{
			for(j=0;j<=5;j++)
			{
				if(i==0||i==3||j==5) printf("*");
				else printf(" ");
			}
			printf("\n");
		}
	}
94、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int i,j;
		for(i=4;i>=1;i--)
		{
			for(j=1;j<=i;j++) putchar('#');
			for(j=1;j<=4-i;j++) putchar('*');
			putchar('\n');
		}
	}
95、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int i,k=0;
		for(i=1;  ;i++)
		{
			k++;
			while(k<i*i)
			{
				k++;
				if(k%3==0 goto loop;
			}
		}
	loop:	printf("%d,%d",i,k);
	}
96、下面程序段的运行结果是________。
	i=1;s=3;
	do{
		s+=i++;
		if(s%7==0) continue;
		else ++i;
	}while(s<15);
	printf("%d",i);
97、若用0至9之间不同的三个数构成一个三位数,下面程序将统计出共有多少种方法。请填空。
	#include<stdio.h>
	void main()
	{
		int i,j,k,count=0
		for(i=1;i<=9;i++)
			for(j=0;j<=9;j++)
				if(________) continue;
				else for(k=0;k<=9;k++)
					if(________) count++;
		printf("%d",count);
	}
98、下面程序的功能是计算100至1000之间有多少个数其各位数字之和是5。请填空。
	#include<stdio.h>
	void main()
	{
		int i,s,k,count=0;
		for(i=100;i<=1000;i++)
		{
			s=0;k=i;
			while(________) {s=s+k%10; k=________;}
			if(s!=5) ________;
			else count++;
		}
		printf("%d",count);
	}
99、下面程序的功能是从键盘输入的10个整数中,找出第一个能被7整除的数。若找到,打印此数后退出循环;若未找到,打印“not exist”。请填空。
	#include<stdio.h>
	void main()
	{
		int i,a;
		for(i=1;i<=10;i++)
		{
			scanf("%d",&a);
			if(a%7==0) {printf("%d",a);________;}
		}
		if(________) printf("not exist\n");
	}
100、下面程序的功能是打印100以内个位数为6且能被3整除的所有数。请填空。
	#include<stdio.h>
	void main()
	{
		int i,j;
		for(i=0; ________; i++)
		{
			j=i*10+6;
			if(________) continue;
			printf("%d",j);
		}
	}
101、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int i=1;
		while(i<=15)
			if(++i%3!=2) continue;
			else printf("%d",i);
		printf("\n");
	}
102、下面程序的输出结果是________。
	#include<stdio.h>
	void main()
	{
		int i,j,k=19;
		while(i=k-1)
		{
			k-=3;
			if(k%5==0) {i++;continue;}
			else if(k<5) break;
			i++;
		}
		printf("i=%d,k=%d\n",i,k);
	}
103、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int a,y;
		a=10;y=0;
		do{
			a+=2;y+=a;
			if(y>50) break;
		}while(a=14);
		printf("a=%d y=%d\n",a,y);
	}
104、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int i=5;
		do{
			switch(i%2)
			{
			case 4: i--; break;
			case 6: i--; continue;
			}
			i--; i--;
			printf("%d",i);
		}while(i>0);
	}
三、编程题
105、每个苹果0.8元,第一天买2个苹果,第二天开始,每天买前一天的2倍,直至购买的苹果个数达到不超过100的最大值。编写程序求每天平均花多少钱?
106、试编程序,找出1至99之间的全部同构数。同构数是这样一组数:它出现在平方数的右边。例如:5是25右边的数,25是625右边的数,5和25都是同构数。
107、试编程序,求一个整数任意次方的最后三位数。即求x的y次方的最后三位数,要求x,y从键盘输入。
108、编写程序,从键盘输入6名学生的5门成绩,分别统计出每个学生的平均成绩。

⌨️ 快捷键说明

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