❶ c語言編程 輸入20個學生的成績,求出其中大於平均成績學生的人數,並對20名學生成績按從高到低進行排序
#include"stdio.h"
main()
{
int i,j,sum=0,temp=0,a[20];
for(i=0;i<20;i++)
{
printf("please input a[%d]",i);
scanf("%d",&a[i]);
sum+=a[i];
}
for(i=0;i<20;i++)
if(a[i]>sum/20.0)
temp++;
printf("there are %d students' store above age %f\n",temp,sum/20.0);
for(i=0;i<19;i++)
for(j=0;j<19-i;j++)
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
for(i=0;i<20;i++)
printf("%d\n",a[i]);
}
❷ 幫忙編寫個C代碼
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int i = 0;
int j = 0;
int array[20] = {0};
/*生成隨機數30-100*/
for(i = 0; i < 20; i ++)
{
array[i] = 30 + (int)(71.0 * (rand() / (RAND_MAX + 1.0)));
}
/*按3個列寬輸出*/
for(i = 0; i < 20; i++)
{
printf("%3d", array[i]);
if((i+1)%5 == 0)
printf("\n");
}
int max_score = array[0];
int min_score = array[0];
int max_pos = 0;
int min_pos = 0;
int total = 0;
for(i = 0; i < 20; i++)
{
if(array[i] > max_score)
{
max_score = array[i];
max_pos = i;
}
if(array[i] < min_score)
{
min_score = array[i];
min_pos = i;
}
total += array[i];
}
float average = total/(float)20;
printf("最高分和位置: %d, %d\n", max_score, max_pos);
printf("最低分和位置: %d, %d\n", min_score, min_pos);
printf("average socre: %f\n", average);
/*冒泡排序*/
for(i = 0; i < 19; i++)
{
for(j = i+1; j < 20; j++)
{
if(array[i] < array[j])
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
for(i = 0; i < 20; i++)
{
printf("%d\t", array[i]);
}
printf("\n");
return 0;
}
❸ C語言:輸入20名人4門功課成績存入二維數組,用自定義函數按以下要求完成輸入、處理、輸出等操作。咋編
代碼文本:
#include "stdio.h"
#include <stdlib.h>
#include "time.h"
#define N 20
#define M 4
void Input(float (*p)[M+1]){//輸入函數
char i,j,t;
srand((unsigned)time(NULL));
for(i=0;i<N;i++)//模擬得分
for(p[i][M]=j=0;j<M;j++)
if((t=rand()%100)<10)
p[i][j]=(float)(rand()%101);
else if(t<30)
p[i][j]=(float)(rand()%81)+20;
else
p[i][j]=(float)(rand()%41)+60;
}
void Process(float (*p)[M+1]){//成績處理函數
char i,j;
for(j=0;j<=M;p[N][j++]=0);//課程和總平均值清0
for(i=0;i<N;i++){
for(p[i][M]=j=0;j<M;j++){
p[i][M]+=p[i][j];//累加學生課程
p[N][j]+=p[i][j];//單項課程累加
}
p[N][M]+=p[i][M];//全部課程累加
p[i][M]/=(M+0.0);//學生平均值
}
for(i=0;i<M;p[N][i++]/=(N+0.0));//功課平均值
p[N][M]/=(float)(N*M);//總平均值
}
void Print(float (*a)[M+1]){//輸出函數
char i,j;
printf(" NAME SCO1 SCO2 SCO3 SCO4 PAVE ");
puts("==============================================");
for(i=0;i<N;i++){
printf(" ST%02d ",i+1);//輸出學生名
for(j=0;j<M;printf("%.0f ",a[i][j++]));//功課分數
printf("%.2f ",a[i][M]);//輸出學生平均分數
}
puts("----------------------------------------------");
printf(" TAVE ");
for(i=0;i<=M;printf("%.2f ",a[N][i++]));//功課平均分
putchar(' ');
}
int main(int argc,char *argv[]){
float s[N+1][M+1];
Input(s);
Process(s);
Print(s);
return 0;
}
❹ C語言編程,急求
/*不是吧,我再TC上怎麼運行成功了呢?如果那樣的話我也沒辦法了,不好意思*/
#include "stdio.h"
#include "time.h"
main()
{int i,j,t,a[20];
srand(time(NULL));/*以時間為種子*/
for(i=0;i<20;i++)
a[i]=rand()%101;/*產生0-100的20個隨機數*/
for(i=0;i<20;i++)
printf("%d ",a[i]);/*輸出*/
printf("\n");
for(i=0;i<20;i++)/*排序開史點*/
for(j=i;j<20;j++)
if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}/*排序結束點*/
for(i=0;i<20;i++)/*再輸出*/
printf("%d ",a[i]);
}
❺ c語言編程 輸入20個學生成績和學號,然後輸入學號,查出他的成績並列印.
#include"stdio.h"
main()
{int i,a[2][20],j,c;
int (*p)[20];
p=a;
printf("\nEnter No students");
for(j=0;j<20;j++)
scanf("%d",*p+j);
printf("\nEnter the scores of pupils");
for(j=0;j<20;j++)
scanf("%d",*(p+1)+j);
printf("\nEnter the school to find its");
scanf("%d",&c);
i=0;
while(i++<20)
{
if(*(*p+i)==c)
printf("=%d",*(*(p+1)+i));
}
}
呵呵 剛學完指針 多維 都有點混了。
我改了 測試了 可以通過
你自己改改,讓輸出更好看點。
❻ c語言編寫一個程序,已知20個學生成績,求最高成績和該生序號
#include<stdio.h>
intmain(void)
{
inta[20];
inti;
intmax=0;
for(i=0;i<20;i++)//輸入20個成績
scanf("%d",&a[i]);
for(i=0;i<20;i++)
if(a[max]<a[i])
max=i;
printf("最高成績是%d,序號是%d ",a[max],max);
}
❼ 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;i<N;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;j<i;j++)
if(strcmp(A[i].SN,A[j].SN)==0)
break;
}while(j<i);
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]='