C语言-for循环的嵌套题(含解析和答案)
- 格式:doc
- 大小:39.50 KB
- 文档页数:10
C语言-for循环的嵌套题(含解
析和答案)
第33、34课时 for循环的嵌套
实验题一:
1、下面有关for循环的正确描述是: D
A) for循环只能用于循环次数已经确定的情况
B) for循环是先执行循环体语句,后判断表达式
C) 在for循环中,不能用break语句跳出循环体
D) for循环的循环体语句中, 可以包含多条语句,但必须用花括号括
起来
2、对for(表达式1;;表达式3)可理解为:B
A) for(表达式1; 0;表达式3)
B) for(表达式1;1;表达式3)
C) for(表达式1;表达式1;表达式3)
D) for(表达式1;表达式3;表达式3)
3、若i为整型变量,则以下循环执行次数是:B
for (i=2;2==0;) printf("%d",i-- );
A)无限次 B) 0次 C) 1 次 D) 2次
4、以下for循环的执行次数是:C
for (x=0,y=0; (y=123)&&(x<4); x++) ;
A)是无限循环 B)循环次数不定 C)执行4次 D)执行3次
解析:第一次:;y=123&&0<4成立x++x=1;第二次:(y=123)&&(1<4)
成立,x++x=2
第三次:(y=123)&&(2<4)成立,x++x=3 第四次:(y=123)&&(3<4)
成立,x++x=4
第五次:(y=123)&&(4<4)不成立,退出循环。
5、以下不是无限循环的语句为:A
A) for (y=0,x=1;x > ++y;x =i++) i=x ;
B) for (;1; x++=i);
C) while (1) {x ++;}
D) for(i=10;1 ;i--) sum+=i;
6、下面程序段的运行结果是:C
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
第一次:1<10为真,x=3,x+1=3+1=4, y=(4,x-1) y=(4,2)=2
第二次: 2<10为真, x=3*2=6,7 y=(7,x-1)=(7,5) y=5
第三次:5<10为真,x=3*5=15 16 y=(16,x-1)=(16,14) y=14
第四次: 14<10为假,
7、下面程序段的运行结果是
for(x=3;x<6;x++)
printf((x %2)?("**%d"):(" ##%d\n"),x);
解析:第一次:3<6为真,3%2=1 **3 x++x=4
第二次:4<6为真,4%2=0 ##4(换行) x++x=5
第三次:5< 6为真,5%2=1 **5 x++x=6
第四次:6<6为假,结束循环
A)**3 B )##3 C)##3 D)**3##4
##4 **4 **4##5 **5
**5 ##5
8、下列程序段不是死循环的是
A) int i=100;
whiLe (1)
{i=i%100+1;
if (i>100) break;
}
B) for(;1;);
C) int k=0;
do{++k;}
while (k> =0) ;
D) int s=36;
while (36) ; --s;
9、执行语句for(i=1;i++<4;) ;后变量i的值是
A)3 B )4 C)5 D)不定
实验题二:编程题
1、编写程序,求1-3+5-7+…-99+101的值。
(1+5+9+13+17+…+101)-(3+7+11+15+…+99)
方法一:
main()
{
int i,j,sum1=0,sum2=0,sum;
for(i=1;i<=101;i+=4)
sum1+=i;
for(j=3;j<=99;j+=4)
sum2+=j;
sum=sum1-sum2;
printf(“1-3+5-7+…-99+101=%d”,sum);
}
方法二:
main()
{
int i,sum=0,s=1;
for(i=1; i<=101;i+=2)
{
sum=sum+i*s;
s=-s; /*控制符号交替变换*/
}
printf("sum=%d",sum);
}
2、编写程序,求e 的值。e1+1/1!+1/2!+1/3!+..+1/n!
(1)用for循环,计算前50项。
(2)用循环,要求直至最后一项的值小于10
-4
源程序一:(1)用for循环实现
main( )
{
int i,n;
double sum=1,t=1;
printf("input n:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t=t*i; /* 实现阶乘*/
sum=sum+1/t;
}
printf("e=%lf",sum);
}
源程序二:(2)用while循环实现
#include
main( )
{
int i;
doubel sum=1,t=1;
while(fabs(1.0/t)>1e-4) /* fabs求浮点型数据的绝对值 */
{
t=t*i;
sum=sum+1/t;
i++;
}
printf("e=%lf",sum);
}
3、编写程序,在屏幕上打印出以下图形。
*
***
*****
*******
*****
***
*
解:程序如下
main()
{
int i,j,k;
for(i=0;i<=3;i++) /*输出上面4行*号*/
{
for(j=0;j<=2-i;j++)
printf(“ “); /*输出*号前面的空格*/
for(k=0;k<=2*i;k++)
printf(“*”); /*输出*号*/
printf(“\n”); /*输出一行*号后换行*/
}
for(i=0;i<=2;i++)/*输出下面3行*号*/
{
for(j=0;j<=i;j++)
printf(“ “); /*输出*号前面的空格*/
for(k=0;k<=4-2*i;k++)/*输出*号*/
printf(“*”);
printf(“\n”); /*输出一行*号后换行*/
}
}
解析:
上面四行
i的值 空格数 j后的值 *号的个数 K后的值
0 3 2 1 0
1 2 1 3 2
2 1 0 5 4
3 0 7 6
下面三行
i的值 空格数 j后的值 *号的个数 K后的值
0 1 0 5 4
1 2 1 3 2
2 3 2 1 0