永发信息网

这是二级C语言编程题吗?

答案:2  悬赏:60  手机版
解决时间 2021-03-03 06:45
  • 提问者网友:咪咪
  • 2021-03-02 06:23
函数fun()输入的任何正整n,是否能等于某几个连续正整数序列之和,若有,则输出所有整数可能的序列,否则就输出“不能分解”
例如:100 = 9+10+11+12+13+14+15+16
100 = 18+19+20+21+22,只需在fun()里面写,题上fun()只写了输出这些数的代码。其他的都需要自己写
最佳答案
  • 五星知识达人网友:孤独入客枕
  • 2021-03-02 06:41
void fun(int n)
{
if (n<1)
{
printf("请输入一个正数!\n");
return;
}
int nHalf=n /2;
int hasFound=0;
int sum=0;
int i=0,j=0;
for (i=nHalf;i>0;i--)
{
sum=0;
for (j=i;j>0;j--)
{
sum+=j;
if (sum==n)
{
hasFound=1;
printf("%d=",n);
for (int k=j;k<=i;k++)
{
if (k==i)
{
printf("%d",k);
}else
{
printf("%d+",k);
}
}
printf("\n");
break;
}else if(sum>n)
{
break;
}
}
}
if (! hasFound)
{
printf("%d不能分解\n",n);
}
}控制自己加,应该算还可以吧,10分钟左右吧,不过对新手而言可能有些难
一开始看漏了,要列出所有的可能性,改了一次
全部回答
  • 1楼网友:野味小生
  • 2021-03-02 08:02

#include <stdio.h>

struct student { //定义一个学生结构,包含学号,姓名,性别,数学成绩,计算机成绩,总分,平均分. char id[10]; char name[10]; char sex[5]; float math,comp; float all,ave; };

void main() { int i,j; student stu[10],t; //定义一个学生数组.存放10个学生的信息. 一个临时变量t.用来排序时交换使用 for(i=0;i<10;i++) //输入10个学生的学号,姓名,性别,数学成绩,计算机成绩 { scanf("%s%s%s%f%f",stu[i].id,stu[i].name,stu[i].sex,&stu[i].math,&stu[i].comp); stu[i].all=stu[i].math+stu[i].comp; //计算每个学生的总分. stu[i].ave=stu[i].all/2; //计算每个学生的平均分. } for(i=0;i<10-1;i++) //根据总分排序. { for(j=i+1;j<10;j++) { if(stu[i].all<stu[j].all) { t=stu[i]; stu[i]=stu[j]; stu[j]=t; } } }

printf("\n\n学号\t姓名\t性别\t总分\t平均分\n"); for(i=0;i<10;i++) { printf("%s\t%s\t%s\t%.2f\t%.2f\n",stu[i].id, stu[i].name,stu[i].sex,stu[i].all,stu[i].ave); } }

运行时截图:

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