算法
#include<stdio.h>int main()
{
int n,a[]={0},i,f=0,g=0;
float c=0,d=0,y,k;
scanf("%d",&n); //输入有几个成绩
for(i=0;i<n;i++)
{
scanf("%d",&a); //输入成绩
getchar(); //吸收回车
}
a='\0';
for(i=0;i<n;i++)
{
if(a>=60)
{
f++; //及格数
}
if(a>=85)
{
g++; //优秀数
}
}
c=(float)f/n;//及格率
d=(float)g/n;//优秀率
y=c*1000; //将小数转变成整数
k=d*1000; //同上
printf("%2.0f%\n",y); //输出两位整数且不带小数
printf("%2.0f%\n",k); //同上
return 0;
}
//题目的要求是,先用一行来输入n(人数),然后每一行输入一个数表示其中一个人的成绩,然后输入及格率xx%(比如85%),优秀率xx%(69%) 我的问题在于,我输入n为7,然后下面七行,每一行输入了一个数,然后没有反应 把
int n,a[]={0},i,f=0,g=0;
float c=0,d=0,y,k;
scanf("%d",&n);
改成
int n,i,f=0,g=0;
float c=0,d=0,y,k;
scanf("%d",&n);
inta;
试试 心驰神往 发表于 2020-12-10 10:46
把
int n,a[]={0},i,f=0,g=0;
float c=0,d=0,y,k;
不行,会报错,系统说a【n】必须要是含有常量的表达式 本帖最后由 心驰神往 于 2020-12-10 11:20 编辑
严凯 发表于 2020-12-10 11:08
不行,会报错,系统说a【n】必须要是含有常量的表达式
我用的Devc++可以,有截图吗 我这个2010vc++学习版不行,这个动态数组不行 行吧 来个人吧,我不行了{:10_285:} 动态分配数组,包含头文件 #include <stdlib.h>
int n,i,f=0,g=0;
int *a = 0;
float c=0,d=0,y,k;
scanf("%d",&n); //输入有几个成绩
a = (int *)malloc(n*sizeof(int));
....
free(a);
顶一下顶一下怎么没有人来呀 本帖最后由 jitianmoshen 于 2020-12-10 14:07 编辑
严凯 发表于 2020-12-10 13:44
顶一下顶一下怎么没有人来呀
用楼上的malloc方法啊,VS系列都不支持变长数组(VLA),而且变长数组不安全 jitianmoshen 发表于 2020-12-10 14:04
用楼上的malloc方法啊,VS系列都不支持变长数组(VLA),而且变长数组不安全
现在不是变长数组的问题,你看看我的源程序,为什么没有输出 #include<stdio.h>
int main()
{
int n,a,i,f=0,g=0;
float c=0,d=0,y,k;
scanf("%d",&n); //输入有几个成绩
for(i=0;i<n;i++)
{
scanf("%d",&a); //输入成绩
}
for(i=0;i<n;i++)
{
if(a>=60)
{
f++; //及格数
}
if(a>=85)
{
g++; //优秀数
}
}
c=(float)f/n;//及格率
d=(float)g/n;//优秀率
y=c*100; //将小数转变成整数
k=d*100; //同上
printf("%2.0f%%\n",y); //输出%要输入两个连续的%%
printf("%2.0f%%\n",k); //同上
return 0;
} jitianmoshen 发表于 2020-12-10 14:48
漂亮!谢谢,但是我的代码和你的代码到底是因为哪里不同而结果不同 严凯 发表于 2020-12-10 14:52
漂亮!谢谢,但是我的代码和你的代码到底是因为哪里不同而结果不同
int a,你的a[] = {0},数组长度没有定义, 当时,我觉得,我这个没有定义应该没有事,我后面有一个a='\0',但是为什么不行
页:
[1]