仅供参考
第一图
#include <stdio.h>
int gcd(int n, int j)
{
if (n % j == 0)
return 1;
return 0;
}
int main(int argc, char *argv[])
{
size_t n;
char c = '*';
scanf("%zd", &n);
int a[n];
for (int i = 0; i < n; i++)
scanf("%d", &a[i]);
for (int i = 0; i < n; i++)
{
for (int j = a[i]; j > 0; j--)
{
if (gcd(a[i], j))
{
int k = j;
while (k--)
printf("%c", c);
puts("");
}
}
}
return 0;
}
第二图
#include <stdio.h>
int mon[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int isleap(int year)
{
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
return 1;
return 0;
}
int main(int argc, char *argv[])
{
size_t n;
scanf("%zd", &n);
int arr[n][2];
for (int i = 0; i < n; i++)
scanf("%d%d%*d", &arr[i][0], &arr[i][1]);
for (int i = 0; i < n; i++)
{
if (isleap(arr[i][0]))
printf("366 %d\n", mon[arr[i][1]]);
else
printf("365 %d\n", mon[arr[i][1]]);
}
return 0;
}
第三图
#include <stdio.h>
typedef struct
{
char name[30];
float cj;
} p;
void bubS(p *arr, int n)
{
p tmp;
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - i - 1; j++)
{
if (arr[j].cj < arr[j + 1].cj)
{
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
int main(int argc, char *argv[])
{
p stu[5];
for (int i = 0; i < 5; i++)
{
scanf("%29s%f", stu[i].name, &stu[i].cj);
}
bubS(stu, 5);
printf("%s %d\n", stu[2].name, (int)stu[2].cj);
return 0;
}
供参考:
//第一题
#include <stdio.h>
int main()
{
int T,a,i,j;
scanf("%d", &T);
while(T--){
scanf("%d", &a);
while (a){ // a == 0 退出循环
for(i = a;i > 0;i--)//输出 a 个 '*'
printf("*");
printf("\n");
for(i = a-1; i > 0;i--)//找到上一个 a 的最大因子数
if(a % i == 0) break;
a = i;
}
}
return 0;
}
//第二题
#include <stdio.h>
int isleap(int year)//闰年判断函数,是闰年返回 1,反之返回 0
{
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main()
{
int T,y,m,d;
int M[]={ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
scanf("%d", &T);
while (T--){
scanf("%d %d %d", &y, &m, &d);
printf("%d %d\n",isleap(y) ? 366 : 365,//是闰年就输出366,反之则输出365
isleap(y) && m==2 ? M[m-1]+1 : M[m-1]);//是闰年且是2月份天数+1
}
return 0;
}
//第三题
#include <stdio.h>
#include <string.h>
int main()
{
int score[5],i,j,t;
char name[5][16],ch[16];
for (i = 0; i < 5;i++) //输入
scanf("%s %d", name[i], &score[i]);
for (i = 4; i > 0; i--){ //按成绩由高到低排序
for (j = 0;j < i; j++){
if (score[j] < score[j+1])
{
strcpy(ch,name[j]);strcpy(name[j],name[j+1]);strcpy(name[j+1],ch);
t = score[j]; score[j] = score[j+1]; score[j+1] = t;
}
}
}
printf("%s %d\n", name[2], score[2]); //输出排名第3的学生姓名和成绩
return 0;
}