第五章循环结构程序设计实训教程

一系列C语言代码示例展示了循环、条件判断等控制流程,包括for、while、do-while循环,switch-case语句,以及字符和数字处理。代码执行结果通过文字描述法和流程图进行解释,涉及变量初始化、条件判断、数值运算、字符输入输出等操作。
摘要由CSDN通过智能技术生成

1-5.代码:


#include<stdio.h>
int main()
{
	int k, x;
	for (k = 0, x = 0; k <= 9 && x != 10; k++) {
		x = x + 2;
	}
	printf("%d,%d", k, x);
	return 0;
}

执行结果:

文字描述法:

1.定义整数k,x;
2.k=0,x=0
3.判断k<=9&&x!=10,若k<=9&&x!=10,执行3,4,5否则转6;
4.x=x+2
5.k++转3
5.输出k,x的值

流程图

1-6.代码:


#include<stdio.h>
int main()
{
	char c;
	for (c = getchar(); getchar() != '#'; c = getchar())
		putchar(c);
	return 0;
}

执行结果:

文字描述法

1.定义字符c
2.c = getchar()
3.判断getchar() != '#',若getchar() != '#',执行3,4,5否则转6
4.putchar(c)
5.c = getchar()
6.输出c

流程图

2-14代码:

#include<stdio.h>
int main()
{
	char ch;
	for (; (ch = getchar()) != '\n';) {
		printf("%c", ch);
	}
	return 0;
}

执行结果:

文字描述法

1.定义字符ch
2.判断ch = getchar()) != '\n',若ch = getchar()) != '\n',执行2,3否则转3
3.输出ch
流程图

2-5代码:

#include<stdio.h>
int main()
{
	int i, a = 1;
	unsigned j;
	for (i=15;i>0;i-=2)
		a++;
	printf("输出a=%d", a);
	return 0;
}

执行结果:

 文字描述法

1.定义int i, a = 1;unsigned j;
2.i=15
3.判断i>0,若i<0,执行3,4否则转5
4.a++转3
5.输出a

流程图

3-1  代码:

#include<stdio.h>
int main()
{
	int i;
	for (i = 1; i < 6; i++) {
		if (i % 2) {
			printf("*");
		}
		else {
			printf("#");
		}
	}
	return 0;
}

执行结果:

文字描述法

1.定义int i
2.i=1
3判断i<6,若i<6执行3,4,5否则转6
4.如果i%2,输出*
5.否则输出#
6.结束

流程图

3-2  代码:

#include<stdio.h>
int main()
{
	int m = 1, n, i;
	for (i = 0; i < 5; i++) {
		int m = 1;
		m++;
		if (i == 4) {
			n = m;
		}
	}
	printf("%d,%d", m, n);
	return 0;
}

执行结果:

 文字描述法

1.定义m=1,n,i
2.i=0
3.判断i<5,若i<5执行3,4,5,6否则转7
4.整数m=1
5.m++
6.如果i=4,n=m
7.输出m,n

流程图

3-3  代码:

#include<stdio.h>
int main()
{
	int i;
	for (i = 'a'; i < 'f'; i++, i++) {
		printf("%c", i - 'a' + 'A');
	}
	return 0;
}

执行结果:

文字描述法

1.定义整数i
2.i='a'
3.判断i<'f'若i<'f'执行3,4,5否则转6
4.输出i - 'a' + 'A'的值
5.i++,i++
6.结束

流程图

3-4  代码:

#include<stdio.h>
int main()
{
	int f, f1, f2, i;
	f1 = 1; f2 = 1;
	printf("%2d %2d", f1, f2);
	for (i = 3; i <= 5; i++) {
		f = f1 + f2;
		printf("%2d", f);
		f1 = f2;
		f2 = f;
	}
	return 0;
}

执行结果:

 文字描述法

1.定义整数f,f1,f2,i
2.f1=1,f2=1
3.输入f1,f2的值
4.i=3
5.判断i<=5若i<=5执行5,6,7,8,9否则转10
6.f=f1+f2
7.输入f的值
8.f1=f2;f2=f
9.i++
10.结束

流程图

  

3-5代码:

#include<stdio.h>
int main()
{
	int n = 5;
	do
	{
		switch (n % 2) {
		case 0:
			n--;
			break;
		case 1:
			n--;
			continue;
	    }
		n--;
		printf("%2d", n);
	} while (n > 0);
		return 0;
}

执行结果:

 文字描述法

1.定义整数n=5
2.当n%2时
3.case0:n--,转7
4.case1:n--执行2,3,5,6,7
5.n--
6.输出n的值
7.判断n>0,若n>0执行2,3,4,5,6,7否则转8

8.结束

 流程图

3-7代码:

#include<stdio.h>
int main()
{
	int x = 10;
	while (x--);
	printf("x=%d\n", x);
	return 0;
}

执行结果: 

 文字描述法

1.定义整数x=10
2.计算x--
3.输出x的值

流程图

3-9代码:

#include<stdio.h>
int main()
{
	int m = 9;
	for (; m > 0; m--) {
		if (m % 3 == 0) {
			printf("%d", --m);
		}
	}
	return 0;
}

