20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises10
P125
- /*
- 编写一程序P125.C实现以下功能
- 从键盘读入两个字符cBegin和cEnd,要求输出≤cBegin且≥cEnd的所有字符。
- 编程可用素材:
- printf("Please Input two char: ");
- printf("\nResult: ");
- 程序的运行效果应类似地如图1所示,图1中的MA是从键盘输入的内容。
- Please Input two char: MA
- Result: MLKJIHGFEDCBA
- 知识点:
- 1. 循环起点cBegin
- 2. 循环终点cEnd
- 3. 循环趋势:越来越小
- */
- #include <stdio.h>
- int main(void)
- {
- char cBegin, cEnd;
- int i;
- printf("Please Input two char: ");
- scanf("%c%c", &cBegin, &cEnd);
- printf("\nResult: ");
- for (i = (int)cBegin; i >= (int)cEnd; i--)
- {
- printf("%c", (char)i);
- }
- return 0;
- }
复制代码
P127
- /*
- 编写一程序P127.C实现以下功能
- 从键盘读入一个字符cBegin和一个数iCount,要求输出≤cBegin的iCount个字符。
- 编程可用素材:
- printf("Please Input a char and a number: ");
- printf("\nResult: ");
- 程序的运行效果应类似地如图1所示,图1中的M 9是从键盘输入的内容。
- Please Input a char and a number: M 9
- Result: MLKJIHGFE
- */
- #include <stdio.h>
- int main(void)
- {
- char cBegin;
- int iCount, i;
- printf("Please Input a char and a number: ");
- scanf("%c %i", &cBegin, &iCount);
- printf("\nResult: ");
- // 要特别注意这里的循环
- /*
- 起点:cBegin,包括端点
- 终点:用输入的计数来计算终点iCount个
- 步长:1
- char类型本质上就是int型,也可以不用强转,可以自动转化的
- */
- for (i = (int)cBegin; i > (int)cBegin - iCount; i--)
- {
- printf("%c", (char)i);
- }
- return 0;
- }
复制代码
P232
- /*
- 编写一程序P232.C实现以下功能
- 从键盘读入一个整数Num,按从小到大的顺序依次输出所有满足条件的3位数:“该数各位数字的平方和”再加上“该数/2”等于Num。
- 编程可用素材:
- printf("Please Input a number: ");
- printf("\nResult: ");
- printf("%5d"…);
- printf("not Find!\n");
- 程序的运行效果应类似地如图1和图2所示,图1中的293和图2中的199是从键盘输入的内容。
- Please Input a number: 293
- Result: 289 368 455 504
- 图1 程序运行效果示例
- Please Input a number: 199
- Result: not Find!
- */
- #include <stdio.h>
- int main(void)
- {
- int data, gw, sw, bw;
- int i, count = 0;
- printf("Please Input a number: ");
- scanf("%d", &data);
- printf("\nResult: ");
- for (i = 100; i <= 999; i++)
- {
- /*
- 分离出各位上的数字
- 使用整数的除法和求余算法
- */
- gw = i % 10;
- sw = i / 10 % 10;
- bw = i / 100;
- // “该数各位数字的平方和”再加上“该数/2”等于Num
- if (i / 2 + gw * gw + sw * sw + bw * bw == data)
- {
- count++;
- printf(" %5d", i); // 注意输出格式宽度控制
- }
- }
- if (count == 0)
- {
- printf("not Find!\n");
- }
- return 0;
- }
复制代码
P753
- /*
- 编写一程序P753.C实现以下功能
- 计算X的Y次方,其中Y为整数(可以是负整数或0),X为实型。
- 注意,程序中不能使用库函数pow或使用同名的变量、函数、单词。
- 编程可用素材:
- printf("Input x, y: ");
- printf("\nResult: …^…=…);
- 程序的运行效果应类似地如图1和图2所示,图1中的3.7,5和图2中的4,-2是从键盘输入的内容。
- Input x, y: 3.7,5
- Result: 3.700000^5=693.439570
- 图1 程序运行效果示例
- Input x, y: 4,-2
- Result: 4.000000^-2=0.062500
- 看注释部分,可以看出,重构一下程序,程序看起来更简单,符合代码重用思想
- */
- #include <stdio.h>
- int main(void)
- {
- double datax, result = 1.0;
- int datay, i;
- printf("Input x, y: ");
- scanf("%lf,%d", &datax, &datay);
- if (datay == 0)
- {
- // 不考虑datax也为0的情况
- ;
- }
- else if (datay > 0)
- {
- for (i = 0; i < datay; i++)
- result = result * datax;
- // printf("\nResult: %lf^%d=%lf", datax, datay, result);
- }
- else
- {
- for (i = 0; i < (-1)*datay; i++)
- result = result / datax;
- // printf("\nResult: %lf^%d=%lf", datax, datay, result);
- }
- printf("\nResult: %lf^%d=%lf", datax, datay, result);
- return 0;
- }
复制代码
P716
- /*
- 编写一程序P716.C实现以下功能
- 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字(可取1~9之间的一个值)。
- 例如2+22+222+2222+22222(此时共有5个数相加),其中a值和有几个数相加由键盘输入控制。
- 注意s的值有可能超出int的范围,
- 编程可用素材:
- printf("Please input a,n: ");
- printf("\na+aa+...=…);
- 程序的运行效果应类似地如图1所示,图1中的2,3是从键盘输入的内容。
- Please input a,n: 2,3
- a+aa+...=246
- 提示:
- 1. 这样的题,自己做完后测试,一定要主动测试一下自己创造的数据,看结果符不符合预期
- 2. 首先题提供的测试数据要能通过
- 3. 变化后的数据,可以检验算法的通用性
- */
- #include <stdio.h>
- int main(void)
- {
- int dataa, count, i;
- double aaa;
- double result = 0;
- printf("Please input a,n: ");
- scanf("%d,%d", &dataa, &count);
- aaa = dataa;
- /*
- 注意循环的范围 ,特别是终点
- */
- for (i = 0; i < count; i++)
- {
- result = result + aaa; // 累加还有一种常用的写法 result += aaa;
- aaa = aaa * 10 + dataa; // 构造a aa aaa ... 数据
- }
- printf("\na+aa+...=%.0lf", result);
- return 0;
- }
复制代码
P724
- /*
- 编写一程序P724.C实现以下功能
- 从键盘输入1~9之间的一个数,根据输入的数,输出对应的下三角乘法口诀表。
- 要求积的输出占3个宽度,且左对齐。
- 编程可用素材:
- printf("input a number(1~9): ");
- 程序的运行效果应类似地如图1和图2所示,图1中的3和图2中的7是从键盘输入的内容。
- input a number(1~9): 3
- 1*1=1
- 2*1=2 2*2=4
- 3*1=3 3*2=6 3*3=9
- 图1 程序运行效果示例
- input a number(1~9): 7
- 1*1=1
- 2*1=2 2*2=4
- 3*1=3 3*2=6 3*3=9
- 4*1=4 4*2=8 4*3=12 4*4=16
- 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
- 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
- 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
- 提示
- 1. 首先要弄清楚行的控制
- 2. 再弄清楚列的控制
- 3. 常用的双重循环的行列的控制,特别是里面一层循环的起点和终点
- */
- #include <stdio.h>
- int main(void)
- {
- int i, j, data;
- printf("input a number(1~9): ");
- scanf("%d", &data);
- for (i = 1; i <= data; i++)
- {
- for (j = 1; j <= i; j++)
- {
- printf("%d*%d=%-3d", i, j, i * j);
- }
- printf("\n");
- }
- return 0;
- }
复制代码 |