当前位置:文档之家› C++循环结构

C++循环结构

C++循环结构
C++循环结构

1.公鸡6元一只,母鸡5元一只,小鸡1元三只,刚好花100元买100只鸡,有哪些买法?输入格式要求:无

输出结果格式要求:

"公鸡数 = "

"母鸡数 = "

"小鸡数 = "

#include

using namespace std;

int main()

{

int g, m, x;

for(g = 0; g <= 20; g++)

{

for(m = 0; m <= 33; m++)

{

x = 100 - g - m;

if(!(x % 3) && x / 3 + m * 5+ g * 6 == 100) {

cout<<"公鸡数 = "<

cout<<"母鸡数 = "<

cout<<"小鸡数 = "<

}

}

}

return0;

}

2.求多项式1!+2!+3!+……+15!的值。

输出格式要求:cout<<"s="<

#include

using namespace std;

int main( )

{

int s = 0;

for(int i = 1; i <= 15; i++)

{

int x = 1;

for(int j = 1; j <= i; j++)

x = x * j;

s = s + x;

}

cout << "s="<< s << endl;

return0;

}

3.用“辗转相除方法”计算两个数 x,y 的最大公约数。

输入格式要求:无,直接输入

输出格式要求:无,直接输出结果

#include

using namespace std;

int main()

{

int x, y, n;

cin>>x>>y;

n = x % y;

while (n != 0)

{

x = y;

y = n;

n = x % y;

}

cout<

return 0;

}

4用while循环编程,求自然数1至100之间各奇数平方和sum。

输出结果格式为:sum=166650

#include

using namespace std;

int main ()

{

int i = 1,n, sum=0;

while (i <= 100)

{

n= i*i;

sum = sum + n;

i=i+2;

}

cout << "sum=" << sum<

return 0;

}

5.输出100到1000之间的各位数字之和能被15整除的所有数,输出时每10个一行。输入格式要求:无

输出格式要求:cout << setw(5) << m;

每10个一行。

#include

#include

using namespace std;

{

int m, n, k, i = 0;

for(m = 100; m <= 1000; m++)

{

k = 0;

n = m;

do

{

k = k + n % 10 ;

n = n / 10;

}

while(n > 0);

if(k % 15 == 0)

{

cout << setw(5) << m;

i++;

if(i % 10 == 0) cout << endl;

}

}

return0;

}

6.将1-100之间奇数顺序累加存入n中,直到其和等于或大于200为止。

输出结果格式:n=225

#include

using namespace std;

int main()

{

int a,n;

n=0;

for(a=1;a<=100;)

{

n+=a;

if(n>=200)

break;

a+=2;

}

cout<<"n="<

}

7.有递推公式 f(n)=0.5*f(n-1)+0.7*f(n-2),已知f(0)=1,f(1)=1,求f(20) 输入格式要求:无

输出结果格式要求: "f(20) = "

#include

using namespace std;

{

double f, f1, f2;

f2 = 1;

f1 = 1;

for(int n = 2; n <= 20; n++)

{

f = 0.5 * f1 + 0.7 * f2;

f2 = f1;

f1 = f;

}

cout << "f(20) = "<< f << endl;

return0;

}

8.求1至200之间的所有质数,将质数和存入变量 sum 中并输出。

质数(素数)的说明:“质数是只能被1和其本身整除的数”。

输入提示要求:无

输出结果格式要求:质数之间以一个空格隔开

输出所有质数后换行输出:sum=4227

# include

# include

using namespace std;

int main()

{

int N, m, sum = 0;

for(m = 2; m <= 200; m++)

{

int i, tmp = (int)sqrt(m);

for(i = 2; i <= tmp; i++)

if(m % i == 0) break;

if(i > tmp)

{

cout << m << " ";

sum += m;

}

}

cout<

cout<<"sum="<

return0;

}

9.以下程序的功能是以每行5个数来输出300以内能被7或17整除的偶数,并求出其和。输入格式:无

输出格式:每个数据以一个空格隔开,5个一行

和另起一行输出

cout << "sum=" << sum<

#include

using namespace std;

int main()

{

int i, n, sum;

sum = 0;

n = 0;

for(i = 1; i < 300 ; i++)

if(i % 7 == 0 || i % 17 == 0)

if(i % 2 == 0)

{

sum = sum + i;

n++;

cout << i << ' ';

if(n % 5 == 0) cout << endl;

}

cout<

cout << "sum="<< sum<

return0;

}

10从键盘上输入若干名学生的成绩,以一个负分结束输入,计算平均成绩并统计90分以上的学生人数。

输入信息格式要求:cout<<"请输入学生成绩,以负数结束输入:"<

输出信息格式要求:输出平均成绩和90分以上的学生人数,中间用空格分隔,输出结束后换行结束程序

#include

using namespace std;

int main()

{

int score, n = 0, t = 0;

double sum = 0, average;

cout << "请输入学生成绩,以负数结束输入:" << endl;

cin >> score;

while (score >= 0)

{

if (score >= 90)

t = t + 1;

sum = sum + score;

n = n + 1;

cin >> score;

}

if (n > 0)

average = sum / n;

cout << average << " " << t << endl;

return 0;

}

11.从键盘输入一批非零整数,输出其中的偶数、奇数的平均值,用零作为终止标记。输入格式要求:无

输出提示信息格式要求: "偶数平均值:"

"奇数平均值:"

#include

using namespace std;

int main()

{

int x, i = 0, j = 0;

float s1 = 0, s2 = 0, av1, av2;

cin >> x;

while(x != 0)

{

if(x % 2 == 0)

{

s1 = s1 + x;

i++;

}

else

{

s2 = s2 + x;

j++;

}

cin >> x;

}

if(i != 0) av1 = s1 / i;

else av1 = 0;

if(j != 0) av2 = s2 / j;

else av2 = 0;

cout << "偶数平均值:"<< av1 << endl;

cout << "奇数平均值:"<< av2 << endl;

return0;

}

12.程序设计: 打印如下图案

*****

*****

*****

*****

*****

输入信息格式提示: 无

输出信息格式提示: 无

#include

using namespace std;

int main()

{

int i, j;

for(i = 1; i <= 5; i++)

{

for(j = 1; j <= i; j++) cout << " ";

for(j = 1; j <= 5; j++)

cout << "*";

cout << endl;

}

return0;

}

13.程序设计: 打印出1000以内的同时满足如下条件的数,个位数字与十位数字之和除以10所得的余数等于百位数字

输入提示信息格式:无

输出提示信息格式:无

#include

#include

#include

using namespace std;

int main()

{

int a, b, c, d, i, j, flag = 1;

for(i = 3; i < 1000; i++)

{

for(j = 2, flag = 1; j <= sqrt(i) && flag; j++)

if(i % j == 0) flag = 0;

if(flag == 1)

{

a = i / 100;

b = (i - a * 100) / 10;

c = i - a * 100 - b * 10;

d = b + c - (c + b) / 10 * 10;

if(d == a)

cout << setw(5) << i;

}

}

return0;

}

14.打印水仙花数及个数 n (水仙花数是三位数,每位数字的立方和等于这个数本身)。输入格式要求:无