执行结果:

文字描述法
1.定义整数m=9
2.判断m>0,若m<0,执行2,3,4否则转5
3.如果m%3==0
4.输出--m的值否则转5
5.结束
流程图

3-10代码:

#include<stdio.h>
int main()
{
	int x = 8;
	for (; x > 0; x--) {
		if (x % 3 == 0) {
			printf("%d,", x--);
			continue;
		}
		printf("%d", --x);
	}
	return 0;
}

执行结果:

 文字描述法

1.定义整数x=8
2.判断x>0,若x<0,执行2,3,4否则转5
3.如果x%3==0
4.输出x--的值转2,3,5
5.输出--x的值

流程图

3-11代码:

#include<stdio.h>
int main()
{
	int x = 3;
	do {
		printf("%3d", x = x - 3);
	} while (!x);
	return 0;
}

执行结果:

 文字描述法

1.定义整数x=3
2.输出x=x-3
3.判断!x,若!x执行2,3否则转4
4.结束

流程图

 3-12代码:

#include<stdio.h>
int main()
{
	int x = 2;
	do {
		printf("%3d", !x - 2);
	} while (--x);
	return 0;
}

执行结果:

 文字描述法

1.定义整数x=2
2.输出!x-2
3.判断--x,若--x执行2,3否则转4
4.结束

流程图

3-13代码:

#include<stdio.h>
int main()
{
	int n = 12345, d;
	while (n != 0) {
		d = n % 10;
		printf("%d", d);
		n = n / 10;
	}
	return 0;
}

执行结果:

 文字描述法

1.定义整数n=12345,d
2.当n!=0
3.d=n%10
4.输出d的值
5.n=n/10
6.结束

流程图

3-14代码:

#include<stdio.h>
int main()
{
	int m = 0, sum = 0;
	char c, oldc = '+';
	do
	{
		c = getchar();
		if (c <= '9' && c >= '0')m = 10 * m + c - '0';
		else
		{
			if (oldc == '+')sum += m;
			else sum -= m;
			m = 0;
			oldc = c;
			printf("%3d", sum);
		}
	} while (c != '=');
	return 0;
}

执行结果:

 文字描述法

1.定义整数m=0,sum=0,字符c,oldc='+'
2.c=getchar()
3.如果c<='9'&&c>='0',执行m=10*m+c-'0'
4,否则如果oldc=='+',执行sum+=m
5.否则sum-=m
6.m=0
7.oldc=c
8.输出sum的值
9.判断c!='='执行2,3,4,5,6,7,8,9否则转10
10.结束

流程图

3-16代码:

#include<stdio.h>
int main()
{
	int t = 1, n = 235;
	do {
		t *= n % 10;
		n /= 10;
	} while (n);
	printf("%d\n", t);
	return 0;
}

执行结果:

 文字描述法

1.定义整数t=1,n=235
2.t*=n%10
3.n/=10
4.判断n执行2,3,4否则转5
5.输出t的值
6.结束

流程图

3-17代码:

#include<stdio.h>
int main()
{
	int m = 5, n = 0;
	while (m > 0) {
		switch (m) {
		    case 1:
			case 3:n += 1; m--; break;
			default:n = 0; m--;
			case 2:
			case 4:n += 2; m--; break;
		}
		printf("%2d", n);
	}
	return 0;
}

执行结果:

文字描述法

1.整数m=5,n=0
2.当m>0
3.判断m
4.执行case1:
5.执行case3:
                n+=1,m--,若n+=1转9
6.默认n=0,m--
7.执行case2:
8.执行case4:
                n+=2,m--,若n+=2转9
9.输出n的值
10.结束

流程图
3-18代码:

#include<stdio.h>
int main()
{
	int i, m = 0;
	for (i = 0; i < 5; i++) {
		switch (i) {
		    case 0:
			case 1:m++;
			case 3:m++;
			case 4:m--; break;
		}
	}
	printf("%d\n", m);
	return 0;
}

执行结果:

 文字描述法

1.定义整数i,m=0
2.i=0
3.判断i否则转10
4.执行case0:
5.执行case1:
              m++
6.执行case3:
              m++
7.执行case4:m--,若m--转8
8.输出m的值
9.i++转3
10.结束

流程图

3-19代码:

#include<stdio.h>
int main()
{
	int i, b = 0, c = 2;
	for (i = 0; i < 2; i++) {
		switch (++b, b * c) {
		    case 1:printf("1");
			case 2:printf("2");
			case 3:printf("3"); break;
			default:printf("other\n");
		}
	}
	return 0;
}

执行结果:

文字描述法

1.定义整数b=0,c=2
2.i=0
3.判断i<2否则转10
4.当++b,b*c
5.执行case1:
             输出1
6.执行case2:
             输出2
7.执行case3:
            输出3

8.默认输出other
9.i++转3
10.结束

流程图


3-21代码: 

#include<stdio.h>
int main()
{
	char c;
	while ((c = getchar()) != '?')
		putchar(--c);
	return 0;
}

