每日五题第四天
持之以恒
一、带空格星号直角三角形打印
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“* ”组成的带空格直角三角形图案。
#include <stdio.h>
int main()
{
int i, j, n;
while (scanf("%d", &n) != EOF)
{
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n - i; j++)
printf(" ");
for (j = 1; j <= i; j++)
printf("* ");
printf("\n");
}
}
return 0;
}
运行结果如下:
二、字符逆序
要注意,c中不能用gets,要用gets_s,否则会报错
#include <stdio.h>
#include<string.h>
int main()
{
char str[10000];
gets_s(str);
int sz = strlen(str);
int i = 0;
for (i = sz - 1; i >= 0; i--)
{
printf("%c", str[i]);
}
return 0;
}
运行结果如下
三、争夺前五名问题
题目描述:期中考试开始了,大家都想取得好成绩,争夺前五名。从键盘输入 n 个学生成绩,输出每组排在前五高的成绩。
数据范围: ,成绩采取百分制并不会出现负数
源码如下:
#include <stdio.h>
int main() {
int i=0,j=0;
int arr[40]={0};
int n=0;
int t=0;
scanf("%d\n",&n);
for(i=0;i<n;i++)
scanf("%d ",&arr[i]);
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(arr[j]>arr[i])
{
t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}
for(i=0;i<5;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
运行结果如下:
四、圣诞树问题
源码如下
#include<stdio.h>
int main()
{
int c = 1;//用于控制最后的尾巴(数柄);
int n = 0;//层数
scanf("%d",&n);
int d = 3 * n;//a和d用于控制最开始的空白数;
for (int i = 1; i <= n; i++)
{
for (int a = d -1;a>0;a--)//
{
printf(" ");
}
for (int k = 1; k <= i; k++)//k代表一行打印多少个“* ”
{
printf("* ");//把第一层当作“* ”来打印
}
printf("\n");
for (int a = d - 2; a > 0; a--)//同上
{
printf(" ");
}
for (int k = 1; k <= i; k++)
{
printf("* * ");
}
printf("\n");
for (int a = d-3; a > 0; a--)//同上
{
printf(" ");
}
for (int k = 1; k <= i; k++)
{
printf("* * * ");
}
printf("\n");
d = d - 3;
}
while (c<=n)
{
for (int i = 1; i <= (6 * n - 1) / 2; i++)
{
printf(" ");
}
printf("*\n");
c++;
}
return 0;
}
运行结果如下:
五、水仙花数问题
水仙花数:某个数字各个数位的n次幂(n表示该数字位数)的和等于该数字值
博主这里写的是判断三位数水仙花数,下一次博主会出0-100000之间的所有水仙花数。
源码如下:
#include <stdio.h>
int main() {
int m,n,v=0,i,a,b,c;
while(scanf("%d %d",&m,&n)!=EOF)
{
for(i=m;i<=n;i++)
{
a=i/100;
b=i%100/10;
c=i%10;
if(a*a*a+b*b*b+c*c*c==i)
{
printf("%d ",i);
v=1;
}
}
if(v!=1)
printf("no");
v=0;
printf("\n");
}
return 0;
}
运行结果如下:
今日五题结束,觉得有帮助的同学给博主个小小的支持吧