输出结果:153,370,371,407,n=4

#include

using namespace std;

int main ()

{

int a, b, c, i, n = 0;

for (i= 100; i <= 999; i++)

{

a = i / 100;

b = (i- a * 100) / 10;

c = (i - a * 100 - b * 10);

if (i == a * a * a + b * b * b + c * c * c)

{

n++;

cout << i << "," ;

}

}

cout<<"n="<

return 0;

}

15.程序设计:计算T=1-1/2+2/3-3/4+……-29/30

输入提示信息格式说明: 无

输出提示信息格式说明: 无

输出结果:0.323242

#include

using namespace std;

int main()

{ int f, k;

float t1, t = 1;

f = -1;

for(k = 2; k <= 30; k++)

{

t1 = (float)(k - 1) / k;

t += t1 * f;

f = -f;

}

cout << t;

return0;

}

16用1,2,3可组成多少各位无重复的3位数,分别输出,用一个空格分隔,每行输出3个数

输入格式要求:无

#include

using namespace std;

int main( )

{

int i, j, k, n = 0;

for( i = 1; i <= 3; i++ )

for( j = 1; j <= 3; j++ )

for( k = 1; k <= 3; k++ )

{

if( i != j && i != k && k != j )

{

cout << i << j << k << " ";

n++ ;

if(n % 3 == 0)

cout << endl;

}

}

cout << endl;

return0;

}

17.程序设计: 在[100,5000]之间打印出各位数字和为5的所有整数的个数.

输入信息格式提示:无

输出信息格式提示:无

#include

using namespace std;

int main()

{

int a, b, c, d, k, i;

k = 0;

for(i = 104; i <= 500; i++)

{

a = i / 100;

b = (i - a * 100) / 10;

c = i - a * 100 - b * 10;

if(a + b + c == 5) k++;

}

for(i = 1000; i <= 5000; i++)

{

a = i / 1000;

b = (i - a * 1000) / 100;

c = (i - a * 1000 - b * 100) / 10;

d = i - a * 1000 - b * 100 - c * 10;

if(a + b + c + d == 5) k++;

}

cout << k;

return0;

}

18.以下程序的功能是用公式π/4=1-1/3+1/5-1/7+......求π的近似值。要求直到最后一项的绝对值小于1e-6为止。

输出提示信息格式控制: cout << "pi=" << pi << endl;

#include

#include

using namespace std;

int main()

{

double t, pi, a, b;

pi = 0;

a = 1;

b = 1;

t = a / b;

while(fabs(t) >= 1e-6)

{

pi = pi + t;

a = -a;

b = b + 2;

t = a / b;

}

pi = pi * 4;

cout << "pi="<< pi << endl;

return0;

}

19.从键盘输入一个正整数,判断是否能写成2个素数之和,并输出所有的素数组合

输入格式要求:无

输出结果要求:每组占一行,以逗号分隔

例如,输入5,则输出:2,3

3,2

#include

using namespace std;

int main( )

{

int x, f1, f2;

cin >> x;

int n;

for(n = 1; n <= x - 1; n++)

{

f1 = 1;

int i;

for(i = 2; i <= n - 1; i++)

if(n % i == 0)

f1 = 0;

f2 = 1;

for(i = 2; i <= x - n - 1; i++)

if((x - n) % i == 0)

f2 = 0;

if(f1 == 1 && f2 == 1)

cout << n << ','<< x - n << endl;

}

return0;

}

20.有若干个数放入数组中,计算其中正数的平均值aver.

设:float a[6] = {39, -47, 21, 2, -8, 15}, aver;

输入格式要求:无

输出结果为:aver=19.25

#include

using namespace std;

int main ()

{

int i = 0, n = 0;

float a[6] = {39, -47, 21, 2, -8, 15}, aver,sum = 0;

for (i=0;i <= 5; i++)

{

if (a[i] > 0)

{

sum = sum + a[i];

n++;

}

}

aver = sum / n;

cout << "aver=" << aver << endl;

return 0;

}

21.用迭代法解方程 x+sin(x)-3=0

输入格式要求:无

迭代次数:200

每隔10次查看迭代误差,格式: cout << "迭代误差 = " << fabs(x - xx) << endl;

输出结果格式: x=2.17976

#include

#include

using namespace std;

int main( )

{

double x = 0.1;

double xx;

for(int n = 1; n <= 200; n++)

{

xx = x;

x = 3 - sin(xx);

if(n % 10 == 0)

cout << "迭代误差 = "<< fabs(x - xx) << endl;

}

cout << "x="<< x << endl;

return0;

}

22.判断一个数23437是否是素数(要求程序中设置一个参数flag,flag为1代表是素数,为0代表不是)

输出结果:0

#include

#include

using namespace std;

int main()

{

int m, n, flag = 1;

m = 23437;

for(n = 2; n <= m / 2 && flag; n++)

if(m % n == 0)flag = 0;

cout << flag << endl;

return0;

}

23.输入10个学生的成绩,存放在一个一维数组中,找出其中的最高分和所对应的学生。输入提示信息格式要求:cout << "请输入学生的分数:";

输出提示信息格式要求:cout << "第" << n + 1 << "名学生的分数最高,是:" << max << endl;

#include

#include

using namespace std;

int main()

{

int a[10], max, i, n;

cout << "请输入学生的分数:";

for(i = 0; i <= 9; i++)

cin >> a[i];

max = a[0];

for(i = 1; i <= 9; i++)

if(max < a[i])

{

max = a[i];

n = i;

}

cout << "第"<< n + 1 << "名学生的分数最高,是:"<< max << endl; }

24.设 s=1+1/2+1/3+...+1/n,求与8最接近的s的值及与之对应的n值。

要点分析:用循环程序计算s的值,循环结束的条件是s大于或等于8,循环结束后只需判断s与s-1.0/n哪个与8更接近。

输入格式要求:无

输出结果格式要求:"n ="

#include

using namespace std;

int main( )

{

double n = 0, s = 0;

while(s < 8)

{

n = n + 1;

s = s + 1 / n;

}

if(s - 8 > 8 - (s - 1 / n) )

n = n - 1;

cout << "n ="<< n << endl;

return0;

}

25.一个数列,它的第一项是0,第二项是1,以后每项都是前两项之和,求前20项之和s。

输入格式要求:无

输出结果:s=10945

#include

using namespace std;

int main ( )

{

int m = 0, n = 1, s = 0, i;

for (i = 1; i <= 20; i++)

s = m + n;

m = n;

n = s;

}

cout << "s=" << s-1 << endl;

return 0;

}

26.已知n,计算n以内的所有素数之和sum 。

输入提示信息:无

输出结果格式要求:"sum="

#include

using namespace std;

int main()

{

int n, k, m, l, sum = 0;

cin >> n;

for(k = 2; k <= n; k++)

{

m = 1;

for(l = 2; l <= k / 2 && m == 1; l++)

if(k % l == 0)m = 0;

if(m)sum += k;

}

cout << "sum="<< sum << endl;

return0;

}

27.)有一天,一位百万富翁遇到一个陌生人,陌生人找他谈一个换钱的计划,陌生人对百万富翁说:“我每天给你10万元,而你第一天只需给我1分钱,第二天我仍给你10万元,你给我2分钱,第三天我仍给你10万元,你给我4分钱……。你每天给我的钱是前一天的两倍,直到满一个月(30天)为止”,百万富翁很高兴,欣然接受了这个契约。请编程计算在这一个月中陌生人总计给百万富翁多少钱,百万富翁总计给陌生人多少钱。

**输入提示信息和数据格式:无

**输出提示信息和数据格式:cout << "百万富翁给陌生人:" << toStranger << "元" << endl; cout << "陌生人给百万富翁:" << toRichman << "元" << endl; #include

using namespace std;

int main()

{

int j;

double toStranger = 0; /* 富翁给陌生人的钱,以'元'为单位 */

double toRichman = 0; /* 陌生人给富翁的钱,以'元'为单位 */

double term = 0.01; /* 富翁第一天给陌生人0.01元 */

for (j = 1; j <= 30; j++)

toRichman += 100000; /* 陌生人每天给富翁10万元 */

toStranger += term;

term = term * 2; /* 富翁每天给陌生人的钱是前一天的两倍 */ }

cout << "百万富翁给陌生人:" << toStranger << "元" << endl;

cout << "陌生人给百万富翁:" << toRichman << "元" << endl;

return 0;

}

28.输入两个正整数,用辗转相除法计算它们的最大公约数。

要点分析:辗转相除法可以描述为:

设u和v为两个正整数,且u>v,辗转用操作:

r=u%v;

u=v;

v=r;

直到v=0时结束,结束时的u值就是所求解。

输入格式要求:无

输出结果格式要求:"最大公约数 = "

#include

using namespace std;

int main( )

{

int x, y, u, v, r;

cin >> x >> y;

if(x >= y)

u = x, v = y;

else

u = y, v = x;

while(v > 0)

{

r = u % v;

u = v;

v = r;

}

cout << "最大公约数 = "<< u << endl;

return0;

}

29. 已知一个数m(=252),用循环求各位数字之积。

输出结果格式:f=20

#include

using namespace std;

int main ()

{

int m = 252, f = 1;

while(m % 10)

{

f = f * (m % 10);

m = m / 10;

}

cout << "f="<< f << endl;

return0;

}

30.用公式π=4-4/3+4/5-4/7+...)计算π的近似值,直到最后一项绝对值小于1e-5 输入格式要求:无

输出结果格式要求: cout << "pi =" << pi << endl;

#include

using namespace std;

int main( )

{

double pi = 0;

double n = 1;

int f = 1; //用存第n项的符号

while(4.0 / n >= 1e-5)

{

pi = pi + f * 4 / n;

n = n + 2;

f = -f;

}

cout << "pi ="<< pi << endl;

return0;

}

31.输入10个成绩,统计A、B、C、D、F的人数,其中90分及以上是A,80~89分是B,70~89分是C,60~69分是D,60分以下是F

输入格式要求:无

输入成绩小于0或大于100,输出: "输入错误,请重新输入 ", 并重新输入该成绩

输出结果格式:

"A的人数 = "

"B的人数 = "

"C的人数 = "

"D的人数 = "

"F的人数 = "

#include

using namespace std;

int main( )

{

int na = 0, nb = 0, nc = 0, nd = 0, nf = 0;

int score;

int i = 1;

while(i <= 10)

{

cin >> score;

if(score > 100 || score < 0)

{

cout << "输入错误,请重新输入 "<< endl;

continue;

}

if(score >= 90)

na++;

else if(score >= 80)

nb++;

else if(score >= 70)

nc++;

else if(score >= 60)

nd++;

else

nf++;

i++;

}

cout << "A的人数 = "<< na << endl;

cout << "B的人数 = "<< nb << endl;

cout << "C的人数 = "<< nc << endl;

cout << "D的人数 = "<< nd << endl;

cout << "F的人数 = "<< nf << endl;

return0;

}

32.有欧拉公式 x=n2+n+41,验证整数n在-30~30间时所生成的x是否都是素数输入格式要求:无

输出结果格式要求:若都是素数输出"都是素数", 否则输出"不都是素数"

#include

using namespace std;

int main( )

{

int flag = 1;

for(int n = -30; n <= 30; n++)

{

int x;

x = n * n + n + 41;

int t = 1;

for(int i = 2; i <= x - 1; i++)

{

if(x % i == 0)

t = 0;

}

if(t == 0)

flag = 0;

}

if(flag == 1)

cout << "都是素数 "<< endl;

else

cout << "不都是素数 "<< endl;

return0;

}

33.文本替换加密:

加密规则:将明文(键盘输入的一行英文文本)中小写字母用其后面第k个字母替换(k小于26),大写字母用其后面第l个字母替换(l小于26),可将字母表看成是首尾相接的,例如:当k=3时,字母c替换为f,字母y替换为b。

解密规则:输入密钥(加密用到的数字k和l),将密文(加密后的一行英文文本)中小写字母用其前面第k个字母替换,大写字母用其前面第l个字母替换(l小于26),可将字母表看成是首尾相接的。解密过程是加密过程的逆过程。

请编写程序实现这一过程。

输入提示信息要求: cout << "请输入一行英文文本:" << endl;

cout << "请输入两个加密密钥:" << endl;

输出提示信息要求: cout << "加密后文本密文为:" << endl;

cout << "将密文解密后文本为:" << endl;

#include

#include

using namespace std;

void encode(char*p, int n, int m)

{

while(*p != '\0')

{

if(*p >= 'A'&& *p <= 'Z')

{

*p = *p + n;

if(*p > 'Z')

*p = *p - 26;

}

else if(*p >= 'a'&& *p <= 'z')

{

*p = *p + m;

if(*p > 'z')

*p = *p - 26;

}

p++;

}

}

void decode(char*p, int n, int m)

{

while(*p != '\0')

{

if(*p >= 'A'&& *p <= 'Z')

{

*p = *p - n;

if(*p < 'A')

*p = *p + 26;

}

else if(*p >= 'a'&& *p <= 'z')

{

*p = *p - m;

if(*p < 'a')

*p = *p + 26;

}

p++;

}

}

int main()

{

int n, m;

char string[256];

cout << "请输入一行英文文本:"<< endl;

cin >> string;

cout << "请输入两个加密密钥:"<< endl;

cin >> n >> m;

encode(string, n, m);

cout << "加密后文本密文为:"<< endl;

cout << string << endl;

decode(string, n, m);

cout << "将密文解密后文本为:"<< endl;

cout << string << endl;

return0;

}

34.程序设计: 一个数列的头三个数是0,0,1,第四个数是前三个数之和,以后每个都是前三个数之和,问当该数列中的某个数值达到10的15次方,它是该数列的第几项?

输入提示信息格式:无

输出提示信息格式:无

#include

using namespace std;

int main()

{ double i, j, k, l, n;

i = j = 0;

k = 1;

n = 3;

while(k < 1e15)

{

n++;

l = i + j + k;

i = j;

j = k;

k = l;

}

cout << n;

return0;

}

35.

编程计算自然数的立方和,直到立方和大于等于1000000时为止。统计并输出实际累加的项数。

要求输出结果为: sum=1071225

count =45

#include

using namespace std;

int main()

{

long i, sum = 0;

for(i = 1; ; i++)

{

sum = sum + i * i * i;

if(sum >= 1000000) break;

}

cout<<"sum="<

cout << "count ="<< i << endl;

return0;

}

36.利用选择法将下面10个数按降序排列。

有如下定义:int n[10] = {5, 6, 4, 2, 3, 7, 8, 5, 6, 7};

输入格式要求:无

输出格式要求:以逗号分隔降序数列

#include

using namespace std;

int main()

顺序结构选择结构和循环结构的程序设计典型例题分析与解答

顺序结构、选择结构和循环结构的程序设计典型例题分析与解答 1 在三种选择结构中,能用2个条件,控制从3个操作中选择一个操作执行的选择结构是______选择结构 【分析】能用1个条件,控制某个操作做或不做的选择结构是单分支结构;能用1个条件,控制从2个操作中选择一个操作执行的选择结构是双分支结构;能用n(n>l)个条件,控制从n+ l个操作中选择一个操作执行的选择结构是多分支结构。【答案】多分支 2 在三种循环结构中,先执行循环操作内容(即循环体),后判断控制循环条件的循环结构是______循环结构。 【分析】当型循环结构是先判断控制循环的条件,条件成立,执行循环体;条件不成立,则退出循环体。次数型循环结构也是先判断是否达到循环次数,没有达到循环次数,执行循环体;达到循环次数的,退出循环。只有直到型循环结构才是先执行循环体,然后再判断控制循环的条件,如果条件成立,进行循环;条件不成立,退出循环。 【答案】直到型 3 使用“getchar( )”函数时,程序的开头必须写一条包含命令为____________。 【分析】凡是使用系统函数的程序,都要在程序的开头写一条包含命令,包含命令中的“头函数.h”是一个文件,其中有关于该系统函数的定义。系统函数“getchar( )”是在名为“stdio.h(标准输入输出函数)”的头函数文件中定义的。【答案】#include"stdio.h"或#include<stdio.h> 4 执行输入语句“scanf("x=%c,y=%d",&x,&y);”,要使字符型变量X的值为'A'、整型变量y的值为12,则从键盘上正确的输入是( ) ①'A'/②A/③x=A/ ④x=A,y=12/ 12/ 12/ y=12/ 说明:备选答案中的"/"表示回车换行键 【分析】输入语句的格式控制符串中的“x=”、“,”、“y=”都是非格式控制符, 在输入时必须原样位置输人,所以只有备选答案④才符合这个要求。【答案】④ 5 设有下列程序段,则执行该程序段后的输出是( ) int i=012; float f=1.234E-2; printf("i=%-5df=%5.3f",i,f); ... ①i=__012f=1.234 ②i=10___f=0.012 ③10___O.012 ④___100.012 注:答案中的_代表一个空格。 【分析】输出语句的格式控制符串中的“i=”、“f=”都是非格式控制符,在输出时必须原样,原位置输出,所以只有备选答案①和②才符合这个要求;格式控制符“%-5d”的格式控制是数据左对齐、宽度为5的整型数据,备选答案①中的数据是右对齐的;此外,该答案中的实数“1.234E-2”应该代表“0.01234”,而不是“1.234”。只有备选答案②符合题意。【答案】② 6 在Turbo C的主屏幕中,将当前编辑的源程序以原名存盘,可以选用___________菜单项,也可以直热键________。 【分析】如果选用“File/Save”菜单项,或者使用热键(f12),当前编辑的源程序将以原来的文件名存盘;如果选用“File /Write to”,当前编辑的源程序将以新的文件名存盘。 【答案】File/Save F2 7 下列各种选择结构的问题中,最适合用if-else语句来解决的是( ) ①控制单个操作做或不做的问题 ②控制两个操作中选取一个操作执行的问题 ③控制三个操作中选取一个操作执行的问题 ④控制10个操作中选取一个操作执行的问题 【分析】if-else语句是专门解决“双分支结构”的,而“双分支结构”的问题就是用单个条件控制从两个操作中选取一个操作来执行的问题。 【答案】② 8 下列程序是输入一个小写字母,转换成对应大写字母的后一个字母输出。例如:'a'将转换成’B’、…、‘y’将转换成’Z’,其中的’Z’将转换成’A’。请填写程序中所缺少的语句。 main() {char ch ; scanf(”%c”,&ch〕; ch=ch- 32+1; ___________________; printf("%c\n",ch); } 【分析】分析程序库中的“ch=ch- 32+ 1;”语句,可知是将字符型变量 ch中的小写字母转换成对应的大写字母(- 32)的后一个字母(+ l)。如果ch中的字母是' a'、' b'、··,'y',转换结果都不会出错,但是,如果 ch中的字母是'Z',则-32后是大写字母'Z',再+l后将不是大写字母了。为了使其转换成'A',需要用一个单分支结构来实现:如果ch的值等于'Z'+ l,则硬性将 ch的值改成'A'。完成这个任务的语句是一条单分支语句,正是所缺少的语句。 【答案】 if (ch=='Z'+l) h='A'; 9不能正确计算下列分段函数的程序段是_________ |-1 x<0 y=|0 x=0 x>0 ① switch(x< 0)② if(x> 0) {case1:y=-1;break; y=1; case 0:switch(x==0)else {casel:y=0;break;if(x==0) case 0: y= l;y=0 } else } &ny=-l ③ y= l;④ y= l; if(x==0)if(x<0) y=0; y =-l; else else y=- l; if(x== 0) y=0; 【分析】先来分析备选答案①:表达式“x<0”的值只有两种可能性,成立值为1、不成立值为on如果“x<0”的值为 1(即 x< 0),则执行“easel:”后的语句“y=-l”后,退出 switch语句,符合分段函数要求。如果“x<0”的值为0(即x>=0),则执行“case 0:”后的switch语句。该switch语句的表达式是“x==0”,结果也有两种:成立为1、不成立为0.如果“x==0”的值为1(即x=0),则执行“case l:”后的语句“y=0”后,退出 switch语句,符合分段函数要求。如果“x==0”的值为0(即x>0),则执行“case 0:”后的语句“y=1”,也符合分段函数要求。再分析备选答案②:这是标准的用嵌套双分支结构来实现三分支的分段函数,结果显然是能求解分段函数的。分析备选答案③:双分支语句的条件是“x==0”,条件成立时,y值为0,符合分段函数的要求,条件不成立时(包含x>0和x<0两种情况),结果y值为-l,显然不符合分段函数的要求,所以本题要选该答案。至于备选答案④,是能正确计算分段函数的,首先置y为1;接着用双分支结构处理“x<0”和“x>=0”的两种情况:前者使得y值为一l;后者再执行一个单分支结构,如果“x==0”则使y值为0,否则不改变y值,保持y的原值1,符合分段函数的要求。 【答案】③ 10 三种循环语句都能解决循环次数已经确定的次数型循环,其中__________循环语句最适合。 【分析】当“for(表达式 1;表达式 2;表达式 3)语句;”中的表达式1为:整型变量 k=l;表达式 2为:整型变量 k<= n;表达式 3为:整型变量 k++;则这个 for循环就是次数为n次的标准次数型循环结构。 【答案】for 11执行下列程序段后的输出是() x=l; while(x<=3) x++,y=x+++x; printf("%d,%d",x,y); ① 6,10 ②5,8 ③4,6 ④3,4 【分析】我们可以使用逐步记录运行结果的方法来获得输出结果,记录如下: x=1; 进入循环,条件满足执行循环体:计算x+十得x为2,计算y=x+++x,得y为4、x为3; 继续循环,条件满足执行循环体:计算x+十得x为4,计算y=x+++x,得y为8、x为5; 继续循环,条件不满足退出循环; 输出x和y的值为5,8。 【答案】② 12 执行下列程序段,其中的do-while循环一共执行_次。 static int x; do x+=x*x; while (x); 【分析】对静态型变量,不赋初值也有值,对整型变量,其值为 0。执行循环语句 do-while 的循环体,x+=x* x是x=x+(x*

