第六章习题
/*第六章 练习题1
题目:1.编写一个程序,创建一个包含26个元素的数组,并在其中储存
26个小写字母。然后打印数组的所有内容。
分析:定义一个26元素的字符型数组,所以占用26个字节,然后还有把
他们全部打印出来,所以循环的次数要与元素的长度相等。
*/
#include <stdio.h>
#define length 26//声明循环长度。
unsigned char letter = 'A';//letter字母 声明起始字母‘A’。
char ch[26] ;//创建26个元素数组
unsigned char i; //声明循环变量‘i’。
int main ()
{
/*初始化数组元素*/
for(i = 0;i < length;i++)
ch[i] = i + 'a';
/*打印数组元素*/
for(i = 0;i < length;i++)//循环26次
// printf("%c ",letter++);//每次输出完毕之后letter加1。
printf("%c ", ch[i]);
return 0;
}
/*第六章 练习题2
题目:2.使用嵌套循环,按下面的格式打印字符:
$
$$
$$$
$$$$
$$$$$
分析:关键要点是嵌套循环,然后这个规律是五行,每行递增一个。
*/
#include <stdio.h>
#define line 5//声明行数。
unsigned char i,j; //声明循环变量‘i’'j'。
int main ()
{
/*设定循环次数即行数*/
for(i = 0;i < line;i++)
{
/*设定每行循环几次即每行的个数*/
for(j = 0;j <= i;j++)//j <= i是重点
{
printf("$");
}
printf("\n");
}
return 0;
}
/*第六章 练习题3
题目:3.使用嵌套循环,按下面的格式打印字母:
F
FE
FED
FEDC
FEDCB
FEDCBA
分析:关键要点是嵌套循环,然后这个规律是六行,起始字母是'F'每行倒序递增一个。
*/
#include <stdio.h>
#define line 6//声明行数。
unsigned char i,j,ch = 'A'; //声明循环变量‘i’'j'。
int main ()
{
/*设定循环次数即行数*/
for(i = 0;i < line;i++)
{
/*设定没行输出几个字符*/
for(j = 0;j <= i;j++)
{
printf("%C",ch--);//倒序递增
}
printf("\n");
ch = 'F';//重置ch初值
}
return 0;
}
/*第六章 练习题4
题目:4.使用嵌套循环,按下面的格式打印字母:
A
BC
DEF
GHIJ
KLMNO
PQRSTU
分析:关键要点是嵌套循环,然后这个规律起始A到U截止是六行,每行字符正序递增数量=行数
*/
#include <stdio.h>
#define line 6//声明行数。
unsigned char i,j,ch = 'A'; //声明循环变量‘i’'j'和字符变量'A'。
int main ()
{
/*设定循环次数即行数*/
for(i = 0;i < line;i++)
{
/*设定每行循环的次数*/
for(j = 0;j <= i;j++)
{
printf("%c",ch++);//打印ch后且加1.
}
printf("\n");
}
return 0;
}
/*第六章 练习题5
题目:5.编写一个程序,提示用户输入大写字母。使用嵌套循环以下面
金字塔型的格式打印字母:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
分析:关键要点是嵌套循环,然后这个规律起始字符A截止字符=行数,
每一行打印的字符数量是相同的,只是字符类型数量不同,
其规律是空格递减字符由正序和倒序递增
*/
#include <stdio.h>
int main()
{
int i, j;
char ch;
printf("Please enter a upper letter: ");
scanf("%c", &ch);
printf("The pyramid of %c is:\n", ch);
char length = ch - 'A';//计算字母长度。
/*循环行数*/
for (i = 0; i <= length; i++)
{
char letter = 'A' - 1;//计算起始字母。
/*空格递减*/
for (j = 0; j < length - i; j++)
printf(" ");//打印递减空格;
/*递增字母*/
for (j = 0; j <= i; j++)
printf("%c", ++letter);//打印递增字母;
/*递减字母*/
for (j = 0; j < i; j++)
printf("%c", --letter);//打印递减字母
printf("\n");
}
return 0;
}
/*第六章 练习题7
题目:7.编写一个程序把一个单词读入一个字符数组中,然后倒序打印
这个单词。提示:strlen()函数(第4章介绍过)可用于计算数组最后
一个字符的下标。
分析:strlen()函数在string.h函数库中
*/
#include <stdio.h>
#include <string.h>//提供strlen()函数
#define LEN 20//声明数组长度
int main()
{
int i;
char str[LEN];//字符串数组.
printf("Please enter a word: ");//请输入一个单词
scanf("%19s", str);//输入最大19个字节的单词
printf("The word is:\n");
printf("%s\n", str);//打印出来刚才输入的单词
printf("Reversing the word is:\n");
// printf("%d",strlen(str));
// printf("\0\n");
// printf("\0\n");
for (i = strlen(str) - 1; i >= 0; i--)//-1是因为单词属于字符串,字符串储存在数值中的最后一位是\0
{
printf("%c", str[i]);
}
return 0;
}
/*第六章 练习题7
题目:7.编写一个程序把一个单词读入一个字符数组中,然后倒序打印
这个单词。提示:strlen()函数(第4章介绍过)可用于计算数组最后
一个字符的下标。
分析:
*/
#include <stdio.h>
#include <string.h>
#define LEN 20//声明数组长度
int main()
{
int i;
char str[LEN];//字符串数组.
printf("Please enter a word: ");//请输入一个单词
scanf("%19s", str);//输入最大19个字节的单词数组不用加&
printf("The word is:\n");
printf("%s\n", str);//打印出来刚才输入的单词
printf("Reversing the word is:\n");
// printf("%d",strlen(str));
// printf("\0\n");
// printf("\0\n");
for (i = strlen(str) - 1; i >= 0; i--)//-1是因为单词属于字符串,字符串储存在数值中的最后一位是\0
{
printf("%c", str[i]);
}
return 0;
}
/*第六章 练习题8
题目:8.编写一个程序,要求用户输入两个浮点数,并打印两数之差
除以两数乘积的结果。在用户输入非数字之前,程序应循环
处理用户输入的每对值。
分析:浮点数用 flaot,double
*/
#include <stdio.h>
int main()
{
double i, j;
printf("Please enter two numbers (q to quit): ");//请输入两个数字q退出
while (scanf("%lf %lf", &i, &j) == 2) //成功输入两个变量scanf返回2
{
printf("(%g - %g) / (%g * %g)", i, j, i, j);
printf(" = %g\n", (i - j) / (i * j));
printf("You can enter again (q to quit): ");
}
printf("Done.\n");
return 0;
}
/*第六章 练习题9
题目:9.修改练习8,使用一个函数返回计算的结果。
分析:
*/
#include <stdio.h>
double ret (double a,double b)
{
return (a-b) / (a*b);
}
int main()
{
double i, j;
printf("Please enter two numbers (q to quit): ");//请输入两个数字q退出
while (scanf("%lf %lf", &i, &j) == 2) //成功输入两个变量scanf返回2
{
printf("(%g - %g) / (%g * %g)", i, j, i, j);
printf(" = %g\n",ret(i,j));//调用ret函数将ij的值发送到ab中经过(a-b) / (a*b)后返回double类型的数
printf("You can enter again (q to quit): ");
}
printf("Done.\n");
return 0;
}
/*第六章 练习题10
题目:10.编写一个程序,要求用户输入一个上限整数和一个下限整数, 计算从上限到下限范围内所有整数的平方和,并显示计算结果。然后 程序继续提示用户输入上限和下限整数,并显示结果,直到用户输入
的上限整数小于下限整数为止。
分析:
*/
#include <stdio.h>
int main()
{
/*声明上限和下限*/
int upp, low, i;
printf("Enter lower and upper integer limits: ");
while ((scanf("%d %d", &upp, &low) == 2) && (upp > low))//如果上限 > 下限而且scanf返回2,条件成立进入循环,否则跳过,
{
/*声明一个变量保存平方和*/
int sum = 0;
/*范围*/
for (i = low; i <= upp; i++)
{
sum += i * i;//等价于sun = sun + i * i
}
/*打印*/
printf("The sums of the squares ");
printf("from %d to %d is %d\n", low * low, upp * upp, sum);
/*继续输入*/
printf("Enter next set of limits: ");
}
printf("Done\n");//完成
return 0;
}
/*第六章 练习题11
题目:11.编写一个程序,在数组中读入8个整数,然后按倒序打印这8个
整数。
分析:
*/
#include <stdio.h>
#define length 8
int numer[length];
int main()
{
int i;
printf("Please enter 8 numbers:\n", length);
for (i = 0; i < length; i++)
{
scanf("%8d", &numer[i]);//因为是八个独立的整数所以要加&取地址
}
for(i = length - 1; i >= 0;i--)
printf("%-2d",numer[i]);//左对齐整数占两位
return 0;
}