C 程序设计教程(17)—— 循环结构程序设计练习题
C 程序设计教程(17)—— 循环结构程序设计练习题
该专栏主要介绍 C 语言的基本语法,作为《程序设计语言》课程的课件与参考资料,用于《程序设计语言》课程的教学,供入门级用户阅读。
目录
- C 程序设计教程(17)—— 循环结构程序设计练习题
- 一、选择题
- 二、填空题
- 三、编程题
一、选择题
1、有以下程序:
#include<stdio.h>
int main()
{
int i,j,s=0;
for(i=1;i<=15;i+=4) //循环4次
for (j=3;j<=19;j+=4) //循环5次
s++;
printf("%d\n",s);
return 0;
}
输出结果为(C)。
A、12 B、15 C、20 D、25
2、有以下程序:
#include<stdio.h>
int main()
{
int n=10;
while(n>7)
{
n--;
printf("%d ",n);
}
return 0;
}
输出结果为(B)。
A、10 9 8 B、9 8 7 C、10 9 8 7 D、9 8 7 6
3、有以下程序:
#include<stdio.h>
int main()
{
int x=3;
do
{
printf("%3d",x-=2);
}
while(!(--x));
return 0;
}
输出结果为(C)。
A、1 B、3 0 C、1 -2 D、死循环
4、有以下程序:
#include<stdio.h>
int main()
{
int j,sum;
for(j=1;j<=6;j++) sum+=j;
printf("%d\n",sum);
return 0;
}
输出结果为(C)。
A、12 B、15 C、不确定 D、0
5、有以下程序:
#include<stdio.h>
int main()
{
int y=10;
for(;y>0;y--)
if(y%3==0){
printf("%d ",--y);
continue;
}
return 0;
}
输出结果为(B)。
A、17 4 1 B、8 5 2 C、9 6 3 D、8 7 5 4 2
6、有以下程序:
#include<stdio.h>
int main()
{
int j;
for(j=1;j<=5;j++)
{
if(j%2) printf("*");
else continue;
printf("#");
}
printf("$\n");
return 0;
}
输出结果为(A)。
A、*#*#*#$ B、#*#*#*$ C、*#*#$ D、#*#*$
7、有以下程序:
#include<stdio.h>
int main()
{
int c;
while((c=getchar())!='\n')
switch(c-'2'){
case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default:putchar(c+2);break;
}
printf("\n");
return 0;
}
当输入2476后,输出结果为(A)。
A、66898 B、668966 C、66778777 D、6688766
二、填空题
1、有以下程序:
#include<stdio.h>
int main()
{
float s=1.0;
int k,n=1000;
for(k=1;k<=n;k++)
s=s+1.0/(k*(k+1));
printf("%f\n",s);
return 0;
}
请填空,使下面程序的功能完全与上面的程序相同。
#include<stdio.h>
int main()
{
float s=1.0, d;
int k=0,n=1000;
do {
s=s+d;
________________ //此处填写:k++
d=1.0/(k*(k+1));
}
while (____________); //此处填写:k<=n
printf("%f\n",s);
}
2、下面程序运行时输入数据 3.6 和 2.4,则输出的结果为(1.600000)。
#include<stdio.h>
#include<math.h>
int main()
{
float x,y,z;
scanf("%f,%f",&x,&y); //输入:3.6和2.4
z=x/y; //z=3.6/2.4=1.5
while(1)
{
if (fabs(z)>1.0)
{
x=y; //x=2.4,y=1.5,z=2.4/1.5=1.6
//x=1.5,y=1.6,z<1.0
y=z;
z=x/y;
}
else break;
}
printf("%f\n",y); //y=1.6
}
3、在执行以下程序时,如果从键盘输入 ABCdef 后回车,则输出为(abcDEF)。
#include<stdio.h>
int main()
{
char ch;
while((ch=getchar())!='\n')
{
if(ch>='A' && ch<='Z') ch=ch+32;
else if(ch>='a' && ch<='z') ch=ch-32;
printf("%c",ch);
}
printf("\n");
}
4、设 a 为整型变量,执行循环语句 while(a++<5); 后,a 的值为(6)。
三、编程题
1、输入两 个正整数 m 和 n,求其最大公约数和最小公倍数。
程序如下:
#include<stdio.h>
int main()
{
int p,r,m,n,temp;
printf("请输入两个正整数:");
scanf("%d,%d",&m,&n);
if(m<n){
temp=m;
m=n;
n=temp;
}
p=m*n;
while(n!=0)
{
r=m%n;
m=n;
n=r;
}
printf("最大公约数为:%d\n",m);
printf("最小公倍数为:%d\n",p/m);
}
以上程序的执行结果如下:
2、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
程序如下:
#include<stdio.h>
int main()
{
char ch;
int letters=0,space=0,digit=0,other=0;
printf("请输一行字符:\n");
while((ch=getchar())!='\n')
{
if(ch>='a' && ch<='z' || ch>='A' && ch<='Z') {
letters++;
} else if(ch>='0' && ch<='9')
{
digit++;
} else if(ch==' ')
{
space++;
} else
{
other++;
}
}
printf("英文字母个数为:%d\n",letters);
printf("数字个数为:%d\n",digit);
printf("空格个数为:%d\n",space);
printf("其它字符个数为:%d\n",other);
}
以上程序的执行结果如下:
3、输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。例如:153是一个“水仙花数”,因为:153=13+53+33。
程序如下:
#include<stdio.h>
#include<math.h>
int main()
{
int i,j,k,n;
for(n=100;n<1000;n++)
{
i=n/100;
j=(n-i*100)/10;
k=n%10;
if (n==pow(i,3)+pow(j,3)+pow(k,3))
{
printf("%10d",n);
}
}
}
以上程序的执行结果如下: