C Primer Plus(第五版)学习(三)

第6章“C控制语句:循环”。学完这一章的时候,我们会有疑问“我该用哪种循环?”其实这个问题不用太脑子去思考,因为通常用入口条件循环,这有很多好处。就不一一列出,详见书《C Primer Plus》。

编程练习

1.编写一个程序,创建一个具有26个元素的数组,并在其中存储26个小写字母。并让该该程序显示该数组的内容。

#include<stdio.h>
int main(void)
{
	char zimu[26];
	int index;
	printf("请输入26个小写字母:");
	for(index=0;index<26;index++)
		scanf("%c",&zimu[index]);
	printf("读入的26个字母如下:\n");
	for(index=0;index<26;index++)
		printf("%5c",zimu[index]);
	printf("\n");
}
2.使用嵌套循环产生下列图案:

$

$$

$$$

$$$$

$$$$$

#include <stdint.h>
#define ROW 5
#define COLUMN 5
int main(void)
{
	int r,c;
	for(r=0;r<ROW;r++)//打印5行
	{
		for(c=COLUMN-r;c<=COLUMN;c++)//每行打印对应行数
			printf("$");
		printf("\n");
	}
}

3.使用嵌套循环产生下列图案:

F

FE

FED

FEDC

FEDCB

FEDCBA

#include <stdio.h>
#define ROW 6
int main(void)
{
	int r;//行数
	char c;//列数
	for(r=0;r<ROW;r++)//控制行
	{
		for(c='F';c>=('F'-r);c--)//控制列
			printf("%c",c);
		printf("\n");
	}
	return 0;
}

4.让程序要求用户输入一个大写字母,使用嵌套循环产生像下面这样的金字塔图案:

         A

       ABA

     ABCBA

  ABCDCBA

ABCDEDCBA

#include <stdio.h>
int main(void)
{
	int r;//处理行
	int c_1;//处理空格
	char c_2;//处理升序
	char c_3;//处理降序
	for(r=0;r<5;r++)//外循环控制行
	{
		for(c_1=4-r;c_1>0;c_1--)//3个内循环
			printf(" ");
		for(c_2='A';c_2<=('A'+r);c_2++)
			printf("%c",c_2);
		for(c_3=c_2;c_3>(c_2-r);c_3--)
			printf("%c",c_3-2);
		printf("\n");
	}
	return 0;
}


5.编写一个程序打印一个表,表的每一行都给出一个整数、它的平方以及它的立方。要求用户输入表的上限和下限。使用一个for循环。

#include<stdio.h>
int main(void)
{
	int uplimit,downlimit;//用户输入上限和下限
	int n;
	printf("请输入上限和下限:");
	scanf("%d %d",&uplimit,&downlimit);
	printf("整数	平方	立方\n");
	for(n=downlimit;n<=uplimit;n++)
	{
		printf("%d	%d	%d\n",n,n*n,n*n*n);
	}
	return 0;
}


6.编写一个程序把一个单词读入一个字符数组,然后反向打印出这个词。

#include <stdint.h>
int main(void)
{
	char word[20];//假定单词的长度不大于20
	int n;//用来确定单词的长度
	printf("请用户输入一个单词:");
	scanf("%s",word);
	n=strlen(word)-1;//减1是减掉字符串后面的/0
	for(;n>=0;n--)
		printf("%c",word[n]);
	printf("\n");
	return 0;
}

7.编写一个程序,要求输入两个浮点数,然后打印出用二者的差值除以二者的乘积所得的结果。在用户键入非数字的输入之前程序循环处理每对输入值。

#include <stdint.h>
int main(void)
{
	float a,b;//用户输入的两个浮点数
	printf("请用户输入两个浮点数(输入q退出):");
	while (scanf("%f%f",&a,&b)==2)//当输入的是非数字的时候退出,输入一个数字和一个字母时也会退出
	{
		printf("二者的差除以二者乘积 = %f\n",(a-b)/(a*b));
		printf("请用户输入两个浮点数(输入q退出):");
			}
	return 0;
}

8.对练习7进行修改,让它使用一个函数来返回计算值。

#include <stdint.h>
float jisuan(void);
int main(void)
{
	printf("二者的差除以二者乘积 = %f\n",jisuan());
	return 0;
}
float jisuan(void)
{
	float a,b;//用户输入的两个浮点数
	float result;
	printf("请用户输入两个浮点数(输入q退出):");
	while (scanf("%f%f",&a,&b)==2)//当输入的是非数字的时候退出,输入一个数字和一个字母时也会退出
	{
		result=(a-b)/(a*b);
	}
	return result;
}

9.一个程序,要求用户输入下限整数和一个上限整数,然后,依次计算从下限到上限的每一个整数的平方的和,最后显示结果。程序将不断提示用户输入下限整数和上限整数并显示出答案,直到用户输入的上限整数等于或小于下限整数为止。

#include <stdio.h>
int main(void)
{
	int downlimit,uplimit;//用户输入的下限和上限
	int sum=0;//平方的加和
	int dn;//用来暂存下限值
	printf("Enter lower and upper integer limits:");
	scanf("%d%d",&downlimit,&uplimit);
	dn=downlimit;
	while (downlimit<uplimit)//当下限大于或者等于上限是退出while循环
	{
		for(;downlimit<uplimit+1;downlimit++)//downlimit的值会改变,所以用dn来暂存下限值
			sum+=downlimit*downlimit;
		printf("The sum of the squares from %d to %d is %d.\n",dn*dn,uplimit*uplimit,sum);
		printf("Enter lower and upper integer limits:");
		scanf("%d%d",&downlimit,&uplimit);
	}
	return 0;
}

10.编写一个程序把8个整数读入一个数组中,然后以相反的顺序打印它们。

#include <stdio.h>
int main(void)
{
	char int_g[8];
	int n,length;//用老表示数组长度
	printf("请用户输入8个整数:");
	for(n=0;n<8;n++)
		scanf("%d",&int_g[n]);
	length=strlen(int_g);
	for(n=0;n<8;n++)
		printf("%2d",int_g[length-n-1]);//减1是因为数组从索引0开始的
	printf("\n");
	return 0;
}
以上只是个人想法,如有更好的想法,请告诉我。

<转载请注明出处>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值