题目1 跟奥巴马一起画方块
(1)实验代码
#include<stdio.h>
int main ()
{
int n, i, j;
char a;
scanf("%d %c", &n, &a);
for(i = 1;i <= n*0.5+0.5;i++)
{
for(j = 1;j <= n;j++)
printf("%c",a);
printf("\n");
}
return 0;
}
(2)设计思路
第一步:定义整型变量和字符变量
第二步:输入并用for循环
第三步:输出图形
(3)本题调试过程碰到问题及解决办法
for循环的条件一开始错了,看了下题目改正了。
(4)运行结果截图
(1)实验代码
#include<stdio.h>
int main ()
{
int n, i, j;
char a;
scanf("%d %c", &n, &a);
for(i = 1;i <= n*0.5+0.5;i++)
{
for(j = 1;j <= n;j++)
printf("%c",a);
printf("\n");
}
return 0;
}
(2)设计思路
第一步:定义整型变量和字符变量
第二步:输入并用for循环
第三步:输出图形
(3)本题调试过程碰到问题及解决办法
for循环的条件一开始错了,看了下题目改正了。
(4)运行结果截图
![](https://i-blog.csdnimg.cn/blog_migrate/cc560b72bbdd61c11203d374ab4aaa28.png)
题目2 编程打印空心字符菱形
(1)实验代码
#include<stdio.h>
int main ()
{
int n, i, j, k;
char a;
scanf("%c %d", &a, &n);
n = (n + 1) / 2;
for(i = 0;i < n;i++)//行数的输出
{
for(j = 1;j < n-i;j++)
printf(" ");//每个字符前输出的空格
printf("%c",a+i);
for (j=0;j<2*i-1;j++)
printf (" ");//菱形里面的空格
if(i)//if(a)代表i不等于0时满足if条件,等价于if(i!=0)
printf ("%c",a+i);
printf ("\n");
}
for(i = n-1; i >0 ; i--)
{
for (j = 0; j < n-i; j++)
printf(" ");
printf("%c",a+i-1);
for (j=0;j<2*i-3;j++)
printf(" ");
if (i-1!=0)
printf ("%c",a+i-1);
printf ("\n");
}
return 0;
}
(2)设计思路
第一步:将菱形拆成上下两部分
第二步:上半部分用三个for循环,每次字符加一
第三步:下半部分一样,只是每次字符减一
第四步:输出图形
(3)本题调试过程碰到问题及解决办法
格式错误了一次,空格问题
(4)运行结果截图
n = (n + 1) / 2;
for(i = 0;i < n;i++)//行数的输出
{
for(j = 1;j < n-i;j++)
printf(" ");//每个字符前输出的空格
printf("%c",a+i);
for (j=0;j<2*i-1;j++)
printf (" ");//菱形里面的空格
if(i)//if(a)代表i不等于0时满足if条件,等价于if(i!=0)
printf ("%c",a+i);
printf ("\n");
}
for(i = n-1; i >0 ; i--)
{
for (j = 0; j < n-i; j++)
printf(" ");
printf("%c",a+i-1);
for (j=0;j<2*i-3;j++)
printf(" ");
if (i-1!=0)
printf ("%c",a+i-1);
printf ("\n");
}
return 0;
}
(2)设计思路
第一步:将菱形拆成上下两部分
第二步:上半部分用三个for循环,每次字符加一
第三步:下半部分一样,只是每次字符减一
第四步:输出图形
(3)本题调试过程碰到问题及解决办法
格式错误了一次,空格问题
(4)运行结果截图
![](https://i-blog.csdnimg.cn/blog_migrate/bb330184c5449c84f1bc43470b840c32.png)
题目3 输出三角形字符阵列
(1)实验代码
#include <stdio.h>
int main()
{
int n, i, j,count = 0;
scanf("%d", &n);
for (i = n; i > 0; i--) //输出有多少行
{
for (j = 0; j < i; j++) //每行有多少个字符
{
printf("%c ", 'A' + count);
count++;//每循环一次加一,用于字母的增加
}
printf("\n");
}
return 0;
}
(2)设计思路
第一步:定义输入的变量
第二步:两个for循环
第三步:字符增加
第四步:输出图形
(3)本题调试过程碰到问题及解决办法
没什么问题
(4)运行结果截图
![](https://i-blog.csdnimg.cn/blog_migrate/36a42cc2f70656188a2a4e805cf3dc6b.png)
题目4 阅览室
(1)实验代码
#include<stdio.h>
#include<math.h>
#include<string.h>
int main ()
{
int n, x, h, m;
int sum=0,s=0;
int b[1001];
char a;
scanf("%d", &n);
memset(b,-1,sizeof(b));
while(n--)
{
while(1)
{
scanf("%d %c %d:%d", &x, &a, &h, &m);
if(x==0)
{
memset(b,-1,sizeof(b));
if(s!=0)
printf("%d %.0f\n",s,(double)sum/s);
else
printf("0 0\n");
sum = s = 0;//此处将sum和s清0
break;
}
else
{
if(a=='S')
b[x] = h * 60 + m;
else if(a=='E'&&b[x]!=-1)
{
sum += h * 60 +m -b[x];
s++;
b[x]=-1;
}
}
}
}
return 0;
}
(2)设计思路
第一步:定义函数
第二步:定义整型变量和字符变量,加数组,用memset函数将数组b[x]全变为-1
第三步:输入要几天的借书记录,用与for循环的次数
第四步:输入,用if判断是否为0,为0输出0 0,不为0继续判断为S还是E
第五步:将输入为S的时间变为分钟,当下一次的b[x]相等且b[x]不为-1时算出时间
第六步:输出结果
(3)本题调试过程碰到问题及解决办法
sum和s没有清0,结果错误
(4)运行结果截图
![](https://i-blog.csdnimg.cn/blog_migrate/58885480262495dce1c6752fb6ab2e9f.png)