本文目錄一覽:
- 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,產生多個可以加入循環。。
原創文章,作者:PTLC,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/140594.html