1.學生成績
產生某班50位學生的資料,每位學生資料包括:學生姓名、號碼、計概、與微積分兩科成績,資料限制條件如下說明。
1.學生姓名由name.txt讀入。
2.每位學生之號碼為照順序1~50號。
3.所有成績均為介於70~100之間的整數,亂數產生,可重複。
4.可輸出學生資料,輸出格式如格式一,名稱為student.txt。
5.按每位學生之平均成績高低由高至低排列印出。平均成績相同時,則以計概成績較高者為優先排列。列印格式如格式二。
name.txt
Larry Garrett Jerry Michael Patrick Melody Leland Sebastian Alex Willy Johnny Thomas Peter Nancy Connor Christopher Roy Seth Adrian Dakota Eduardo Carlos Jeremiah Jared Aaron Jensen Ryan Cole Dylan Charles Gavin Alvin Walter Ian Kieran Andrew Pete William Anthony Cole Cameron Joseph Eric Betty Carson Clyde Jaime Matthew Kevin Mickey
格式ㄧ
學生姓名 號碼
Larry 1
Garrett 2
...
...
Mickey 50
格式二
學生姓名 計概成績 微積分成績 平均成績 名次
Dakota XXX XXX XXX 1
Walter XXX XXX XXX 2
...
...
Carson XXX XXX XXX 50
2.空間配置
利用亂數取20個A~Z的大寫英文字母(可重複),並由大到小排序。
需使用malloc搭配指標方式,不可使用陣列。
輸出結果
原始字母:
R U H L G R M R Y N K D M H S E K V C Q
排序結果:
C D E G H H K K L M M N Q R R R S U V Y
3.微分處理
寫出一個多項式的結構,包含係數和次方。
一開始先輸入一個值,代表這個多項式一共有多少項
give me a number:%d
一次輸入兩個數,先後代表係數和次方,ㄧ直到輸入到最後一項,或是兩個都為0為止
Coefficient:%d
Power:%d
印出到現在所有的項
3x^2 + 4x^4 + 5x^1 + 5x^0
然後從大到小排列
4x^4 + 3x^2 + 5x^1 + 5x^0
列出可微分的次數直到0
0階:4x^4 + 3x^2 + 5x^1 + 5x^0
1階:16x^3 + 6x^1 + 5x^0
2階:48x^2 + 6x^0
3階:96x^1
4階:96x^0
5階:0
用malloc去令空間
結構不能用→去附值
我只會第2題
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int cntArr = 20;
char *arrChr;
char iTemp;
srand(time(NULL));
//需使用malloc搭配指標方式,不可使用陣列
arrChr = malloc(cntArr * sizeof(char));
//亂數取20個A~Z的大寫英文字母(可重複)
for (int i=0;i<cntArr;i++) {
*(arrChr+i) = 65+(rand()%26);
}
for (int i=0;i<cntArr;i++) {
printf("%c ", *(arrChr+i));
}
printf("\n");
//並由大到小排序
for (int i=0;i<(cntArr-1);i++) {
for (int j=i+1;j<cntArr;j++) {
if (*(arrChr+i) < *(arrChr+j)) {
iTemp = *(arrChr+i);
*(arrChr+i) = *(arrChr+j);
*(arrChr+j) = iTemp;
}
}
}
for (int i=0;i<cntArr;i++) {
printf("%c ", *(arrChr+i));
}
printf("\n");
//並由小到大排序
for (int i=0;i<(cntArr-1);i++) {
for (int j=i+1;j<cntArr;j++) {
if (*(arrChr+i) > *(arrChr+j)) {
iTemp = *(arrChr+i);
*(arrChr+i) = *(arrChr+j);
*(arrChr+j) = iTemp;
}
}
}
for (int i=0;i<cntArr;i++) {
printf("%c ", *(arrChr+i));
}
printf("\n");
free(arrChr);
return 0;
}
懶得乖乖排序XD
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int main()
{
int i, *countArr, k;
if((countArr=malloc(sizeof(int)*26))==NULL) {
printf("malloc error");
return 0;
}
memset(countArr, 0, sizeof(int)*26);
srand(time(NULL));
for(i=0;i<20;++i) {
k=(int)(rand()/(RAND_MAX+1.0)*26);
printf("%c ", 'A'+k);
++*(countArr+k);
}
printf("\n");
for(i=0;i<26;++i) {
if(*(countArr+i)>0) {
for(k=0; k<*(countArr+i); ++k) {
printf("%c ", 'A'+i);
}
}
}
free(countArr);
return 0;
}
用malloc去令空間
結構不能用→去附值
是我的年代太久遠了嗎?
這是什麼問題與用詞,我都看不懂?
大概老矣,視茫茫,而髮蒼蒼,而齒牙動搖。
同學你連這麼簡單的作業都寫不出來喔?還要把作業來整串拿上來問
不過你就算教了分數也要打七折 我還會幫你跟助教說你是網路抄來ㄉ