第五章习题

1.概念填空题 

(5)

1、定义整数变量k和x;

2、定义一个for循环,k=0,x=0;

3、判断k <= 9 &&x!= 10,是进行下一步,否则第5步;

4、把表达式x+2的值赋给x,进行k++,返回第3步;

5、输出k和x的值,结束。

#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;
}

 

(6)

1、定义一个字符变量c;

2、定义一个for循环,从键盘输入一个字符变量赋值给c;

3、判断getchar() != '#',是进行下一步,否则第5步;

4、输出单个字符c,取另一个键盘输入的字符,返回第3步;

5.结束。

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

2.单项选择题 

(14)

1、定义一个字符型变量ch;

2|、定义一个for循环;

3、判断从键盘输入的字符是否是“\n”,是进行下一步,否则跳到第5步;

4、输出字符ch,返回第3步;

5.结束。

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

(15)

1、定义两个整数变量i和a,并给a赋值为1;

2、声明一个无符号整型j;

3、定义一个for循环,把15的值赋值给j;

4、判断j是否大于0,大于0下一步,不大于0第6步;

5、a自加1,j减2的值赋值给j,返回第4步;

6、结束。

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

 

3.阅读程序题 

(1)

1、定义一个整数变量I;

2、定义一个for循环,把1的值赋值给I;

3、判断i是否小于6,是进行下一步,否则到第7步;

4、判断i能否取余2,能进行下一步,否则第5步;

5、输出字符”*”,i自加1,返回第3步;

6、输出字符“#”,i自加1,返回第3步;

7、结束。

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

 

(2) 

1、定义三个整数变量m,n,i,并把1的值赋值给m;

2、定义一个for循环,把0的值赋值给i;

3、判断i是否小于5,是进行下一步,否则到第8步;

4、把1的值赋值给整数m;

5、m自加1;

6、判断i是否等于4,是进行下一步,否则i自加1返回第3步;

7、把m的值赋值给n,i自加1,返回第3步;

8、输出m和n的值,结束。

#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;
}

(3)

1、定义一个整数变量i;

2、定义for循环,并把字符‘a’赋值给i;

3、判断i是否小于字符‘f’,是进行下一步,否则到第5步;

4、输出i减字符’a’加字符‘A’的值,i自加1,i自加1,返回第3步;

5、结束。

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

(4)

1、定义四个字符变量f,f1,f2,i;

2、把1的值赋值给f1,把1的值赋值给f2;

3、输出f1和f2的值;

4、定义一个for循环,把3的值赋值给i;

5、判断i是否小于等于5,是进行下一步,否则到第9步;

6、把f1+f2的值赋给f;

7、输出f的值;

8、把f2的值赋给f1,把f的值赋给f2,i自加1,返回第5步;

9、结束。

#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;
}

(5)

1、定义一个整数变量n,并把5赋值给n;

2、判断n是否能取余2,能进行第3,4步,否则进行第5步;

3、取余为0时,n自减1,跳到第5步;

4、取余为1时,n自减1,跳到第7步;

5、n自减1;

6、输出n的值;

7、判断n是否能大于0,是返回第2步,否则进行下一步;

8.结束。

#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;
}

(7)

1、定义一个整数变量x,并把10的值赋给x;

2、判断x自减1是否等于0,是进行下一步,否则继续自减;

3、输出x的值,结束。

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

(9)

1、定义一个整数变量m,并把9赋给m;

2、定义for循环;

3、判断m是否大于0,是进行下一步,否则到第6步;

4、判断m取余3是否等于0,是进行下一步,否则m自减1,返回第3步;

5、输出—m的值,m自减1,返回第3步;

6、结束。

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

(10)

1、定义一个整数变量x,并把8的值赋给x;

2、定义for循环;

3、判断x是否大于0,是进行下一步,否则到第7步;

4、判断x取余是否等于0,是进行下一步,否则到第6步;

5、输出x--的值,x自减1,返回第3步;

6、输出—x的值,x自减1,返回第3步;

7、结束。

#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;
}

(11) 

1、定义一个整数变量x,并把3的值赋给x;

2、输出x减3赋给x的值;

3、判断x是否为非0,是进行下一步,否则返回第2步;

4、结束。

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

(12)

1、定义一个整数变量x,并把2的值赋给x;

2、输出非x减2的值;

3、判断x自减1后是否为0;是进行下一步,否则返回第2步;

4、结束。

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

(13)

1、定义两个整数变量n和d,并把12345的值赋给n;

2、判断n是否不等于0,是进行下一步,不是到第6步;

3、把n取余10的值赋给d;

4、输出d的值;

5、把n除以10的值赋给n,返回第2步;

6、结束。

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

(14)

1、定义两个整数变量m,sum,并把0赋值给m和sum;

2、声明两个字符变量c和oldc,并把字符‘+’的值赋给oldc;

3、从键盘输入一个字符变量给c;

4、判断c是否小于等于字符‘9’并且大于等于字符‘0’,是进行下一步,否则到第6步;

5、把10乘以m加c减字符‘0’的值赋给m;

6、判断oldc是否等于字符‘+’,是进行下一步,否则到第8步;

7、把sum加m的值赋给sum;

8、把sum减m的值赋给sum;

9、把0的值赋给m;

10、把c的值赋给oldc;

11、输出sum的值;

12、判断c是否不等于字符‘=’,是进行下一步,否则返回第3步;

