




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、高級語言程序設計模擬試題及參考答案1 . w是一個大于10的無符號整數,若 w是n(n>=2)位的整數,函數求出 w的低n-1位的 數作為函數值返回。如輸入790404,輸出為90404。#include <stdio.h>unsigned fun( unsigned wint j=1;unsigned sum=0;while ( w!=0) | if ( w<10) break;sum=sum+w%10*j;j=j*10; w=w/10; return sum; int main() unsigned x;printf( "enter a unsigned
2、integer number:" );scanf( "%u",&x);printf( "the original data is :%dn" ,x);if (x<10) printf( "data error!" ); elseprintf( "the result :%un",fun(x); |printf( "n");return 0;2 .完成decrypt函數,實現解密功能:將任意密文實現解密輸出。加密規則:字符串中所有 小寫英文字母循環加密。如 a到b, b到c
3、,z到a。如輸入 az ibwf b mjuumf bqqmf!, 輸出為:zy have a little apple!#include <stdio.h>#include <string.h> void decrypt( char * s) while (* s) if (* s>='a' && *s<='z') if (* s='a' ) * s='z' else*s=*s-1;s+;int main()char t180,ch;gets(tl);printf( "
4、;nthe original data is :%s",t1);decrypt(tl);printf( "nthe resulted data is :%s",t1);printf( "n");return 0;3 .用選擇法實現對10個整數按從大到小的順序排序輸出(要求用指針實現)。#include<stdio.h>int main()int a10,i,j;void sort(int *);for(i=0;i<10;i+)scanf("%d”,&ai);printf("nthe original
5、 data is :");for(i=0;i<10;i+) printf("%d ",ai);sort(a);printf("nthe result data is :");for(i=0;i<10;i+)printf("%d ",ai);puts("");return 0;void sort1(int *p)int i,j,t;for(i=0;i<9;i+)for(j=i+1;j<10;j+)if(*(p+i)<*(p+j)t=*(p+i);*(p+i)=*(p+j);*(
6、p+j)=t;4 .編寫函數,使字符串中尾部的*號不得多于n個;若多于n個,則刪除多于的*號;若少于或等于n個,什么也不做。例如:字符串內容為 *as*bhh*g*若n值為4,刪除后,字符串內容應該為:*AS*BHH*G*,若 n 值為 9,貝u為*as*bhh*g*#include <stdio.h>void fun(char *a,int n)char *t=a;int m=0;while (*t) t+;t-;while (*t='*')t-;m+;if (m>n) *(t+n+1)='0'void main()char s81;int
7、n;printf("Enter a string:n");gets(s);printf("nenter n:");scanf("%d",&n);fun(s,n);printf("the string after deleted:n");puts(s);printf("n");6. 用冒泡法實現對 10 個整數按從小到大的順序排序輸出(要求用指針實現)#include<stdio.h>int main()int a10,i,j;void sort(int *);for(i=0;
8、i<10;i+)scanf("%d",&ai);printf("nthe original data is :");for(i=0;i<10;i+) printf("%d ",ai);sort(a);printf("nthe result data is :");for(i=0;i<10;i+)printf("%d ",ai);puts("");return 0;void sort(int *p)int i,j,t;for(i=0;i<9;i+
9、)for(j=0;j<9 -i;j+)if(*(p+j)<*(p+j+1)t=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=t;7.有一個數組 int AnSize,要求寫一個函數:void myfunc (int p口,int nSize);將 A 中的 0 都移至數組末尾,將非0 的移至開始(保持原來的順序不變) 。例如:A 原來是:1,0, 3,4, 0,-3, 5 經過 myfunc 處理后為:1,3, 4,-3, 5, 0, 0#include <stdio.h>void myfunc(int p,int nsize) int i,tt10=
10、0,j=0;for(i=0;i<nsize;i+)if (pi!=0) ttj+=pi;for(i=0;i<10;i+) pi=tti; int main()int st10=12,0,0,54,0,0,0,23,24,68,i;myfunc(st,10);for(i=0;i<10;i+)printf("%dn",sti);return 0;9. 從鍵盤輸入 10 個學生的信息(包括姓名,成績) ,存到磁盤文件上。然后再從磁盤文件 上讀取第 2,4,6,8,10 共 5 個學生數據輸入計算機,并在屏幕上顯示出來。#include<stdio.h>
11、;#include<stdlib.h>#define N 10 struct Studentchar name10;int score;studN;void save()FILE *fp;int i;if(fp=fopen("d:file4.dat","w")=NULL) printf("cannot open filen");return;/*fp=fopen("d:file4.dat","w");*/for(i=0;i<N;i+)if(fwrite(&studi,s
12、izeof(struct Student),1,fp)!=1) printf("file write errorn");/ fwrite(&studi,sizeof(struct Student),1,fp); fclose(fp);void read()FILE *fp=fopen("d:file4.dat","r");for(int i=1;i<N;i+=2)fseek(fp,i*sizeof(struct Student),。);fread(&studi,sizeof(struct Student),1,f
13、p);printf("讀取的數據為:s %dn",,studi.score);fclose(fp);int main()printf("please enter data of student:n");for(int i=0;i<N;i+)/ scanf(" %s,%d",,&studi.score);printf("n 姓名:");scanf(" %s",);printf("n 成績:");scanf
14、("%d",&studi.score); save();read();return 0;10.從鍵盤上讀入5個字符串,對它們按字母大小的降序排序,然后把排好序的字符串送到 磁盤文件中保存,文件把保存到 d盤根目錄下,完成 write函數。#include <stdio.h>#include <stdlib.h>#include <string.h>void write( char (* st )20)int i,j;char t20;FILE *fp1;for (i=0;i<4;i+)|for (j=0;j<5-i-1
15、;j+)if (strcmp( st j, stj+1)<0)strcpy(t, st j);strcpy( st j, st j+1);strcpy( st j+1,t);fp1=fopen( "d:file.txt" , "w");for (i=0;i<5;i+)|fputs( st i,fp1);fputs( "n" ,fp1);fclose(fpl);void output。FILE *fp2;char buf30;if (fp2=fopen( "d:file.txt" , "r&qu
16、ot; )= NULL printf( "can't open filen" );exit(0); |while (fgets(buf,20,fp2) printf( "%s",buf);fclose(fp2);int main()char a520;int i;printf( "Enter three strings:n" );for (i=0;i<5;i+) gets(ai);write(a);output();return 0;11有一個文件,存放了一批學生信息(姓名,學號,成績) ,完成函數ave,求學生的平均
17、成績。#include<stdio.h>#include<stdlib.h>#define N 5 struct Student char name10;long num;int score;void save()FILE *fp;int i;struct Student st;if(fp=fopen("d:file4.txt","w")=NULL)printf("cannot open filen");return;for(i=0;i<N;i+)printf("n姓名:");scan
18、f(" %s",);printf("n學號:");scanf("%ld",&st.num);printf("n成績:");scanf("%d",&st.score);fwrite(&st,sizeof(struct Student),1,fp); fclose(fp);float ave()FILE *fp;int i=0;float sum=0;struct Student st;fp=fopen("d:file4.txt","
19、;r");fread(&st,sizeof(struct Student),1,fp);while (!feof(fp)sum=sum+st.score;i+;fread(&st,sizeof(struct Student),1,fp);fclose(fp);return sum/i;void read()FILE *fp;int i;struct Student st;if (fp=fopen("d:file4.txt","r")=NULL)printf("cannot open filen"); retu
20、rn;for(i=0;i<N;i+)fread(&st,sizeof(struct Student),1,fp);printf(" 讀取的數據為: %s %ld %dn",,st.num,st.score);fclose(fp); int main()printf("please enter data of student:n");save();read();float s;s=ave();printf(" 平均成績為: %.2fn",s);return 0;14. 編寫遞歸函數,在第一行打印輸出 1 個
21、1 ,在第二行輸出 2 個 2, 。 。 。 ,在第 n 行輸出 n 個 n。#include <stdio.h>void print(int n)int i;if (n!=0)print(n-1);for(i=1;i<=n;i+)printf("%d",n);printf("n"); int main()int x;scanf("%d",&x);print(x);return 0;15. 利用遞歸法求一批數據的最大值。#include <stdio.h>int maxint(int a,int
22、n)int max;if (n=1) max=a0;else max=maxint(a+1,n-1);return (a0>max?a0:max);void main()int a=1,2,3,15,5,20,7,8,45,10;printf("%d",maxint(a,10);16. 編寫函數,統計一批成績中各分數段的人數。#include <stdio.h>void myfunc(int p,int nsize,int tt)int i;for(i=0;i<nsize;i+)if (pi>0&&pi<60) tt0+;
23、elseif (pi>=60&&pi<70) tt1+;elseif (pi>=70&&pi<80) tt2+;elseif (pi>=80&&pi<90) tt3+;elseif (pi>=90&&pi<=100) tt4+;int main()intst30=12,65,78,54,65,78,89,23,24,68,77,88,99,100,65,79,60,80,70,77,88,90,95,96,91,85,69,76,7 4,39,i,tt5=0;myfunc(st,30
24、,tt);for(i=0;i<5;i+)printf("%dn",tti);return 0;17. 編寫函數,將字符串中下標為奇數的字符按ASCII 碼升序排列,并將排序后下標為奇數的字符在主函數中輸出。如:原始字符串為baawrskjghzlicda, 調用函數后輸出: aachjlsw 。#include <stdio.h>void fun(char st,char tt)int i,j=0,k;char ch;for(i=0;sti!='0'i+) / 把奇數位置上的所有字符取出來if (i%2!=0) ttj+=sti;ttj=0
25、;/ 升序排列for(i=0;i<j -1;i+)for(k=i+1;k<j;k+)if (tti>ttk) ch=tti;tti=ttk;ttk=ch;int main()char st80,tt80;gets(st);printf("the original data is :n");puts(st);fun(st,tt);printf("the result data is :n");puts(tt);return 0;18. 輸入 4 個整數,找出其中最小的數。用函數的嵌套調用來處理。#include<stdio.h>
26、;int max2(int a,int b)return(a<b?a:b);int max4(int a,int b,int c,int d)return max2(max2(max2(a,b),c),d);int main()int a,b,c,d;scanf("%d%d%d%d",&a,&b,&c,&d);printf("max=%dn",max4(a,b,c,d);return 0;19. 將 s 所指字符串中的所有數字字符移到所有非數字字符之后,并保持數字字符和非數字字符串原有的先后次序。例如: def35a
27、dh3kjsdf7, 執行結果為 defadhkjsdf3537.#include <stdio.h>void fun(char s)int i,j=0,k=0;char t180,t280;for(i=0;si!='0'i+)if (si>='0'&&si<='9')t2j=si;j+; else t1k+=si;t2j=0;t1k=0;for(i=0;i<k;i+) si=t1i;for(i=0;i<j;i+) sk+i=t2i; int main() char s80="def3
28、5adh3kjsdf7"printf("nthe original string is:%sn",s);fun(s);printf("nthe result is :%sn",s);return 0;20. 利用遞歸方法求10個任意整數實數的平均值。如:輸入1 2 3 4 5 6 7 8 9 10時,輸出為5.50。#include <stdio.h>float aver( int n);float a10;void main() int i;for (i=0;i<10;i+)scanf( "%f" ,&a
29、mp;ai);printf( "%.2fn" ,aver(10);float aver( int n) float sum; | if (n=1)sum=a0;else sum=(aver( n-1)*( n-1)+a n-1)/ n; return sum;21. 編寫函數:m個人的成績放在score數組中,編寫函數 fun ,將低于平均分的人數作為函數值返回,將低于平均分的分數放在below所指數組中如score 中的成績為:10,20,30,40,50,60,70,80,90 時,函數返回的人數應是4, below中的數據應為10、20、30、40。*/#includ
30、e <stdio.h>#include <string.h>int fun(int score口,int m,int below) int i,j=0;float aver,sum=0;for(i=0;i<m;i+)sum=sum+scorei;aver=sum/m;for(i=0;i<m;i+)if (aver>scorei)belowj+=scorei;return j;void main()int i,n,below9;int score9=10,20,30,40,50,60,70,80,90;n=fun(score,9,below);print
31、f("nbelow the average score are:");for(i=0;i<n;i+)printf("%d ",belowi);printf("n");22. 編寫函數:移動字符串中的內容,移動規則:把1 到第 m 個字符,平移到字符串的最后,把第 m+1 到最后的字符移到字符串的前部。如輸入字符串為: zhoubiaozhun , m 輸入值為4 ,則輸出為biaozhunzhou 。#include <stdio.h>#include <string.h>#define N 80void
32、 fun1(char *w)int i;char t;t=w0;for(i=0;i<(int)strlen(w)-1;i+)wi=wi+1;wstrlen(w)-1=t;void fun(char *w,int m)int i;for(i=1;i<=m;i+)fun1(w);void main()char aN;int m;gets(a);printf("the original string:n");puts(a);printf("nnenter m:");scanf("%d",&m);fun(a,m);prin
33、tf("n the string after moving:n");puts(a); printf("n");24 . 24.編寫函數:將輸入的任意三個字符串合并,按順序合并為一個新的字符串。如:輸入zhou, biao, zhun三個字符串后,合并后為:zhoubiaozhun#include <stdio.h>#include <string.h>#define M 3#define N 20void fun( char a M N, char * b)int i;*b=0; |for (i=0;i< Mi+) strc
34、at( b, ai);void main()char w M N,a100;int i;for (i=0;i<3;i+)printf( "n 輸入 %d's 字符串:",i+1); gets(wi);printf( "the string:n" );for (i=0;i< Mi+) puts(wi);printf( "n");fun(w,a);printf("合并后的字符串為:n");printf( "%s",a);printf( "n");25 .編寫一
35、個函數,將一個字符串中的非原音字母賦值到另一個字符串中,并在main函數中調用此函數,輸入數據和最后輸出都在主函數中實現。#include <stdio.h>void fun( char a, char b口)|int i,j;for (i=0,j=0; ai!= '0' ;i+) if(!( ai= 'a' | ai= 'A | ai= 'e' | ai= 'E' | ai= 'i' | ai= 'I' | ai= 'o' | ai= O'| ai= &
36、#39;u' | ai= 'U')bj+= ai; int main() char a80,b80=0;gets(a); fun(a,b); puts(b); return 0;26 .編寫函數:刪除一個字符串中的所有空格。#include <stdio.h>#include <string.h>#define MAX 100 void fun(char *str) char *t=str;for(;*t!='0't+) if (*t!='') *(str+)=*t;*str=0;void main() char
37、str81; printf("input a string:"); gets(str);puts(str);fun(str);printf("* str:%sn",str);printf("n");29 . 一個班不超過40個人,人員信息有成績和學號組成,班級人數從鍵盤輸入,完成函數,實現求出班級中最高分和學號,將學生信息按照成績從高到低輸出。#include <stdio.h>#define ARR_SIZE40 struct studentint st; long num;int findmax( struct stu
38、dent score , int n, long * pmaxnumiint i,maxscore,k; maxscore=score 0.st;1 for (i=1;i< n;i+) if (maxscore< score i.st) maxscore= score i.st;k=i; *pmaxnumscore k.num; return maxscore; void sortscore( struct student * score , int n) int i,j; struct student tempi;1 for (i=0;i< n-1;i+) for (j=i
39、+1;j< n;j+)if ( score i.st< score j.st) temp1=score i; score i= score j; score j=temp1; int main() long maxnum; struct student score ARR_SIZE int maxscore,n,i; printf( "Please enter total number:" ); scanf( "%d", &n);/*從鍵盤輸入學生人數n*/printf( "Please enter the number a
40、nd score:n" ); for (i=0; i<n; i+)scanf( "%ld%d", &scorei.num,&scorei.st); maxscore = findmax(score,n, &maxnum); /* 計算最高分及學生學號 */ printf( "maxscore = %d, maxnum = %ldn" , maxscore, maxnum); sortscore(score,n);printf( "The sort after data is :n"); |for
41、 (i=0;i<n;i+) printf( "%ld,%dn" ,scorei.num,scorei.st); return 0;30 .完成sort函數,實現:按照成績從高到低的順序輸出各學生的信息。#include <stdio.h>#define N 5 struct student int num; char name20;float score;;void sort( struct student stu 口)int i,j;struct student temp;for (i=0;i< N-1;i+)for (j=i+1;j<N;j
42、+)if (stu i.score> stu j.score) temp= stu i;stu i= stu j; stu j=temp;int main() struct student stu N;int i;printf("請輸入所有學生的信息:學號、姓名、成績:n");for (i=0;i< N;i+) scanf( "%d%s%f"&stui.num,,&stui.score);printf( "The order is :n");|sort(stu);for (i=0;i<
43、; N;i+)printf( "%6d %8s %6.2fn" ,stui.num,,stui.score); return 0;32.學生記錄由學號和成績組成,N名學生的數據已經在主函數中放入結構體數組,編寫函數,把低于平均分的學生數據放在b所指的數組中,低于平均分的學生人數通過形參n返回,平均分通過函數值返回。#include <stdio.h>#define N 8 |typedef struct char num10;double s;STRECdouble fun( STREC* a, STREC b, int * n)int i,j
44、=0;double sum=0,ave;for (i=0;i< N;i+) sum=sum+i.s;ave=sum/Nfor (i=0;i< N;i+) if ( ai.s<ave) bj+= ai;*n=j;return ave;void main()STRECs N= "gao05” ,85, "gao03” ,76, "gao02” ,69, "gao04” ,85, "gao01” ,91, "gao07” ,72, "g ao08”,64, "gao06" ,87;STRE(h
45、 N,t;int i,j,n;double ave;ave=fun(s,h,&n);printf( "the %d student data which is lower than %7.3f:n",n,ave);for (i=0;i<n;i+)printf( "%s %4.1fn" ,hi.num,hi.s); printf( "n");33 .將字符串中下標位置為奇數的字符按照ascII從小到大排序輸出。#include <stdio.h>void fun( char s口,char p口)|int i,
46、j,n,t;n=0;for (i=0; si!= '0' ;i+) n+;for (i=1;i<n-2;i=i+2)|for (j=i+2;j<n;j=j+2)|if (si> sj) t= si; si= sj; sj=t;for (i=1,j=0;i<n;i=i+2,j+)pj= si; |pj= '0 ;int main()char s80= "baawrskjghzlicda" ,p80;printf( "nthe origianl string is:%sn",s);fun(s,p);printf
47、( "nthe result is :%sn",p);return 0;34 .有4個學生,每個學生有5門課程的成績,輸入任意學號,輸出該學生的全部成績(完成fun函數)。#include <stdio.h> int int i,j=0;for (i=2;i< x;i+)if (x%i=0&&i%2!=0) ppj+=i; n=j;while ( an>= 'a' &&an<= 'z' )|( an>= 'A' &&an<= 'Z') j+;n+;/j表示新單詞長度,n表示新單詞結束后下一個位置if (max>j) max=j; k=i; i=n;if ( ai= '0' ) break;/max表示當前最短的單詞長度,k表示當前最短的單詞的起始位置 /將最短的單詞輸出for (t=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 焊接工藝參數優化考核試卷
- 緊固件螺紋設計深入考核試卷
- 管道工程綠色施工技術創新實踐與發展動態考核試卷
- 滾動軸承在海洋工程中的應用考核試卷
- 紙機設備的狀態監測與預測維護考核試卷
- 描寫月亮的初三語文作文
- 開心為題初二語文作文
- 空調系統的故障樹分析考核試卷
- 焙烤食品制造食品安全風險識別與控制考核試卷
- 批發業品牌故事與內容營銷考核試卷
- 建筑施工升降機安裝使用拆卸安全技術規程
- 資產評估常用數據與參數手冊
- 2023年某路橋工程有限公司生產安全事故綜合應急預案
- 靜壓樁機安裝拆卸方案
- 電腦故障維修
- 2023山東春季高考數學真題(含答案)
- 2022年初中歷史課程標準電子版
- 平面四桿機構的急回特性
- 考研經驗分享課件
- iFix培訓手冊的資料
- 夜空中最亮的星二部合唱簡譜
評論
0/150
提交評論