当前位置:编程学习 > C/C++ >>

C语言程序设计

某校规定,学习成绩超过全班平均成绩的10%者得一等奖,学习成绩超过全班平均成绩的5%者得二等奖。某班有30名学生。请编写一个C语言程序,实现下列功能:

(1)输入全班学生成绩(学生用学号代表)。

(2)分别输出得一等奖和二等奖的同学的学号和成绩
追问:错误 noname.c 7: 表达式语法错在 main 函数中

错误 noname.c 7: 非法字符 '? (0xca)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xfd)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xd7)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xe9)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xd3)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xc3)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xc0)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xb4)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xb1)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xea)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xbc)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xc7)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xbb)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xf1)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xbd)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xb1)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xd1)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xa7)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xc9)在 main 函数中

错误 noname.c 7: 非法字符 '? (0xfa)在 main 函数中

错误 noname.c 8: 表达式语法错在 main 函数中

错误 noname.c 10: 未定义的符号'n'在 main 函数中

错误 noname.c 12: 未定义的符号'i'在 main 函数中

错误 noname.c 15: 表达式语法错在 main 函数中

错误 noname.c 15: 太多的错或警告信息在 main 函数中

*** 编译出现 25 个错误 ***

我用的是TC2.0的运行还有错误

答案:#include<stdio.h>
struct student //定义学生结构体
{ char Num[20]; //学生学好
int Score; //学生成绩
};


void main( )
{ struct student stu[50],*p; //定义变量,结构体指针
int i,n,Total=0,count=0;
p=stu; //将定义的结构体首地址赋给p

printf("请输入学生个数:"); //提示输入学生的个数
scanf("%d",&n);

printf("请输入学生的信息\n");
printf("学好\t成绩\n");
for(i=0;i<n;i++) //从键盘读取学生的学好 ,成绩
scanf("%s%d",p[i].Num,&p[i].Score);

for(i=0;i<n;i++) //执行循环体,统计所有学生的总成绩
Total+=p[i].Score;

printf("输出得一等奖获得者:\n");
for(i=0;i<n;i++)


if(p[i].Score>=((Total/(float)n)*(1+0.1))) //判断符合第一名的条件
{printf("学好\t成绩\n");
printf("%s\t%d\n",p[i].Num,p[i].Score); //符合就输出其学好及成绩
count++;}
if(count==0) printf("没有获奖者!"); //通过count来判断是否有一等奖获得者,只要count=0,就表示没有获奖者

count=0;
printf("输出得二等奖获得者:\n");
for(i=0;i<n;i++)
if((p[i].Score<((Total/(float)n)*(1+0.1)))&&(p[i].Score>=((Total/(float)n)*(1+0.05)))) //判断符合第二名的条件
{printf("学好\t成绩\n");
printf("%s\t%d\n",p[i].Num,p[i].Score); //符合就输出其学好及成绩
count++;}
if(count==0) printf("没有获奖者!\n"); //通过count来判断是否有二等奖获得者,只要count=0,就表示没有获奖者
}

给你大概写了个. 你看看. 有问题再追问.

#include <stdio.h>
#include <conio.h>

int main()
{
char id[50][10];
float sum[50],ave=0;
int flag[50]; //flag数组用来标记获奖学生.
int i,n;
printf("输入学生人数:");
scanf("%d",&n);
printf("输入学生学号 成绩<以空格分隔>:\n");
for(i=0;i<n;i++)
{
scanf("%s%f",&id[i],&sum[i]);
ave+=sum[i]; //累加总成绩;
flag[i]=0; //全部初始化为0;
}
ave/=n; //计算平均成绩;
printf("全班平均成绩为:%.3f\n",ave);
for(i=0;i<n;i++)
{
if(sum[i]>=ave*1.1)
flag[i]=1;
else if(sum[i]>=ave*1.05)
flag[i]=2;
}
printf("一等奖:\n");
for(i=0;i<n;i++)
{
if(flag[i]==1)
{
printf("%s\t%.2f\n",id[i],sum[i]);
}
}

printf("二等奖:\n");
for(i=0;i<n;i++)
{
if(flag[i]==2)
{
printf("%s\t%.2f\n",id[i],sum[i]);
}
}
getch();
return 0;
}

#include "stdio.h"
#include "conio.h"

main()
{ int stu[30];
int i;
int sum=0;
float aver;
for(i=0;i<30;i++)
scanf("%d",&stu[i]);
for(i=0;i<30;i++)
sum+=stu[i];
aver=sum/30.0;
for(i=0;i<30;i++)
{if((stu[i]-aver)/aver>=0.1)
printf("%d%d",i,stu[i]);
if(((stu[i]-aver)/aver>=0.05)&&((stu[i]-aver)/aver<=0.1))
printf("%d%d",i,stu[i]);
}}

