21、請撰寫函式fun,該函式的功能是:將M行N列的二維陣列中的字符資料,按列的順序依次放到一個字串中,
例如,若二維陣列中的資料為
W W W W
S S S S
H H H H
則字串中的內容應是:WSHWSHWSHWSH,
注意:請勿改動main函式和其他函式中的任何內容,僅在函式fun的花括號中填入所撰寫的若干陳述句,
#include<stdio.h> #define M 3 #define N 4 void fun(char (*s)[N],char *b) { } int main() { char a[100],w[M][N]={{ 'W', 'W', 'W', 'W'},{'S', 'S', 'S', 'S'},{'H', 'H', 'H', 'H'}}; int i,j; printf("The matrix:\n"); for(i=0;i<M;i++) { for(j=0;j<N;j++) printf("%3c",w[i][j]); printf("\n"); } fun(w,a); printf("The A string:\n"); puts(a); printf("\n "); return 0; }
void fun(char (*s)[N],char *b) { int i,j,k=0; for (i=0;i<N;i++) for (j=0;j<M;j++) b[k++]=s[j][i]; b[k]='\0'; }參考程式
22、已知學生的記錄由學號和學習成績構成,N名學生的資料已存入a結構體陣列中,請撰寫函式fun,該函式的功能是:找出成績最高的學生記錄,通過形參回傳主函式(規定只有一個最高分),已給出函式的首部,請完成該函式,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include<stdio.h> #define N 10 typedef struct ss /*定義結構體*/ { char num[10]; int s; } STU; fun(STU a[], STU *s) { } int main() { STU a[N]={{ "A01",81},{ "A02",89},{ "A03",66},{ "A04",87},{ "A05",77}, { "A06",90},{ "A07",79},{ "A08",61},{ "A09",80},{ "A10",71}},m; int i; printf("*****The original data*****"); for(i=0;i<N;i++) printf("No=%s Mark=%d\n", a[i].num,a[i].s); fun(a,&m); printf("*****THE RESULT*****\n"); printf("The top :%s, %d\n",m.num,m.s); return 0; }
fun(STU a[], STU *s) { STU m; m=a[0]; int i; for (i=1;i<N;i++) if (m.s<a[i].s) m=a[i]; *s=m; }參考程式
23、請撰寫函式fun,其功能是:計算并輸出3~n之間所有素數的平方根之和,
例如,若主函式從鍵盤給n輸入100后,則輸出為sum=148.874270,
注意:n的值要大于2但不大于100,請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> #include <math.h> double fun(int n) { } int main() { int n; double sum; printf("Input n="); scanf("%d",&n); sum=fun(n); printf("\nsum=%f\n",sum); return 0; }
double fun(int n) { int i,j; double s=0; for (i=3;i<=n;i+=2) { for (j=3;j<=sqrt(i);j+=2) if (i%j==0) break; if (j>sqrt(i)) s+=sqrt(i); } return s; }參考程式
24、請撰寫函式fun,該函式的功能是:判斷字串是否為回文,若是,則函式回傳1,主函式中輸出"YES",否則回傳0,主函式中輸出"NO",
回文是指順讀和倒讀都一樣的字串,
例如,字串LEVEL是回文,而字串123312就不是回文,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> #define N 80 int fun(char *str) { } int main() { char s[N]; int i; printf("Enter a string : "); gets(s); printf("\n"); puts(s); if(fun(s)) printf("YES\n"); else printf("NO\n"); return 0; }
int fun(char *str) { int i,j; for (i=0;str[i]!='\0';i++) ; j=i-1; i=0; while (i<j) { if (str[i]!=str[j]) break; i++; j--; } if (i<j) return 0; else return 1; }參考程式
25、請撰寫函式fun,對長度為7個字符的字串,除首、尾字符外,將其余5個字符按ASCII碼降序排列,例如,原來的字串為"CEAedca",排序后輸出為"CedcEAa",
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> #include <string.h> void fun(char *s,int num) { } int main() { char s[10]; printf("輸入7個字符的字串:"); gets(s); fun(s,7); printf("\n%s",s); return 0; }
void fun(char *s,int num) { int i,j; for (i=1;i<num-2;i++) for (j=1;j<num-1-i;j++) if (s[j]<s[j+1]) { char t; t=s[j]; s[j]=s[j+1]; s[j+1]=t; } }參考程式
26、請撰寫函式fun,其功能是:將一組得分中,去掉一個最高分和一個最低分,然后求平均值,并通過函式回傳,函式形參a指向存放得分的陣列,形參n中存放得分個數(n>2),
例如,若輸入9.9 8.5 7.6 8.5 9.3 9.5 8.9 7.8 8.6 8.4十個得分,則輸出結果為:8.687500,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入所撰寫的若干陳述句,
#include <stdio.h> double fun(double a[ ],int n) { } int main() { double b[10], r; int i; printf("輸入10個數放入b陣列中 : "); for (i=0; i<10; i++) scanf("%lf",&b[i]); printf("輸入的10個數是 : "); for (i=0; i<10; i++) printf("%4.1f ",b[i]); printf("\n"); r=fun(b,10); printf("去掉最高分和最低分后的平均分 : %f\n", r ); return 0; }
double fun(double a[ ],int n) { double sum,max,min; int i; sum=max=min=a[0]; for (i=1;i<n;i++) { sum+=a[i]; if (max<a[i]) max=a[i]; if (min>a[i]) min=a[i]; } return (sum-max-min)/(n-2); }參考程式
27、請撰寫一個函式void fun(int m,int k,int xx[]),該函式的功能是:將大于整數m且緊靠m的k個素數存入陣列xx傳回,
例如:若輸入17 5 則應輸出:19,23,29,31,37,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入所撰寫的若干陳述句,
#include <stdio.h> void fun(int m,int k,int xx[]) { } int main() { int m,n,xx[1000]; printf("\nPlease enter two integers:"); scanf("%d%d",&m,&n); fun(m,n,xx); for(m=0;m<n;m++) printf("%d ",xx[m]); printf("\n"); return 0; }
void fun(int m,int k,int xx[]) { int i,j,s=0; for(i=m+1;k>0;i++) { for(j=2;j<i;j++) if (i%j==0) break; if(i==j) { xx[s++]=i; k--;} } }參考程式
28、請撰寫函式void fun(char *s),它的功能是:把 s 字串中的所有字母改寫成該字母的下一個字母,字母z改寫成字母a,要求大寫字母仍為大寫字母,小寫字母仍為小寫字母,其它字符不做改變,
例如:s 字串中原有的內容為:Mn.123Zxy,則呼叫該函式后,結果為:No.123Ayz,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入所撰寫的若干陳述句,
#include <stdio.h> #define N 81 void fun(char *s) { } int main( ) { char a[N]; printf("Enter a string : "); gets(a); printf("The original string is : "); puts(a); fun(a); printf("The string after modified : "); puts (a); return 0; }
void fun(char *s) { while(*s) if (*s=='z'||*s=='Z') {*s-=25; s++;} else if (*s>='a'&&*s<='y') {*s+=1;s++;} else if (*s>='A'&&*s<='Y') {*s+=1;s++;} else s++; }參考程式
29、撰寫函式int fun(int t),它的功能是:求Fibonacci數列中大于t的最小的一個數,結果由函式回傳,其中Fibonacci數列F(n)的定義為:
F(0)=0,F(1)=1
F(n)=F(n-1)+F(n-2)
例如:當t=1000時,函式值為:1597,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入所撰寫的若干陳述句,
#include <stdio.h> int fun(int t) { } int main() { int n; n=1000; printf("n=%d,f=%d\n",n,fun(n)); return 0; }
int fun(int t) { int f0=0,f1=1,fn; fn=f0+f1; while (fn<=t) { f0=f1; f1=fn; fn=f0+f1; } return fn; }參考程式
30、已知結構陣列sell中存有10個產品銷售記錄,每個產品銷售記錄由產品代碼dm(字符型4位),產品名稱mc(字符型10位),單價dj(整型),數量sl(整型),金額je(長整型)五部分組成,其中:金額=單價*數量計算得出,請編制函式fun(),其功能是:按產品名稱從小到大進行排列,若產品名稱相等,則按金額從小到大進行排列,最終排列結果仍存入結構陣列sell中,
#include <stdio.h> #include <string.h> typedef struct{ char dm[5]; /*產品代碼*/ char mc[11]; /*產品名稱*/ int dj; /*單價*/ int sl; /*數量*/ long je; /*金額*/ }PRO; void fun(PRO sell[]) { } int main() { PRO sell[10]={{"1001","電視機",1000,8},{"1001","電視機",1000,5}, {"1002","洗衣機",850,4},{"1002","洗衣機",850,3}, {"1003","電冰箱",1000,8},{"1003","電冰箱",1000,5}, {"1001","電視機",1250,4},{"1004","空調",2180,5}, {"1002","洗衣機",816,3},{"1001","電視機",1440,5}}; int i; for (i=0;i<10;i++) sell[i].je=sell[i].dj*sell[i].sl; fun(sell); for(i=0;i<10;i++) printf("%5s %11s %4d %5d %5ld\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je); return 0; }
void fun(PRO sell[]) { int i,j; PRO xy; for(i=0;i<9;i++) for(j=i+1;j<10;j++) if(strcmp(sell[i].mc,sell[j].mc)>0||strcmp(sell[i].mc,sell[j].mc)==0&&sell[i].je>sell[j].je) { xy=sell[i]; sell[i]=sell[j]; sell[j]=xy; } }參考程式
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/535959.html
標籤:C