c语言三种循环结构

任务1:控制LED 小灯亮灭 1.流程图如下: 2.程序如下: #include #define uint unsigned int #define uchar unsigned char void main() //主函数 { while(1) //while死循环 { if((P3&0x10)==0) //判断P3口上的八位与00010000相与后是否等于0,若是, 则P3.4口为低电平,也就是接在P3.4口上的开关按上了。 P1=0xfe; //当P3.4口上的开关按上了,那么就由用户使接在P1.0口 上的灯亮。 else if((P3&0x20)==0) //和上面的一样,判断P3.5口上的开关是否按上了。 P1=0Xfd; //当P3.5口上的开关按上了,点亮接在P1.1口上的灯。 else if((P3&0x40)==0) //判断P3.6口的开关是否按上了。

P1=0xfb; //当P3.6口上的开关按上了,点亮接在P1.2口上的灯。 else if((P3&0x80)==0) //判断P3.7口的开关是否按上了。 P1=0xf7; //当P3.7口上的开关按上了,点亮接在P1.3口上的灯。 else P1=0xff; //当没有按键按下时,P1口上的全部灯都不亮。 } } 3.仿真结果如下: 4.仿真结果分析: 从仿真图以及程序可以看出,当P3.4口上的开关按下时,不管其它三个开关有没有按下,只有受P3.4口开关控制的那个灯(p1.0口上的灯)才亮,以此类推,当只有P3.7口上的开关按下时,P1.3口上的灯才亮,而其它灯不亮,因为控制其它灯的按键没有按下,接在其它灯的IO口处于高电平状态。

C语言 循环结构程序设计模拟题

第五章循环结构程序设计 一、选择题 1.while循环语句中,while后一对圆括号中表达式的值决定了循环体是否进行,因此,进入while循环后,一定有能使此表达式的值变为的操作,否则,循环将会无限制地进行下去。(0级) A)0 B)1 C)成立D)2 2.在do-while循环中,循环由do开始,用while结束;必须注意的是:在while表达式后面的不能丢,它表示do-while语句的结束。(0级) A)0 B)1 C);D), 3.for语句中的表达式可以部分或全部省略,但两个不可省略。但当三个表达式均省略后,因缺少条件判断,循环会无限制地执行下去,形成死循环。(0级)A)0 B)1 C);D), 4.程序段如下 int k=-20; while(k=0) k=k+1; 则以下说法中正确的是。(1级) A)while循环执行20次B)循环是无限循环 C)循环体语句一次也不执行D)循环体语句执行一次5.程序段如下 int k=1; while(!k==0) {k=k+1;printf("%d\n",k);} 说法正确的是。(1级) A)while循环执行2次B)循环是无限循环 C)循环体语句一次也不执行D)循环体语句执行一次6.以下for循环是。(1级) for(a=0,b=0;(b!=123)&&(a<=4);a++) A)无限循环B)循环次数不定C)执行4次D)执行5次7.在下列程序中,while循环的循环次数是。(1级) main( ) { int i=0; while(i<10) {if(i<1) continue; if(i= =5) break; i++; } ...... } A)1 B)10 C)6 D)死循环、不能确定次数8.程序段如下 int k=0; while(k++<=2) printf("%d\n",k); 则执行结果是。(1级)

(完整版)C语言循环结构练习题带答案

第5章循环结构程序设计 练习题 1. 单项选择题 (1)语句while (!e);中的条件!e等价于 A 。 A. e==0 B. e!=1 C. e!=0 D. ~e (2)下面有关for循环的正确描述是 D 。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在for循环中,不能用break语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中 D 。 A. 不能使用do-while语句构成的循环 B. do-while语句构成的循环必须用break语句才能退出 C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是 A 。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格 C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 (5)以下程序段 C 。 int x=-1; do { x=x*x; } while (!x); A. 是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误 (6)下列语句段中不是死循环的是__C__。

第5章循环结构程序设计35 A. i=100; while (1) { i=i%100+1; if (i==20) break; } B. for (i=1;;i++) sum=sum+1; C. k=0; do { ++k; } while (k<=0); D. s=3379; while (s++%2+3%2) s++; (7)与以下程序段等价的是__A__。 while (a) { if (b) continue; c; } A. while (a) B. while (c) { if (!b) c; } { if (!b) break; c; } C. while (c) D. while (a) { if (b) c; } { if (b) break; c; } (8)以下程序的输出结果是_B___。 #include main() { int i; for (i=4;i<=10;i++) { if (i%3==0) continue; COUT<

VB基本知识及选择、循环结构习题

一、VB 基本知识及选择、循环结构习题 一、基本概念题 (1) 说明下列哪些是Visual Basic 合法的直接常量,并分别指出它们的类型。 %100 1E1 123D3 123,456 0100 “ASDF” “” #2004/10/7# 100# π &O78 &H123 True T -1123! # (2)下列数据哪些是变量,哪些是常量是什么类型的常量 Name “name” False ff “11/16/99” cj “120” n #11/12/2004# (3) 下列符号中,哪些可以是Visual Basic 的合法变量名 A123 a12_3 123_a a,123 a 123 Integer XYZ False Sin(x) 变量名 sinx π (4)把下列数学表达式写成Visual Basic 表达式: (1)5||z y x ++ (2)6)1(xy + (3)xy y x 310+ (4)a ac b b 242-+- (5)3211111r r r ++ (6)110ln 45sin 10++++y x e (5)写出下列表达式的值: (1)123 + 23 Mod 10 \ 7 + Asc("A") (2)Int * 100 + / 100 (3)#11/22/2004# - 10 (4)"ZXY" & 123 & "abc" (6)设a=7,b=3,c=4,求下列表达式的值: (1)a + 3 * c (2)a ^ 2 / 4 (3)a / 2 + 3 \ 2 (4)a Mod 3 + b ^ 3 / c \ 5 (7)写出下列函数的值: (1)Int (2)Fix (3)Sqr(Sqr(81)) (4)Len("Visual Basic 程序设计") (5)Int(Abs(99 - 100) / 2) (6)Sgn(7 * 3 + 2) (7)LCase("Hellow VB!") (8)Mid("Hellow VB!", 4, 3) (9)Left("Hellow VB!", 3) (10)Val("16个加23个") (11)Str (12)UCase("Visual Basic") 二、 选择题 (1)可以同时删除字符串前导和尾部空格的函数是 。 A. Ltrim B. Rtrim C. Trim D. Mid (2)函数Int(Rnd(1) * 10)是在哪个范围产生随机整数 。 A. (0,1) B. (0,9) C. (1,10) D. (1,9) (3)数学式子sin25o写成Visual Basic 表达式是 。 B. Sin(25) C. Sin(25o) D. Sin(25*180) (4)表达式16/4 – 2^3 * 8/4 Mod 5\2的值是 。 A. 14 B. 4 C. 20 D. 2 (5)数学关系式103<≤x 表示成正确的VB 表达式为 。 A. 3<= x <10 B. x >= 3 And x<10 C. x>=3 Or x<10 D. 3<= x And <10