#include"stdio.h"

void main()

{

float a[30],sum=0,ave=0;

int i;

printf("按学号顺序输入学生成绩\n");

for(i=0;i<30;i++)

{

scanf("%f",&a[i]);

sum+=a[i];

}

ave=sum/30;

for(i=0;i<30;i++)

{

if(a[i]>ave*(1+0.1))

printf("%d号获得一等奖成绩为%f!\n",i,a[i]);

else if(a[i]>ave*(1+0.05))

printf("%d号获得二等奖成绩为%f!\!\n",i,a[i]);

}

}

#include <stdio.h>
#include <string.h>
#define MAXSIZE 30

struct Node
{
char Number[10];
float Math;
float English;
};

int main()
{
int i, judge; //i用来计数(输入学生的个数) judge判断是否还要输入数据,sum全班二门课程成绩的总和
float sum, avg; //sum本班所有课程的成绩,avg计算本班同学的平均成绩
Node stu[MAXSIZE];
i = 0;
sum = 0;
//输入数据且求出全班二门课程成绩的总和
loop:
printf( "输入学号:" );
scanf( "%s", stu[i].Number );
while( strlen(stu[i].Number) > 10)
{
scanf( "%s", stu[i].Number );
}
printf( "输入数学成绩:" );
scanf( "%f", &stu[i].Math );
while( stu[i].Math > 100 || stu[i].Math < 0 )
{
scanf( "%f", &stu[i].Math );
}

printf( "输入英语成绩:" );
scanf( "%f", &stu[i].English );
while( stu[i].English > 100 || stu[i].English < 0 )
{
scanf( "%f", &stu[i].English );
}

printf( "是否还要输入数据是(1)否(0):" );
scanf( "%d",&judge );
sum += stu[i].Math + stu[i].English;
i++;
if( judge == 1 )
goto loop;
//求出本班的平均成绩


avg = sum /( i*2 ); //i为本班所有同学2为二门课程
printf("一等奖同学的学号和成绩为:\n");
for( int j =0 ; j < i; j++ )
{
if( ( stu[j].Math + stu[j].English)/2 > ( avg + avg * 0.1 ) )
{
printf( "学号:%s\t数学:%2.2f\t英语:%2.2f\n学号平均成绩:%2.2f\t总平均成绩+总平均成绩*0.1:%2.2f\n", stu[j].Number, stu[j].Math,
stu[j].English,(stu[j].Math + stu[j].English)/2, avg + avg * 0.1 );
}

}

printf("\n二等奖同学的学号和成绩为:\n");
for( j =0 ; j < i; j++ )
{
if( ( stu[j].Math + stu[j].English)/2 > ( avg + avg * 0.05 ) && ( stu[j].Math + stu[j].English)/2 < ( avg + avg * 0.1 ))
{
printf( "学号:%s\t数学:%2.2f\t英语:%2.2f\n学号平均成绩:%2.2f\t总平均成绩+总平均成绩*0.1:%2.2f\n", stu[j].Number, stu[j].Math,
stu[j].English,(stu[j].Math + stu[j].English)/2, avg + avg * 0.05 );
}

}
return 1;
}

结果如下:

#define maxstu 30
#include "stdio.h"
struct student
{
int num;
float sc;
}stu[maxstu];
main()
{
int i,flag[maxstu];
float ave,sumsc=0;
printf("输入全班学生学号&成绩:\n");
for(i=0;i<maxstu;i++){
scanf("%d,%f",&stu[i].num,&stu[i].sc);
sumsc+=stu[i].sc;
}
ave=sumsc/maxstu;
printf("全班学生平均成绩:%.1f\n",ave);
for(i=0;i<maxstu;i++){
if(stu[i].sc>=(1+0.1)*ave)flag[i]=1;
if(stu[i].sc>=(1+0.05)*ave&&stu[i].sc<(1+0.1)*ave)flag[i]=2;
}
printf("一等奖学生\n");
printf("学号 成绩\n ");
for(i=0;i<maxstu;i++)
if(flag[i]==1)
printf("%d%10.1f\n",stu[i].num,stu[i].sc);
printf("二等奖学生\n");
printf("学号 成绩\n ");
for(i=0;i<maxstu;i++)
if(flag[i]==2)
printf("%d%10.1f\n",stu[i].num,stu[i].sc);
}

上一个:C语言简单问题
下一个:寻C语言高手。。。

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,