1. c語言編寫學生成績表
很好實現,一般的書都是以這個作為入門題,但是工程有些大,一般不會有人為你提供代碼,或者恰巧他也剛剛寫了這個題目...
主要思路:
用結構體保存數據,每個功能用函數實現,需要用文件指針創建數據文件,先定義一個足夠大的數組,每次運行的時候就先把數據讀入數組,然後提供各種功能!
一般不會遇到什麼難點,就是需要去寫每個函數,有些繁瑣...
2. C語言問題怎樣用二維數組編寫學生成績單。
按照你要求,用二維數組編寫。
#include<stdio.h>
#include<string.h>
intmain()
{
charstu[4][100],stuName[5][5]={"小明","小王","小陳","小李","小麗"},score[4],maxName[4][5];//成績最多輸入3位數999
inti,j,num,sum,ave[4],maxScore[4]={0,0,0,0};
for(i=0;i<4;i++)
{
stu[i][0]=0;
sum=0;
printf("請輸入學科%d各個學生的成績:
",i+1);
for(j=0;j<5;j++)
{
printf("%15s的成績:",stuName[j]);
scanf("%d",&num);
sprintf(score,"%d",num);
if(maxScore[i]<num)//記錄每科最高成績的人
{
maxScore[i]=num;
strcpy(maxName[i],stuName[j]);
}
sum=sum+num;//記錄每科總分
strcat(stu[i],stuName[j]);//拼接成績單
strcat(stu[i],":");
strcat(stu[i],score);
strcat(stu[i],";");
}
ave[i]=sum/5;//記錄每科平均分
}
for(i=0;i<4;i++)
{
printf("學科%d的最高分為%s:%d,平均分為%d。
所有學生成績單為:%s。
",i+1,maxName[i],maxScore[i],ave[i],stu[i]);
}
return0;
}
3. C語言:學生成績單製作
// rtr.cpp : 定義控制台應用程序的入口點。
//
#include "stdafx.h"
//1. 定義一個數組,用以存放學生的成績。
#include <stdio.h>
void main()
{
int mark[1000];
int i,j=0,n,k,b,c,a,temp,min,l=0;
printf("請輸入學生的人數:");
scanf("%d",&n);
/*printf("你想輸入學生的哪科成績:\n1:語文:數學\n");
scanf("%d",&a);*/
/*if (a==1)
{
printf("\n語文\n");
}
else*/
printf("\n數學成績\n");
//2. 從鍵盤輸入n個學生成績兩門成績,並輸出。
printf("請輸入這%d個人的分數:",n);
for (i=0;i<n;i++)
{
scanf("%d",&mark[i]);
printf("mark[%d]=%d\n",i,mark[i]);
}
//3. 採用冒泡法/選擇法,將學生平均成績按照從高到低進行排序並輸出。
printf("排序後的分數:");
for (i=0;i<n;i++)
{
for (j=n-1;j>i;j--)
{
if(mark[j-1]<mark[j])
{
temp=mark[j-1];
mark[j-1]=mark[j];
mark[j]=temp;
}
}
printf("%d ",mark[i]);
}
//4. 再輸入一個學生的兩門成績,將此成績按照排序規律插入原學生成績數組並輸出。
printf("\n請輸入要插入的分數:");
scanf("%d",&b);
for (k=0;k<n;k++)
{
if (b>mark[k])
break;
}
for (i=n-1;i>=k;i--)
{
mark[i+1]=mark[i];
}
mark[k]=b;
printf("\n排序後的數組是:");
for (i=0;i<n+1;i++)
{
printf("%d ",mark[i]);
}
printf("\n反序存放從低到高:\n");
//5. 將排好序的成績單進行反序存放,即原來是從高到低,現在改為從低到高排列,並輸出。
for (i=0;i<n+1;i++)
{
for (j=n;j>i;j--)
{
if(mark[j]<mark[j-1])
{
temp=mark[j];
mark[j]=mark[j-1];
mark[j-1]=temp;
}
}
printf("%d ",mark[i]);
}
//6. 刪除剛插入的學生的成績並保持依然有序,並輸出
printf("\n刪除插入的分數後,排序的數組是:");
//for (k=0;k<n+1;k++)
//{
// if(b==mark[k])
// break;
//}
for (k=0;k<n+1;k++)
{
if (b<mark[k])
break;
}
for (i=k;i<=n;i++)
{
mark[i-1]=mark[i];
}
for (i=0;i<n;i++)
{
printf("%d ",mark[i]);
}
printf("\n達到分的的人數為:");
//7. 統計兩門均達分的人數,統計單科達分的每門的人數
for(i=0;i<n;i++)
{
if(mark[i]>=60)
{
l++;
}
}printf("%d\n",l);
//8. 在項目報告中畫出程序流程圖,說明程序設計的演算法,附主要程序段。
//9. 在項目報告中說明程序設計過程中的難點、解決辦法及編程小結或體會。
}
4. c語言用指針做成績表高到低排序…怎麼做呀
給你講個思路 學過太久了 不翻自己以前的模板就不會了
不知道你們要求的指針是什麼意思,如果嚴格規定是鏈表就很難了
先說簡單的
第一張
voidsort(int*score,intn)//score是保存成績的數組n是人數
{
inti,j;
for(i=0;i<n-1;i++)//這里要跑n-1次循環每次選出剩下元素中最大的放到前面
{
intmaxx=i;//那麼最後只剩兩個元素時只要選一次就好
for(j=i+1;j<n;j++)//掃第i個元素之後的元素
{
if(score[maxx]<score[j])
maxx=j;
}
inttemp=score[i];
score[i]=score[maxx];
score[maxx]=temp;
}
return;
}//排序完畢
第二種
首先你肯定建好了一個鏈表 (這個鏈表不會建你這題真很難)
然後把你的鏈表切開 (有沒有初始頭結點? 就是不保存數據 但是依舊是一個節點防止鏈表為空的節點 沒有的話把鏈表從第一個節點後面切開 有的話切第二個節點之後的)
切開後就變成了兩條鏈表 比如 (-1)--1--4--6--8--9--7--5--1 切開就是 (-1)--1
4--6--8--9--7--5--1
兩條鏈表的頭節點都要保存(不然你就找不到了)
從第二條鏈表 (長的那條)中拿出第一個節點 斷開 然後試著往第一條鏈表中插入
比第一個節點的值大? 插到它之前 否則往後走 直到遇到一個比他大的節點 插到它之後
循環插入之後,這條鏈表就是有序的了
(其實鏈表構建的時候你就可以構建一條有序的鏈表 )
5. C語言製作成績單
#include <stdio.h>struct stud
{
int num;
char name[20];
float score1, score2, score3, aver;
}; int main(void)
{
int high;
int i, j;
struct stud myClass[10], *pStu = myClass;
struct stud temp; printf("Please input students info:Num Name score1 score2 score3\n");
for (i = 0; i < 10; i++)
{
printf("%d:", i + 1);
scanf("%d %s %f %f %f", &myClass[i].num, &myClass[i].name, &myClass[i].score1,
&myClass[i].score2, &myClass[i].score3);
myClass[i].aver = (myClass[i].score1 + myClass[i].score2 + myClass[i].score3) / 3;
} high = 0;
for (i = 0; i < 10; i++)
{
if (myClass[i].aver > myClass[high].aver)
{
high = i;
}
} printf("\nThe Highest is %s(%d)\nscore1=%.2f score2=%.2f score3=%.2f aver=%.2f\n",
myClass[high].name, myClass[high].num,
myClass[high].score1, myClass[high].score2, myClass[high].score3, myClass[high].aver); for (i = 0; i < 9; i++)
{
for (j = i + 1; j < 10; j++)
{
if ((pStu + j)->aver > (pStu + i)->aver)
{
temp = *(pStu + j);
*(pStu + j) = *(pStu + i);
*(pStu + i) = temp;
}
}
} printf("\nResult of sort:\n");
printf("Num Name score1 score2 score3 average\n");
for (i=0; i<10; i++)
{
printf("%-5d %-20s %-8.2f %-8.2f %-8.2f %-.2f\n", (pStu+i)->num, (pStu+i)->name,
(pStu+i)->score1, (pStu+i)->score2, (pStu+i)->score3, (pStu+i)->aver);
}
return 0;
}
6. C語言怎麼輸出一個成績表
#include<stdio.h>
intmain()
{
floatscore[2][2]={0};
for(inti=0;i<2;i++)
{
for(intj=0;j<2;j++)
{
scanf("%f",&score[i][j]);
}
}
printf("---------------------- ");
printf("序號語文數學總成績 ");
printf("---------------------- ");
for(inti=0;i<2;i++)
{
printf("%-4d%-6.1f%-6.1f%6.1f ",i+1,score[i][0],score[i][1],score[i][0]+score[i][1]);
}
return0;
}
//測試輸出:
//80.0
//90.5
//90.5
//70.5
//----------------------
//序號語文數學總成績
//----------------------
//180.090.5170.5
//290.570.5161.0
7. 如何用C語言編寫一個學生的成績表
新鮮出爐!!
剛剛課上實驗提前做完寫的
有點倉促
界面的星星自己再改善一下吧 更好看一點
我用win-tc編的
win-tc是Turbo C 2.0 的內核
所以應該沒什麼問題
呼呼~累死姐姐了
孩子啊 給的分太少咯
哎 ……
姐姐我太善良了
/*學生成績表*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
struct node /*定義結構體鏈表節點*/
{
long student_number;
char name[20];
long phone_number;
char address[150];
struct node *next;
};
int main()
{
struct node *head=NULL;
struct node *pr=NULL;
struct node *p;
char num;
char respond;
/*整體循環結構 實現每步結束返回主界面*/
do{
fflush(stdin);
clrscr();
printf("\n**********************Student Table**********************\n");
printf("1.Add new student\n");
printf("2.Print the student table\n");
printf("3.Exit\n");
printf("*********************************************************\n");
printf("\n\n\n Please input the number related to yourwanted item:");
scanf("%c",&num);
/*添加學生信息*/
if(num=='1')
{
clrscr();
printf("\n*******************Add New Student******************\n");
p=head;
while(p->next!=NULL)
{
p=p->next;
}
do{
pr=(struct node*)malloc(sizeof(struct node)); /*為新的節點申請內存*/
if(pr==NULL)
{
printf("Not enough memory!");
break;
}
if(head==NULL)
{
head=pr;
}
printf("Please input the student number:"); /*輸入學生信息*/
scanf("%ld",&(pr->student_number));
fflush(stdin);
printf("Please input the student's name:");
gets(pr->name);
printf("Please input the student's phone number:");
scanf("%ld",&(pr->phone_number));
fflush(stdin);
printf("Please input the student's address:");
gets(pr->address);
p->next=pr;
pr->next=NULL;
p=pr;
printf("Do you want to add another one(Y/N)?");
scanf(" %c",&respond);
fflush(stdin);
}while(respond=='Y'||respond=='y');
printf("\n\n\n Please press any key to continue...");
getch();
}
/*列印學生表信息*/
else if(num=='2')
{
clrscr();
printf("\n******************Print Student Table******************\n");
printf("Student Number | Student Name | Phone Number | Address ");
printf("\n");
p=head;
do{
printf("%-17ld%-15s%-15ld%s",p->student_number,p->name,p->phone_number,p->address);
printf("\n");
p=p->next;
}while(p!=NULL);
printf("\n\n\n Please press any key to continue...");
getch();
}
/*選擇其他提示出錯*/
else if(num!='1'&&num!='2'&&num!='3')
{
clrscr();
printf("\n\n\n***********************************************************\n");
printf("ERROR!The number can only be chosen from 1,2and 3\n");
printf("***********************************************************\n");
getch();
}
}while(num!='3'); /*選擇3時退出循環*/
printf("\n\n\n\n Please press any key to exit...");
getch();
return 0;
}
8. 請高手幫忙用c語言設計一個二維成績表。
摘要 # include /*定義一個求每門課平均成績的函數AverageCourse 它的形參一個是二維數組,用來傳遞學生成績; 一個是指針變數(數組名),存放每門課的平均成績*/ void AverageCourse(float score[][4],float *avg) { int i,j; float sum; for(i=0;i<4;i++) { sum=0; for(j=0;j<4;j++) sum+=score[j][i]; avg[i]=sum/4; } } /*定義一個求總平均成績的函數AverageAll 它的形參一個是指針變數(數組名),傳遞一個首地址 n是要計算的成績個數*/ float AverageAll(float *score, int n) { int i=0; float sum = 0; while(i<n) { sum+=score[i]; i++; } return sum/n; } /*定義一個查詢學生成績的函數AStudentScore 它的形參一個是指向數組的指針,n是要計算的學生號*/ void StudentScore(float(*score)[4], int n) { int i; for(i=0; i<4; i++) printf("%4.2f ", *(*(score+n)+i)); printf(" "); } int main() { int num,i; /* 定義一個數組aveCourse來存儲每門課的平均成績, 定義變數aveAll來存儲總的平均成績*/
9. C語言做成績單
按照你要求,用二維數組編寫。 #include#includeint main( ){ char stu[4][100],stuName[5][5]={"小明","小王","小陳","小李","小麗"},score[4],maxName[4][5];//成績最多輸入3位數999 int i,j,num,sum,ave[4],maxScore[4]={0,0,0,0}; for(i=0;i<4;i++) { stu[i][0]=0; sum=0; printf("請輸入學科%d各個學生的成績:\n",i+1); for(j=0;j<5;j++) { printf("%15s的成績:",stuName[j]); scanf("%d",&num); sprintf(score,"%d",num); if(maxScore[i]
10. C語言做成績表
#include "stdio.h"
int main()
{
double s[11][3],x=0.0,y=0.0,z=0.0;
int i;
for(i=0;i<10;i++)
{
printf("請輸入第%d個學生的數學成績:",i+1);
scanf("%lf",&s[i][0]);
x+=s[i][0];
printf("請輸入第%d個學生的政治成績:",i+1);
scanf("%lf",&s[i][1]);
y+=s[i][1];
printf("請輸入第%d個學生的英語成績:",i+1);
scanf("%lf",&s[i][2]);
z+=s[i][2];
}
s[10][0]=x/10.0;s[10][1]=y/10.0;s[10][2]=z/10.0;/*計算平均成績*/
printf("數學的成績的平均分為:%.3lf\n",s[10][0]);
printf("政治的成績的平均分為:%.3lf\n",s[10][1]);
printf("英語的成績的平均分為:%.3lf\n",s[10][2]);
getchar();
return 0;
}