练习4-1
#include <stdio.h>
int main()
{
puts("请输入两个整数。");
int n1, n2;
printf("整数a:"); scanf("%d", &n1);
printf("整数b:"); scanf("%d", &n2);
int min = n1 < n2 ? n1 : n2;
int min1 = min;
int max = n1 > n2 ? n1 : n2;
int acc = min;
do {
acc = acc + (min + 1);
min++;
} while (min < max);
printf("大于等于%d小于等于%d的所有整数的和是%d", min1, max, acc);
return 0;
}
练习4-15
#include <stdio.h>
int main()
{
int sta, sta1, value;
printf("开始数值(cm):"); scanf("%d", &sta);
printf("结束数值(cm):"); scanf("%d", &sta1);
printf("间隔数值(cm):"); scanf("%d", &value);
for (sta; sta < sta1; sta += value) {
printf("%dcm\t%.2fkg\n", sta, (double)(sta - 100) * 0.9);
}
printf("%dcm\t%.2fkg\n", sta1, (double)(sta1 - 100) * 0.9);
return 0;
}
练习4-18
#include <stdio.h>
int main()
{
int value;
printf("显示多少个*:");
scanf("%d", &value);
for (int i = 1; i <= value; i++) {
putchar('*');
if (i % 5 == 0 && i >= 5) {
putchar('\n');
}
}
return 0;
}
练习4-19
#include <stdio.h>
int main()
{
printf("整数值:");
int value, num = 0;
scanf("%d", &value);
for (int i = 1; i <= value; i++) {
if (!(value % i)) {
printf("%d\n", i);
num++;
}
}
printf("约数有%d个", num);
return 0;
}
练习4-22
#include <stdio.h>
int main()
{
printf("让我们来画一个长方形。\n一边:");
int n1, n2;
scanf("%d", &n1);
printf("另一边:");
scanf("%d", &n2);
int max = n1 > n2 ? n1 : n2;
int min = n1 < n2 ? n1 : n2;
for (int i = 1; i <= min; i++) {
for (int j = 1; j <= max; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
练习4-23 直角左上方
#include <stdio.h>
int main()
{
printf("生成直角在左上方的等腰直角三角形。\n短边:");
int n1;
scanf("%d", &n1);
for (int i = 1; i <= n1; i++) {
for (int j = n1;j>=i;j--) {
putchar('*');
}
putchar('\n');
}
return 0;
}
练习4-23 直角右上方
#include <stdio.h>
int main()
{
printf("生成直角在左上方的等腰直角三角形。\n短边:");
int n1,x=0;
scanf("%d", &n1);
for (int i = 1; i <= n1; i++) {
for (int j = 2; j <= i; j++) {
putchar(' ');
}
for (int j = n1; j >= i; j--) {
putchar('*');
}
putchar('\n');
}
return 0;
}
练习4-24
/*比如现在用户输入3最后一行要打印多少个呢?
(3-1)*2+1
2*2+1
4+1=5 最后一行需要打印5个星号
*
***
***** */
#include <stdio.h>
int main()
{
int stor, n1 = 1;/*定义一个用户输入的变量来接收有几层*/
scanf("%d", &stor);
int value = (stor - 1) * 2 + 1; /*value的结果 = 最后一行要打印多少星,不过我的代码没有用到value */
for (int i = 1; i <= stor; i++) {
/*下面的for先处理空格*/
for (int j = stor - 1; j >= i; j--) {
if (i != stor)
printf(" ");
}
/*开始处理要打印出来的*号思路:先从1开始打,依次加上2,如果最后打印星号的值等于value那就结束。*/
for (int i = 1; i <= n1; i++) {
putchar('*');
}
n1 += 2; /*上面打印好了后,n1就+2*/
putchar('\n');
}
return 0;
}
/*注意,代码中没有做检测负数运算。*/
/*这题就是先打印出左上直角。只不过这里用空格替代了*/
练习4-25
#include <stdio.h>
int main()
{
int n1, j;
scanf("%d", &n1);
int value = (n1 - 1) * 2 + 1; /*这里是先计算出第一行要打印多少*/
for (int i = 1; i <= n1; i++) {
for (int j = 2;j<=i;j++) {
printf(" ");
}
for (j = 1; j <= value; j++) {
printf("%d", i);
}
value -= 2;
putchar('\n');
}
printf("%d%%10的结果是:%d", n1, n1 % 10);
return 0;
}
/*注意:当用户输入大于10的数,那么就会显示错误,
解决方法,如果是10,那么检查有多少个数,然后这个减去这个数/2的数。(未测试)*/