C语言循环结构练习题带答案.doc

第 5 章循环结构程序 设计 练习题 1.单项选择题 ( 1)语句 while (!e);中的条件!e等价于A。 A. e==0 B. e!=1 C. e!=0 D. ~e ( 2)下面有关for循环的正确描述是D。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在 for循环中,不能用break 语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中D。 A.不能使用do-while语句构成的循环 B. do-while 语句构成的循环必须用break 语句才能退出 C. do-while 语句构成的循环,当while 语句中的表达式值为非零时结束循环 D. do-while 语句构成的循环,当while 语句中的表达式值为零时结束循环 ( 4) C 语言中 while 和 do-while 循环的主要区别是A 。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格 C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 ( 5)以下程序段C。

int x=-1; do { x=x*x; } while (!x); A.是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误( 6)下列语句段中不是死循环的是__C__。 A.i=100; while (1) { i=i%100+1; if (i==20) break; } B.for (i=1;;i++) sum=sum+1; C.k=0; do { ++k; } while (k<=0); D.s=3379; while (s++%2+3%2) s++;

顺序结构、选择结构和循环结构的程序设计

顺序结构、选择结构和循环结构的程序设计 请写出switch语句的一般格式及注意事项。 一般格式: Switch(表达式) {case常量表达式1:语句组1;break; Case常量表达式2:语句组2;break; …… Case常量表达式n:语句组n;break; Default:语句组n+1;}1switch中表达式可以是任意类型,常用的是字符或整型。2每个常量表达式的值不能相同。3语句组可以为任意语句。4break可以省略,然后执行完本组语句后紧接着执行其后的i+1组语句。5多个case可以用一组执行语句。6break的作用是跳出switch,执行switch下面的语句。 试说明while语句和do-while语句的异同:二者相同点在于都可以进行次数确定的循环体的次数。不同点在于do-while现执行循环中的语句,然后再判断条件是否为真,若为真则继续循环;若为假则终止循环。因此,do-while循环至少要执行一次循环语句。而while则是先判断条件后执行循环体简述for语句的执行过程及注意事项: 计算机表达式1 表达式2非0? 执行语句s 计算机表达式3 循环结束,执行下面的语句 注意事项:for语句中的3个表达式可以省略但后面的分号不能省略。 试说明continue语句和break语句的作用及区别:break的功能是跳出本层循环(对多层循环而言),接着执行下面的语句。continue语句的作用是执行continue时,循环体中continue下面的语句都不执行,重新进行循环判断以决定是否继续进行下次循环。Break和continue的区别在于:continue C 有一段程序为:while(表达式) 语句1;语句2; …… do-while语句中while 在C C C C C C语言中,语句x=!a==b 3个关于C语言的结论:可以用while语句实现的循环一定可以用for语句实现;可以用for语句实现的循环一定可以用while语句实现;可以用do-while C语言程序中,continue C语言中,if和switch C语言中,语句while C语言中,关于scanf C语言中,与语句while(!E C语言程序中,for循环语句中的表达式2为一非零常数且循环体内无break语句及goto 设i是int scanf(“i=%d,f=%f”,&i,&f);为了把100和765.12分别赋给i和 f

C语言循环结构程序设计实验报告

甘肃政法学院 本科生实验报告 ( 五) 姓名:赵明翔 学院:公安技术学院 专业:安全防范工程 班级: 2015级安全防范工程班 实验课程名称:程序设计 实验日期:2016年月日 开课时间:2015学年第二学期 实验题目实验5 循环结构程序设计小组合作 姓名赵明翔班级安全防范工 程学号20158313 0145 一、实验目的 1.熟悉掌握用while语句,do...while 语句和for语句实现循环的方法。 2.掌握在程序设计中用循环的方法实现一些常用的算法(如穷举,代,递推等)。 3.进一步学习调试程序。 二.实验环境

Miscroft Visual C++6.0环境。 三、实验内容与步骤 编程序并上机调试程序。 (1)输入一行字符,分别统计出其中的英文字母,空格,数字和其他字符的个数。 程序如下: #include int main() { char c; int letters=0,space=0,digit=0,other=0; printf("请输入一行字符:\n"); while((c=getchar())!='\n') { if(c>='a'&&c<='z'||c>='A'&&c<='Z') letters++; else if(c==' ') space++; else if(c>='0'&&c<='9') digit++; else other++; } printf("字母数:%d\n空格数:%d\n数字数:%d\n其他字符数:%d\n",letters,space,digit,other); return 0; } 运行结果:

循环结构习题

循环结构 一.选择题 1.下面程序段 int k=2; while (k=0) {printf(“%d”,k);k--;} 则下面描述中正确的是。 A)while循环执行10次B)循环是无限循环 C)循环题语句一次也不执行D)循环体语句执行一次 2.以下程序段的循环次数是。 for (i=2; i==0; ) printf(“%d” , i--) ; A)无限次B)0次C)1次D)2次 4.下面程序的输出结果是。 main ( ) { char c=’A’; int k=0; do { switch (c++) { case ‘A’ : k++ ; break ; case ‘B’ : k-- ; case ‘C’ : k+=2 ; break ; case ‘D’ : k%=2 ; continue ; case ‘E’ : k*=10 ; break ; default : k/=3 ; } k++; } while (c<’G’) ; printf (“k=%d”,k) ; } A)k=3 B)k=4 C)k=2 D)k=0 5.下面程序的输出结果是。 main ( ) { int x=9; for (; x>0; x--) { if (x%3==0) { prin tf(“%d”,--x); continue ; } } } A)741 B)852 C)963 D)875421

