题目描述
从键盘输入若干学生的成绩,输出其中的最高成绩。
输入
输入若干学生的成绩,输入负数时结束输入。
输出
输出最高成绩。
样例输入
8
34
345
353.88
23
-2
样例输出
353.880000
c语言求救:循环打擂
答案:4 悬赏:80 手机版
解决时间 2021-12-28 00:49
- 提问者网友:雨不眠的下
- 2021-12-27 17:14
最佳答案
- 五星知识达人网友:底特律间谍
- 2021-12-27 18:33
#include
#include
#define sizeAdd 10//存储空间初值及增值大小(字符数)
double findMax(double *c,int len);
int main()
{
double *c,*cSave,n;
int i,len=0,size=sizeAdd;
c=(double *)malloc(sizeof(double)*size);
printf("输入任意个学生的单科成绩(输入负数退出输入):\n");
while(1)
{
scanf("%6lf",&n);
if(n<0)
break;
c[len]=n;
len++;
if(len==size)//存储空间不足扩展
{
size=size+sizeAdd;
cSave=c;
c=(double *)malloc(sizeof(double)*size);
for(i=0;i
free(cSave);
cSave=NULL;
}
}
printf("最大值:%f。\n",findMax(c,len));
return 0;
}
double findMax(double *c,int len)
{
double n;
n=c[0];
while(--len>=0)
{
if(n
}
return n;
}
全部回答
- 1楼网友:举杯邀酒敬孤独
- 2021-12-27 22:29
#include
int main() {
printf("输入若干学生的成绩,输入负数时结束输入。\n");
double a = 0.0, b = 0.0;
do {
scanf("%lf", &a)
if(a>b) b = a;
} while(a > 0.0);
printf("输出最高成绩 %lf\n", b);
}
- 2楼网友:神也偏爱
- 2021-12-27 21:27
逻辑有问题。
修改后如下:
for(n=5;n<10000;n++) { for(i=n-1;i>1;i--) { if(n%i==0) break; } if(i==1) {a[k]=n;k++;} }
for(k=k-1;k>1;k--) 因为k是从0开始的,这里要改成for(k=k-1;k>0;k--)才能判断全部数
结束程序可以用exit(); 还有return;
- 3楼网友:猎心人
- 2021-12-27 19:59
#include
int main()
{
double i=0, max=0 ; // 定义两个变量,i用来存放输入的成绩,max存最大的成绩
scanf("%lf",&i); // 输入学生的成绩
max = i; // 让最大的成绩等于一开始输入的成绩,因为只有一个成绩
while (i >= 0) // 输入的成绩不是负数
{
if (i > max) // 如果输入的成绩大于最大值
{
max = i; // 则把输入的成绩赋给最大值
}
scanf("%lf", &i); // 输入学生的成绩
}
printf_s("%lf",max); // 输出最大成绩
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |