本文目录一览:
- 1、用c语言随机产生10个学生的成绩,学号=1000+(0-9随机数),学号和对应成绩输出到屏幕,输出
- 2、C语言,用随机函数生成100个考试分数
- 3、C语言:生成20个学号姓名和5门成绩的结构体数组,不动其数据,用指针数组按平均成绩由高至低排序,咋写?
- 4、怎样写一个随机生成成绩函数??
用c语言随机产生10个学生的成绩,学号=1000+(0-9随机数),学号和对应成绩输出到屏幕,输出
#include stdio.h
#include time.h
int main(){
int id[10],t,v;
float s[10],sv;
int i,j,k=0;
srand(time(0));
for (i=0;i10;i++) id[i]=1000+i;
for (i=0;i10;i++) {t=rand()%10;v=id[i];id[i]=id[t];id[t]=v;};
for (i=0;i10;i++) s[i]=41+rand()%60;
for (i=0;i10;i++) printf("(%d) %d %g\n",i,id[i],s[i]);
printf("==========\nThe best 3:\n");
for (i=0;i9;i++) for (j=i+1;j10;j++)
if (s[j]s[i]){v=id[i];id[i]=id[j];id[j]=v;sv=s[i];s[i]=s[j];s[j]=sv;};
for (i=0;i3;i++)printf("%d %g\n",id[i],s[i]);
printf("==========\n");
for (i=0;i10;i++) if (s[i]60) k++;
printf("k=%d\n",k);
for (i=0;i10;i++) if (s[i]60) printf("%d %g\n",id[i],s[i]);
return 0;
}
C语言,用随机函数生成100个考试分数
#include stdio.h
#include time.h
#include stdlib.h
#include string.h
void GenerateScore(int scoreArray[100])
{
int i;
srand((unsigned)time(NULL));
for (i = 0; i 100; i++)
{
scoreArray[i] = rand() % 51 + 45;
}
}
void GetTop10(int scoreArray[100], int *Top10)
{
int i, j;
int temp;
/* 先让Top10为数组的前10个,并排序 */
memcpy(Top10, scoreArray, 10 * sizeof(int));
for (i = 0; i 10; i++)
{
for (j = 0; j 10-1-i; j++)
{
if (Top10[j] Top10[j+1])
{
temp = Top10[j];
Top10[j] = Top10[j+1];
Top10[j+1] = temp;
}
}
}
/*再从后面的90个中,把比前10大的放到前10中*/
for (i = 10; i 100; i++)
{
Top10[10] = scoreArray[i];
j = 9;
while (j = 0 Top10[j] Top10[j+1])
{
temp = Top10[j];
Top10[j] = Top10[j+1];
Top10[j+1] = temp;
j--;
}
}
}
/*输出结果*/
char OutputResult(int *Top10)
{
int i, sum = 0;
for (i = 0; i 10; i++)
{
sum += Top10[i];
}
char r;
int average = sum / 10;
if (average = 90)
{
r = 'A';
}
else if (average = 80)
{
r = 'B';
}
else if (average = 70)
{
r = 'C';
}
else if (average = 60)
{
r = 'D';
}
else
{
r = 'F';
}
return r;
}
int main()
{
int a[100];
int top10[11];
GenerateScore(a);
GetTop10(a, top10);
printf("The result is: %c\n", OutputResult(top10));
return 0;
}
C语言:生成20个学号姓名和5门成绩的结构体数组,不动其数据,用指针数组按平均成绩由高至低排序,咋写?
(感觉略有难度) 题目没有要求计算和输出平均值,所以排序可以不求平均值而按五门总分进行,效果与求出平均分是一样的——
代码文本:
#include "stdio.h"
#include stdlib.h
#include string.h
#include "time.h"
#define N 20
struct stu{
int s[5];
char SN[9],NAME[6];
};
int main(int argc,char *argv[]){
int i,j,k;
struct stu A[N],*p[N],*q;
srand((unsigned)time(NULL));
for(i=0;iN;i++){//随机生成学生信息
do{//随机生成8位学号且不重复
itoa(10000+rand()%10000,A[i].SN,10);
strcpy(A[i].SN,A[i].SN+1);
itoa(1000+rand()%1000,A[i].SN+4,10);
for(j=0;ji;j++)
if(strcmp(A[i].SN,A[j].SN)==0)
break;
}while(ji);
A[i].NAME[0]='S',A[i].NAME[1]='T',A[i].NAME[2]='U';
A[i].NAME[3]=(i+1)/10+'0',A[i].NAME[4]=(i+1)%10+'0';
A[i].NAME[5]='\0';
for(j=0;j5;A[i].s[j++]=rand()%101);//随机生成成绩
}
for(i=0;iN;p[i]=A+i++);//为指针数组赋值
for(i=0;iN;i++){
for(k=i,j=k+1;jN;j++)
if(p[k]-s[0]+p[k]-s[1]+p[k]-s[2]+p[k]-s[3]+p[k]-s[4]
p[j]-s[0]+p[j]-s[1]+p[j]-s[2]+p[j]-s[3]+p[j]-s[4])
k=j;
if(i-k)
q=p[i],p[i]=p[k],p[k]=q;//把平均成绩高的向前交换
printf("%s\t%s\t",p[i]-SN,p[i]-NAME);//输出学号姓名
for(j=0;j5;printf("%4d",p[i]-s[j++]));//输出原始成绩
putchar('\n');
}
return 0;
}
怎样写一个随机生成成绩函数??
先给你说一哈C语言随机函数
编程时有时需要随机输入一些数,这是调用随机函数可以完成此相命令.
# include “stdio.h”
# include “stdlib.h”
# include “time.h” /*需引用的头文件*/
srand((unsigned)time(NULL)); /*随机种子*/
n=rand()%(Y-X+1)+X; /*n为X~Y之间的随机数*/
int rand(void) 函数int rand( void );
返回的是一个界于0~32767(0x7FFF)之间的伪随机数,包括0和32767。
C预先生成一组随机数,每次调用随机函数时从指针所指向的位置开始取值,因此使用rand()重复运行程序产生的随机数都是相同的,可以通过srand()函数来改变指针位置。 void srand( unsigned int seed ) 改变随机数表的指针位置(用seed变量控制)。一般配合time(NULL)使用,因为时间每时每刻都在改变,产生的seed值都不同。
你要生成随即成绩就可参照上面的生成:
score=rand()%100,产生多个可以加入循环。。