6.以下不是死循环的程序段是。 A)int i=100; B)for ( ; ; ) ; while (1) { i=i%100+1 ; if (i>100) break ; } C)int k=0; D)int s=36; do { ++k; } while (k>=0); while (s) ; --s ; 7.下述程序段的运行结果是。 int a=1,b=2, c=3, t; while (a=’A’ && c<=’Z’) m++; if (c>=’a’ && c<=’z’) n++; } } A)c=getchar( ) B)getchar( ) C)c==getchar( ) D)sca nf(“%c”,&c) 9.下述语句执行后,变量k的值是。 int k=1; while (k++<10); A)10 B)11 C)9 D)无限循环,值不定 10.下面程序的输出结果是。 main ( ) { int k=0,m=0,i,j; for (i=0; i<2; i++) { for (j=0; j<3; j++) k++ ; k-=j ; } m = i+j ; printf(“k=%d,m=%d”,k,m) ;

c语言循环结构练习

2015-2016(2)循环结构练习题 一、单选题(共40题,共100分) 1. 以下正确的描述是()(2分) 语句的作用是结束整个循环的执行 B.只能在循环体内和switch语句体内使用break语句 C.在循环体内使用break语句或continue语句的作用相同 D.从多层循环嵌套中退出时,只能使用goto语句 标准答案:B 考生答案: 2. 下面的关键字中,不能够从循环体中跳出循环体外的是()(2分) 标准答案:D 考生答案: 3. 以下叙述中错误的是()(2分) A.语句标号是由合法的标识符后面加一个冒号构成 语句的作用是把程序的执行转向语句标号所在的位置 语句必须与语句标号在同一个函数内 D.结构化程序设计主张使用goto语句,使用goto语句的程序可读性强标准答案:D 考生答案: 4. 有以下程序段,while 循环执行的次数是() int k=0; while(k=1)k++; (2分) A.无限次 B.有语法错,不能执行 C.一次也不执行 D.执行1次 标准答案:A 考生答案: 5. 运行以下程序的结果为() main() { int num=0; while (num<=2) {num++; printf("%d",num); } } (2分) 标准答案:B 考生答案: 6. 下述程序的输出结果是()。 #include<> main() { int Y=100; while(Y--);

printf("y=%d",Y); (2分) =0 =1 =随机值 =-1 标准答案:D 考生答案: 7. 执行下面的程序后的输出结果为() int x,y,z; x=20,y=40,z=15; while(y>x) x+=4,y-=4; z/=2; printf("%d,%d,%d",x,y,z); (2分) ,36,30 ,8,7 ,28,7 ,28, 标准答案:C 考生答案: 8. 以下程序段的输出结果是() int x=0,y=5,z=3; while(z-->0&&++x<5) y=y-1; printf("%d,%d,%d\n",x,y,z); (2分) ,2,0 ,2,-1 ,3,-1 ,-2,-5 标准答案:B 考生答案: 9. 下述语句执行后,变量k的值是() int k=1; while(k++<10); (2分) D.此为无限循环,值不定 标准答案:B 考生答案: 10. 下面程序的运行结果是()。 main() { int c1=2, c2=0; while(!c2--) printf("%d,%d", c1--, c2); } (2分) ,-1 B.不输出任何内容 ,-1 ,0 标准答案:C 考生答案: 11. 运行以下程序后,如果从键盘上输入china#main( ) { int v1=0,v2=0; char ch ; while((ch=getchar())!='#') switch(ch) { case 'a': case 'h': default: v1++; case '0': v2++;

C语言循环结构教学设计方案

《C语言循环结构》教学设计方案 一、教学内容分析 循环结构是面向过程编程中三种结构中最重要的一种结构,学好它是学好这门课程的关键。循环结构的实质是重复执行一系列语句,这种重复性是在循环条件的有效控制之下完成的。程序的关键在于如何控制循环的条件,在恰当的时机执行循环或退出循环。 二、学习者分析 循环结构是一种比较复杂的结构,在C语言中,循环结构主要包括for、while和do-while 三种语句,其中for语句的应用更为普遍一些。循环语句的用法对于有程序设计经验的学生来说轻而易举,但是对于那些没有经验的初学者来说,难度却不小。在一堂课的设计过程中,引例的作用至关重要。一个好的引例能把抽象问题简单化、具体化,有利于学生理解掌握。在学习循环结构时可先利用现实生活中的一些具体实例来说明什么是循环以及为什么要研究循环让一名初学者尽快摆脱日常的思维定式,更加透彻地理解和掌握程序设计中的基本思想,领会程序设计的精髓,总结出程序设计中每一种程序设计结构的本质及适合解决的问题,是高级语言程序设计这门课程在讲授过程中,应该时刻注意的问题。 三、教学目标 1.知识与能力 掌握循环构造的基本特点;区分多种不同类型循环结构的运行过程;掌握循环结构的格式及应用方法。 2.过程与方法 首先学会区分多种不同类型的循环结构,而后学会定义及应用方法,利用上机熟练应用技巧。 3.情感态度与价值观 我们必须抱有自己想学习的心态,多去问老师一些问题,那么你的漏洞将会越来越少,程序量和代码量才会越来越多。

四、重点难点及处理 1.循环语句的的分类和定义 For循环、while循环和do-while循环 特点:在一个程序中可以通过变换语句来使用不同的循环语句,而不改变程序 的功能。 2.循环语句的引用 例如:要从1累加到100 使用For循环:for(sum,=0,i=1;i<=100;i++) sum=sum+i 使用while循环:while(i<=100) sum=sum+i 使用do-while循环:do {sum=sum+i;} while(i<=100) 五、教学准备 1. PPT教学课件 2. 实验操作:Visual C++6.0软件平台,PC电脑,教学机房,网络课堂。 六、教学思路(教学策略等) 在一堂课的设计过程中,引例的作用至关重要。一个好的引例能把抽象问题简单化、具体化,有利于学生理解掌握。在学习循环结构时可先利用现实生活中的一些具体实例来说明什么是循环以及为什么要研究循环。现在我们可以提出一个问题:在计算机程序设计的世界里是否也有类似的这种相同操作重复出现的问题呢?利用最简单累加求和的例子。 例:求1+2+3+4+5+…+100的和。 下面就可以引出本节课的重点,通过分别使用For循环、while循环和do-while循环来完成本程序,我们在整个过程中都做着重复的、相同的事情,也就是前面所说的循环,在试着写出比较简单的程序时,可以试着选择素数或者奇数累加来增加难度,还可以使得让学生接受和探究双重循环。 七、教学过程 教学引入 掌握掌握循环结构的基本特点:for语句、while语句和do-while语句 如何计算1+2+3+4+…+100

C语言FOR循环练习题配解析

C语言F O R循环练习 题配解析 文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]

实验五循环结构实验——f o r循环目的和要求: 1、掌握循环结构程序设计的方法 2、掌握简单循环程序设计方法 3、掌握for循环程序设计 实验题目: 1、求1+2+3+……+100的和,并输出。 #include <> main () { int a,b=0; a=1; for(;a<=100;a++) b=b+a; printf ("1+2+3+···+100=%d\n",b); } 2、利用for循环编程,输出如下图形: * * ** ** *** *** **** **** ***** *****

****** ****** ******* ******* ******** ******** (a)图 (b)图 A #include <> main() { int a,b; for (a=1;a<=8;a++) { for(b=1;b<=a;b++) printf ("\*"); printf ("\n"); } } B #include <> main() { int a,b; for (a=1;a<=8;a++) {