13、结束。

#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;
}

(16) 

1、定义两个整数变量t和n,并把1的值赋给t,把235的值赋给n;

2、把n取余10乘以t的值赋给t;

3、把n除以10的值赋给n;

4、判断n是否为0,是进行下一步,否则返回第2步;

5、输出t的值,结束。

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

(17)

1、定义两个整数变量m和n,把5的值赋给m,把0的值赋给n;

2、判断m是否大于0,是进行下一步,否则到第10步;

3、判断m的值为几;

4、m的值为1,为空语句,

5、继续执行m的值为3,n加1赋给n,m自减1,到第9步;

6、m的值为其他值,把0的值赋给n,m自减1;

7、继续执行m为2,为空语句;

8、继续执行m为4,n加2的值赋给n,m自减1,到第9步;

9、输出n的值,返回第2步;

10、结束。

#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;
}

(18)

1、定义两个整数变量i,m,并把0赋值给m;

2、定义for循环,把0的值赋给i;

3、判断i是否小于5,是进行下一步,否则到第9步;

4、判断i的值为几;

5、i的值为0时,空语句;

6、i的值为1时,m自加1;

7、i的值为3时,m自加1;

8、i的值为4时,m自减1,返回第3步,并且i自加1;

9、输出m的值,结束。

#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;
}

(19)

1、定义三个整数变量i,b,c,并把0赋值给b,把2赋值给c;

2、定义for循环,把0赋值给i;

3、判断i是否小于2,是进行下一步,否则到第9步;

4、判断++b和b乘以c之后的值为几;

5、b的值为1时,输出数字1;

6、b的值为2时,输出数字2;

7、b的值为3时,输出数字3,返回第3步,并且i自加1;

8、b的值为其他值时,输出“other\n”,返回第3步,并且i自加1;

9、结束。

#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;
}

 

4.完善程序题 

(1)

1、定义四个整数变量n,i,denominator,flag;

2、声明两个单精度浮点型变量sum和item;

3、输出"Please input n:";

4、输入n的值;

5、把1的值赋值给flag;

6、把1的值赋值给denominator;

7、把0的值赋值给sum;

8、定义for循环,把1的值赋值给i;

9、判断i是否小于等于n,是进行下一步,否则到第14步;

10、把flag乘以1.0除以denominator的值赋值给item;

11、把sum加item的值赋值给sum;

12、对flag进行正负号转换;

13、把denominator加2的值赋值给denominator,返回第9步,并i自加1;

14、输出sum的值,结束。

#include<stdio.h>
int main()
{
	int n, i, denominator, flag;
	float sum, item;
	printf("Please input 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 = denominator + 2;
	}
	printf("sum=%f\n", sum);
	return 0;
}

(2)

1、定义两个整数变量i和n;

2、声明两个单精度浮点型变量sum和flag,并分别赋值0和1.0;

3、输入n的值;

4、定义for循环,把1的值赋值给i;

5、判断i是否小于等于n,是进行下一步,否则到第8步;

6、把表达式的值赋值给sum;

7、对flag进行正负转换,返回第5步,并且i自加1;

8、输出sum的值,结束。

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

(3) 

1、定义两个整数变量n和s;

2、输出"Enter a number:";

3、输入n的值;

4、输出"Output:";

5、把n取余10的数赋值给s;

6、输出s的值;

7、把n除以10的值赋值给n;

8、判断n是否不等于0,是进行下一步,否则返回第5步;

9、结束。

#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;
}

 

(4) 

1、定义一个单精度浮点型变量s,并把1.0赋值给s;

2、声明两个整数变量k和n,并分别赋值为1和5;

3、判断k是否小于等于n,是进行下一步,否则到第6步;

4、把表达式的值赋值给s;

5、k自加1,返回第3步;

6、输出s的值,结束。

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

(10)

1、定义一个整数变量为i;

2、定义for循环,把100的值赋值给I;

3、判断i是否小于200,是进行下一步,否则到第8步;

4、判断i减2之和取余4是否为0,是进行下一步,否则i自加1,返回第三步;

5、判断是否不等于i减3取余7,是进行下一步,否则i自加1,返回第三步;

6、判断i减5取余9是否为0,是进行下一步,否则i自加1,返回第三步;

7、输出i的值,i自加1,返回第三步;

8、结束。

#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;
}

(11)

1、定义三个整数变量count,i,n;

2、声明两个双精度浮点型变量grade和total;

3、输出"Enter n:";

4、输入n的值;

5、把0赋值给total;

6、把0赋值给count;

7、定义for循环,把1的值赋值给i;

8、判断i是否小于等于n,是进行下一步,否则到第14步;

9、输出"Enter grade #i:";

10、输入grade的值;

11、把total加grade的值赋值给total;

12、判断grade是否小于60,是进行下一步,否则返回第8步,并i自加1;

13、count自加1,返回第8步,并i自加1;

14、输出"Grade average=%.2f\n",total的值;

15、输出"Number of failures=%d\n",count的值;

16、结束。

#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;
}

(12)

 1、定义两个整数变量i和j;

2、定义for循环,把0的值赋值给i;

3、判断i的值是否小于10,是进行下一步,否则到第7步;

4、把i乘以10加6的值赋给j;

5、判断j取余3的值是否等于0,是进行下一步,否则返回第3步,并i自加1;

6、输出j的值,返回第3步,并i自加1;

7、结束。

#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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值