执行结果:

 文字描述法

1.定义字符c
2.当c = getchar()) != '?'
3.putchar(--c);
4.结束

流程图

4-1代码:

#include<stdio.h>
int main()
{
	int denominator, flag, i, n;
	double item, sum;
	printf("请输入n的值:");
	scanf_s("%d", &n);
	flag = 1;
	denominator = 1;
	sum = 0;
	for (i = 1; i <= n; i++) {
		item = flag * 1.0 / denominator;
		sum = sum + item;
		flag = -flag;
		denominator += 2;
	}
	printf("sum=%f\n", sum);
	return 0;
}

执行结果:

 文字描述法

1.定义整数denominator, flag, i, n,小数item, sum
2.输入n的值
3.flag = 1
4.denominator = 1
5.sum = 0
6.i=1
7.判断i<=n,执行7,8,9,10,11,12否则转13
8.item = flag * 1.0 / denominator;
9.sum = sum + item
10.flag = -flag
11.denominator += 2
12.i++
13.输出sum的值
14.结束

流程图

4-2代码:

#include<stdio.h>
int main()
{
		int i, n;
	float sum = 0, flag = 1;
	scanf_s("%d", &n);
	for (i = 1; i <= n; i++) {
		sum = sum + (flag * i) / (2 * i - 1);
		flag = -flag;
	}
	printf("Sum=%f\n", sum);
	return 0;
}

执行结果:

 文字描述法

1.定义整数i,n,小数sum = 0, flag = 1
2.输出n的值
3.i=1
4.判断i <= n若i <= n执行4,5,6,7否则转8
5.sum = sum + (flag * i) / (2 * i - 1)
6.flag = -flag
7.i++
8.输出sum的值
9.结束

流程图

4-3代码:

#include<stdio.h>
int main()
{
	int n, s;
	printf("Enter a number:");
	scanf_s("%d", &n);
	printf("Output:");
	do {
		s = n % 10;
		printf("%d", s);
		n /= 10;
	} while (n != 0);
	return 0;
}

执行结果:

 文字描述法

1.定义整数n,s
2.请输入一个数字给n
3.输出Output
4.s = n % 10;
5.printf("%d", s);
6.n /= 10;
7.判断n != 0若n != 0执行4,5,6,7否则转8
8.结束


流程图

4-4代码:

#include<stdio.h>
int main()
{
	int k,n;
	double s;
	s = 1.0;
	k = 1;
	scanf_s("%d", &n);
	while (k <= n) {
		s = s + 1.0 / (k * (k + 1));
		k++;
	}
	printf("s=%f\n\n", s);
	return 0;
}

执行结果:

文字描述法

1.定义整数k,n;小数s
2.s = 1.0;
3.k = 1;
4.输入n的值
5.判断k <= n,若k <= n执行5,6,7否则转8
6.s = s + 1.0 / (k * (k + 1))
7.k++
8.输出s的值
9.结束
 

流程图

4-10代码:

#include<stdio.h>
int main()
{
	int i;
	for (i = 100; i < 200; i++)
		if ((i - 2) % 4 == 0) 
			if (!((i - 3) % 7)) 
				if ((i - 5) % 9 == 0) 
					printf("%d", i);
	return 0;
}

执行结果:

 文字描述法

1.定义整数i
2.i=100
3.判断i<200,若i<200执行3,4,5,6,7,8否则转9
4.如果(i - 2) % 4 =0)执行5否则i++转3
5.如果!((i - 3) % 7执行6否则i++转3
6.如果(i - 5) % 9 == 0执行7否则i++转3
7.输出i的值
8.i++转3
9.结束

流程图

4-11代码:

#include<stdio.h>
int main()
{
	int count, i, n;
	double grade, total;
	printf("Enter n:");
	scanf_s("%d", &n);
	total = 0;
	count = 0;
	for (i = 1; i <= n; i++)
	{
		printf("Enter grade #%d:", i);
		scanf_s("%lf", &grade);
		total = total + grade;
		if (grade < 60)
			count++;
	}
	printf("Grade average=%.2f\n", total / n);
	printf("Number of failures=%d\n", count);
	return 0;
}

执行结果:

 文字描述法

1.定义整数count, i, n,小数grade, tota
2.输入Enter n的值
3.total = 0
4.count = 0
5.i=1
6.判断i <= n,若i <= n执行6,7,8,9,10否则转11
7.输出grade的值
8.total = total + grade
9.如果grade < 60执行count++
10.i++转6
11.输出total的值
12.输出count的值
13.结束

流程图

4-12代码:

#include<stdio.h>
int main()
{
	int i, j;
	for (i = 0; i < 10; i++)
	{
		j = i * 10 + 6;
		if (j % 3 == 0)
			printf("%3d", j);
	}
	return 0;
}

执行结果:

 文字描述法

1.定义整数i,j
2.i=0
3.判断i < 10若i < 10执行否则转
4.j = i * 10 + 6
5.如果j % 3 =0执行6
6.输出j的值
7.i++转3
8.结束

流程图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值