for (b=1;b<=8-a;b++) printf (" "); for(b=1;b<=a;b++) printf ("\*"); printf ("\n"); } } 3、判断输入的某个数是否为素数,若是,输出YES,否则输出NO. #include <> main () { int a,b,c=1; printf ("请输入一个数(正整数)\n"); scanf ("%d",&a); if (a==1) printf ("NO\n"); else { if (a==2) printf ("YES\n"); else { for(b=2;b<=(a-1);b++)

C语言三种循环语句

三种基本的循环语句: for语句、while语句和do-while语句。 一、循环语句 (一)、for循环它的一般形式为: for(<初始化>;<条件表过式>;<增量>) 语句; 初始化总是一个赋值语句,它用来给循环控制变量赋初值;条件表达式是一个关系表达式,它决定什么时候退出循环;增量定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用;分开。 例如: for(i=1;i<=10;i++) 语句; 上例中先给i赋初值1,判断i是否小于等于10,若是则执行语句,之后值增加1。再重新判断,直到条件为假,即i>10时,结束循环。 注意: (1).for循环中语句可以为语句体,但要用{和}将参加循环的语句括起来。 (2).for循环中的初始化、条件表达式和增量都是选择项,即可以缺省,但;不能缺省。省略了初始化,表示不对循环

控制变量赋初值。省略了条件表达式,则不做其它处理时便成为死循环。省略了增量,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。 (3).for循环可以有多层嵌套。 例如: for(;;) 语句; for(i=1;;i+=2) 语句; for(j=5;;) 语句; 这些for循环语句都是正确的。 main() { int i,j; printf(i j\n); for(i=0;i<2;i++) for(j=0;j<3;j++) printf(%d %d\n,i,j); } 输出结果为: i j 0 0 0 1 0 2

1 0 1 1 1 2 用for循环求1+2+……+100的和: main() { int sn=0,i; for(i=1;i<=100;i++) sn+=i; /*1+2+……+100*/ printf(%d\n,sn); } 从程序可以看出,使用循环语句可以大大简化代码。(二)、while循环它的一般形式为: while(条件) 语句; while循环表示当条件为真时,便执行语句。直到条件为假才结束循环。并继续执行循环程序外的后续语句。 例如: #include stdio.h main() {

C语言循环结构练习题

5.2 练习题5 1. 单项选择题 (1)语句while (!e);中的条件!e等价于。 A. e==0 B. e!=1 C. e!=0 D. ~e (2)下面有关for循环的正确描述是。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在for循环中,不能用break语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中。 A. 不能使用do-while语句构成的循环 B. do-while语句构成的循环必须用break语句才能退出 C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格 C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 (5)以下程序段。 int x=-1; do { x=x*x; } while (!x); A. 是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误 (6)下列语句段中不是死循环的是____。 A. i=100; while (1) { i=i%100+1; if (i==20) break;

第5章循环结构程序设计35 } B. for (i=1;;i++) sum=sum+1; C. k=0; do { ++k; } while (k<=0); D. s=3379; while (s++%2+3%2) s++; (7)与以下程序段等价的是____。 while (a) { if (b) continue; c; } A. while (a) B. while (c) { if (!b) c; } { if (!b) break; c; } C. while (c) D. while (a) { if (b) c; } { if (b) break; c; } (8)以下程序的输出结果是____。 #include main() { int i; for (i=4;i<=10;i++) { if (i%3==0) continue; printf("%d",i); } } A. 45 B. 457810 C. 69 D. 678910 (9)以下程序的输出结果是____。 #include main() { int num=0; while (num<=2) {

C语言循环结构练习题带答案

第5章循环结构程序设计 5.1基本知识点 ?while语句的使用格式和注意事项 ?do-while语句的使用格式和注意事项 ?for语句的使用格式和注意事项 ?break和continue语句在循环语句中的应用 ?循环结构的嵌套 ?使用goto语句实现循环结构 ?穷举法程序设计方法 ?迭代程序设计方法 5.2练习题5 1.单项选择题 (1)语句while(!e);中的条件!e等价于A。 A.e==0 B.e!=1 C.e!=0 D.~e (2)下面有关for循环的正确描述是D。 A.for循环只能用于循环次数已经确定的情况 B.for循环是先执行循环体语句,后判定表达式 C.在for循环中,不能用break语句跳出循环体 D.for循环体语句中,可以包含多条语句,但要用花括号括起来(3)C语言中D。 A.不能使用do-while语句构成的循环 B.do-while语句构成的循环必须用break语句才能退出 C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是A。 A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比do-while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句

(5)以下程序段C。 intx=-1; do { x=x*x; } while(!x); A.是死循环 B.循环执行二次 C.循环执行一次 D.有语法错误(6)下列语句段中不是死循环的是__C__。 A.i=100; while(1) { i=i%100+1; if(i==20)break; } B.for(i=1;;i++) sum=sum+1; C.k=0; do { ++k; }while(k<=0); D.s=3379; while(s++%2+3%2) s++; (7)与以下程序段等价的是__A__。 while(a) { if(b)continue; c; } A.while(a) B.while(c) {if(!b)c;} {if(!b)break;c;} C.while(c) D.while(a)

C语言循环结构小结

[C语言问题求解] 作者:苏丽媛 修订:李昕,高绍姝

1While循环 当要进行的操作相同,数据不同,但是这些数据可以形成某种序列时,考虑采用循环处理。 1.1while循环架构 while(条件) { 语句; } 1.2循环与选择结构的区别 循环是多次的(条件满足,进入循环,循环结束后返回,再次判断条件是否满足,不断循环,直到条件不满足,执行后继语句),选择结构仅仅是一次的(判断条件满足后执行,执行后结束,并开始执行后继语句) 1.3循环三要素 循环控制变量的初始化(初始化相当于设置了一个开始的值) 循环条件(条件相当于设置了一个结尾) 循环控制变量的改变(一定使之从开始到结尾的方向进行) 1.4例: #include #include int sum(int n) { int result=0; int i=1; ///i用来控制循环,称为循环控制变量//循环变量的初始化 while(i<=n) ///循环条件 { result = result + i; i++; ///即i=i+1//循环控制变量的改变 } return result; } int main() { int n; scanf("%d",&n); printf("%d\n",sum(n)); return 0; } 注:当循环结束后,循环控制变量的值是第一个不满足条件的值。 2for循环 2.1for循环结构 for(循环变量的初始化;循环的条件;循环的控制变量的改变) {

循环体; } for循环的小括号中,有且仅有两个分号,分割了循环的三要素。 for()后不能接分号,分号代表空语句,如果接了分号,意味着循环体不再属于循环,整个循环只循环了一条空语句。 循环的条件判断比循环控制变量的改变多一次(多的一次是条件不成立的第一个数)。 建议:知道循环次数采用for循环,反之,采用while循环。 循环中定义的控制变量属于局部变量,出了循环便不可用了,如果出了循环仍想使用该变量,就必须重新定义。 2.2例: #include int sum(int n) { int result=0; for(int i=1;i<=n;i++) { result = result + i; } return result; } int main() { int n; scanf("%d",&n); printf("%d\n",sum(n)); return 0; }

相关主题
文本预览
相关文档 最新文档