c語言編程題答案_第1頁
c語言編程題答案_第2頁
c語言編程題答案_第3頁
c語言編程題答案_第4頁
c語言編程題答案_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、六、編程題參考答案1編程,統(tǒng)計在所輸入的50個實數(shù)中有多少個正數(shù)、多少個負數(shù)、多少個零。 #include "stdio.h" #define N 50 void main() float x; unsigned int s1,s2,s3,i; s1=s2=s3=0; for(i=1;i<=N;i+) scanf("%f",&x); if(x<0) s1+; else if(x=0) s2+; else s3+; printf("負數(shù)%u個,零%u個,正數(shù)%u個n",s1,s2,s3);  2. 編程,計

2、算并輸出方程 X2+Y2=1989 的所有整數(shù)解。 #include "stdio.h" void main() int x,y; for(x=-45;x<=45;x+) y=-45; while(y<=45) if(x*x+y*y=1989) printf("%d*%d+%d*%d=%dn",x,x,y,y,1989); y+;  3編程,輸入一個10進制正整數(shù),然后輸出它所對應(yīng)的八進制、十六進制數(shù)。 #include "stdio.h" void main() unsigned int x; printf(&

3、quot;請輸入一個十進制正整數(shù):"); scanf("%u",&x); printf("%d=八進制數(shù) %o=十六進制數(shù)%xn",x,x,x);  4編程,找出1000以的所有完數(shù),并輸出其因子。 #include "stdio.h" void main() int i,j,s=1; for(i=1;i<=1000;i+,s=1) for(j=2;j<=i/2;j+) if(i%j=0) s+=j; / 求 i的因子和 if(s=i) printf("%d=1",i); /

4、 如果i 是完數(shù)則輸出其各因子 for(j=2;j<=i/2;j+) if(i%j=0) printf("+%d",j); printf("n");  5. 輸入一個正整數(shù),輸出它的所有質(zhì)數(shù)因子。 #include "stdio.h" void main() int m,i=2; printf("請輸入一個整數(shù):"); scanf("%d",&m); while(m!=1) if(m%i=0) printf("%d ",i); m/=i; else i

5、+; printf("n");  6. 輸入20個整數(shù),輸出其中能被數(shù)組中其它元素整除的那些數(shù)組元素。 #include "stdio.h" #define N 20 void main() int aN,i,j; for(i=0;i<N;i+) scanf("%d",&ai); for(i=0;i<N;i+) for(j=0;j<N;j+) if(ai%aj=0&&i!=j) printf("%dn",ai); break;  7. 輸入兩個數(shù)組(數(shù)組

6、元素個數(shù)自定),輸出在兩個數(shù)組中都出現(xiàn)的元素。 #include "stdio.h" #define NA 6 #define NB 8 void main() float aNA,bNB; int i,j; for(i=0;i<NA;i+) scanf("%f",&ai); for(i=0;i<NB;i+) scanf("%f",&bi); for(i=0;i<NA;i+) for(j=0;j<NB;j+) if(ai=bj) printf("%fn",ai); break

7、;  8. 輸入兩個數(shù)組(數(shù)組元素個數(shù)自定),輸出在兩個數(shù)組中都不出現(xiàn)的元素。 #include "stdio.h" #define NA 6 #define NB 8 void main() float aNA,bNB; int i,j; for(i=0;i<NA;i+)scanf("%f",&ai); for(i=0;i<NB;i+)scanf("%f",&bi); for(i=0;i<NA;i+) for(j=0;j<NB;j+) if(ai=bj) break; if(j=NB

8、) printf("%f ",ai); printf("n"); for(i=0;i<NB;i+) for(j=0;j<NA;j+) if(bi=aj) break; if(j=NA) printf("%f ",bi); printf("n");  9編程,將字符數(shù)組S2中的全部字符拷貝到字符數(shù)組S1中。 #include "stdio.h" void main() char s120,s2="Good morning!" int i=0; while(

9、s1i+=s2i)!='0'); printf("%sn",s1);  10給定年份year,判別該年份是否閏年(定義一個宏以判別該年份是否閏年)。 #include <stdio.h> #define f(year) year%4=0&&year%100!=0|year%400=0 void main() int y; printf("請輸入年份:"); scanf("%d",&y); if(f(y) printf("%d 年為閏年n",y); els

10、e printf("%d 年不是閏年n",y);  11輸入一行小寫字母后,或輸出原文,或?qū)⒆帜缸兂善湎乱蛔帜福╝變成b、b變成c、x變成y、y變成z、z變成a)輸出,用條件編譯方法實現(xiàn)以上選擇。 #include <stdio.h> #define MAX 80 #define SWITCH 1 void main() char strMAX; int i=0; printf("請輸入文本行:n"); scanf("%s",str); #if(SWITCH) while(stri!='0') i

11、f(stri>='a'&&stri<='z') if(stri='z')stri='a' else stri+; i+; #endif printf("%sn",str);  12. 編寫函數(shù),處理n行n列維數(shù)組:將每一行的元素同除以該行上絕對值最大的元素。 #include "stdio.h" #include "math.h" void div(float* a,int n) int i,j; float x; for(i=0;i

12、<n;i+) x=*(*(a+i); for(j=1;j<n;j+) if(fabs(*(*(a+i)+j)>fabs(x) x=*(*(a+i)+j); for(j=0;j<n;j+) *(*(a+i)+j)/=x; return; void main() / 函數(shù)引用示例 float b33=1,2,3,4,5,6,7,8,9; int i,j; float* c3; for(i=0;i<3;i+) ci=bi; div(c,3); for(i=0;i<3;i+) for(j=0;j<3;j+) printf("%f ",bij

13、); printf("n");  13. 編寫函數(shù),求任意階多項式 a0+a1X+a2X2+.+anXn 的值并返回多項式的值。 #include "stdio.h" float f1(float* a,float x,int n) int i; float t=1,y=0; for(i=0;i<n;i+) y+=*(a+i)*t; t*=x; return y; void main() / 函數(shù)引用示例 float b4=1,2,3,4; printf("%fn",f1(b,2,4);  14. 設(shè)計一個函

14、數(shù),使給出一個數(shù)的原碼,能得到該數(shù)的補碼。 #include <stdio.h> / 假定sizeof(int)為2; unsigned int getbit(unsigned int value) /第1位為0表示數(shù)的原碼, if(value>>15) return (value0x7fff)+1; /其補碼即其原碼;若value else return value; /右移15位后為1,表示value是負數(shù)的原碼,負數(shù) /的補碼為原碼按位取反(第1位不變)后加1。 void main() unsigned int y=0x800c,k; k=getbit(y); p

15、rintf("%xn",k);  15. 編寫函數(shù),求m行、n列的二維數(shù)組全體元素中負數(shù)的個數(shù)。 #include <stdio.h> int sum(float *a,int m,int n) int i,j; int y=0; for(i=0;i<m;i+) for(j=0;j<n;j+) if(*(*(a+i)+j)<0) y+; return y; void main() / 函數(shù)引用示例 float b23=-1,2,-3,4,-5,-6; int i; float* c2; for(i=0;i<2;i+) ci=bi

16、; printf("%dn",sum(c,2,3); 16. 編寫函數(shù),返回在一個整數(shù)組中出現(xiàn)次數(shù)最多的數(shù)與其出現(xiàn)次數(shù)。 #include <stdio.h> void fun(float *a,int n,int *k,float *x) int i,j,y; *k=0; for(i=0;i<n;i+) y=0; for(j=0;j<n;j+) if(*(a+i)=*(a+j) y+; if(y>*k) *k=y; *x=*(a+i); return; void main() / 函數(shù)引用示例 float c10=0,4,2,4,3,2,4,

17、-3,1.5,7.6,t; int m; fun(c,10,&m,&t); / 若說明float *t; int *m; printf("元素%f出現(xiàn)次數(shù)為%dn",t,m); / 引用為 fun(c,10,m,t) 將 / 產(chǎn)生懸掛指針的錯誤,即t、m不只指向確定的存儲單元。 17編一個程序,打入月份號,輸出該月的英文月名,要求用指針數(shù)組處理。 #include <stdio.h> void main() char *month_name12="January","February","

18、;March","April", "May", "June","July","August","September","October", "Novenber","December" int n; printf("請輸入月份號:"); scanf("%d",&n); if(n<1|n>12) printf("月份號輸入錯誤!n"

19、); else printf("%d月的英文表示是%sn",n,month_namen-1);  18編寫遞歸函數(shù),將輸入的以“?”結(jié)束的字符串按與輸入相反的順序輸出。 #include <stdio.h> void pline() char ch; if(ch=getchar()!='?') pline(); putchar(ch); return; void main() / 函數(shù)引用示例 pline(); printf("n");  19. 編寫函數(shù),在n個元素的一維數(shù)組中,統(tǒng)計比相鄰元素大的數(shù)組元素

20、個數(shù)并將統(tǒng)計數(shù)返回(不考慮a0和an-1),要求以指針變量而不是數(shù)組名作參數(shù)。 #include <stdio.h> int num(float *x,int n) int i,k=0; for(i=1;i<n-1;i+) if(*(x+i)>*(x+i-1)&&*(x+i)>*(x+i+1) k+; return k; void main() / 函數(shù)引用示例 float a10=1,3,4,2,6,7,12,5,9,8; printf("%dn",num(a,10);  20. 編寫函數(shù),在n個元素的一維數(shù)組中,找

21、出最大值、最小值并傳送到調(diào)用函數(shù)。 #include <stdio.h> void num(float *b,int n,float *max,float *min) *max=*b; *min=*b; for(int i=1;i<n;i+) if(*(b+i)>*max) *max=*(b+i); if(*(b+i)<*min) *min=*(b+i); return; void main() / 函數(shù)引用示例 float a10=1,3,4,2,6,7,12,5,9,8,x,y; num(a,10,&x,&y); printf("最大

22、值為%f,最小值為%f。n",x,y); 21. 編寫一個函數(shù),統(tǒng)計m行n列二維數(shù)組中有多少個正數(shù)、多少個負數(shù),多少個零,并返回統(tǒng)計結(jié)果。 #include <stdio.h> void sub(float* a,int m,int n,int *fs,int *lin,int *zs) int i,j; *fs=*lin=*zs=0; for(i=0;i<m;i+) for(j=0;j<n;j+) if(*(*(a+i)+j)<0) (*fs)+; else if(*(*(a+i)+j)=0) (*lin)+; else (*zs)+; return;

23、 void main() / 函數(shù)引用示例 float b53=-1,5,2,3,0,-2,0,-3,5, 4,7,-8,3,4,5,*c5; int i,k1,k2,k3; for(i=0;i<5;i+) ci=bi; sub(c,5,3,&k1,&k2,&k3); printf("負數(shù)%d個,零%d個,正數(shù)%d個。n",k1,k2,k3);  22. 編寫函數(shù),在給定的一行以'.'結(jié)束的字符中,找出最長的單詞并輸出。 #include <stdio.h> void find(char *str) cha

24、r *p1,*p2,*p3; int k1=0,k2=0; / k1為最長串的長度,初值為0。 p1=p2=p3=str; / p3指向最長串首字符,p1指向當前處理串首字符, while(*p2!='.') / p2為移動指針,*p2為空格表示查找到單詞尾部。 if(*p2!=' ') k2+; p2+; else if(k2>k1) p3=p1; p1=+p2; k1=k2; k2=0; else k2=0; p1=+p2; for(k2=0;k2<=k1;k2+) printf("%c",*(p3+k2); printf(&

25、quot;n"); return; void main() / 函數(shù)引用示例 char a40; int i=0; while(ai+=getchar()!='.'); find(a);  23. 編寫函數(shù)print,打印一個學(xué)生的成績數(shù)組,該數(shù)組中有若干個學(xué)生的數(shù)據(jù)記錄,每個記錄包括num,name,score3。 #include <stdio.h> struct student char num7,name9;int score3; ; / 尾部分號不得遺漏 void print(struct student* s,int n) int i

26、; / 運算符'*'、'&'的優(yōu)先級均低于運算符'.' for(i=0;i<n;i+) printf("%s %s %4d%4d%4dn",(*(s+i).num,(*(s+i).name, (*(s+i).score0,(*(s+i).score1,(*(s+i).score2); return; void main() struct student t4; int i; for(i=0;i<4;i+) scanf("%s%s%d%d%d",&ti.num,&ti.na

27、me,&ti.score0, &ti.score1,&ti.score2); print(t,4); 24. 把文本文件d1.dat復(fù)制到文本文件d2.dat中,要求僅復(fù)制d1.dat中的英文字符。 #include <stdio.h> void main() FILE *fpd1,*fpd2; char ch; fpd1=fopen("d1.dat","r"); fpd2=fopen("d2.dat","w"); while(fscanf(fpd1,"%c"

28、,&ch)!=EOF) if(ch>='A'&&ch<='Z'|ch>='a'&&ch<='z') fprintf(fpd2,"%c",ch); fclose(fpd1); fclose(fpd2);  25. 編程,把文本文件d1.dat復(fù)制到d2.dat(其中空格字符不復(fù)制)。 #include <stdio.h> void main() FILE *fpd1,*fpd2; char ch; fpd1=fopen(&quo

29、t;d1.dat","r"); fpd2=fopen("d2.dat","w"); while(fscanf(fpd1,"%c",&ch)!=EOF) if(ch!=' ') fprintf(fpd2,"%c",ch); fclose(fpd1); fclose(fpd2);  26. 編程,把文本文件d1.dat復(fù)制到d2.dat(其寫英文字母要轉(zhuǎn)換為小寫字母)。 #include <stdio.h> void main() FILE *

30、fpd1,*fpd2; char ch; fpd1=fopen("d1.dat","r"); fpd2=fopen("d2.dat","w"); while(fscanf(fpd1,"%c",&ch)!=EOF) if(ch>='A'&&ch<='Z') ch=ch+32; fprintf(fpd2,"%c",ch); fclose(fpd1); fclose(fpd2);  27. 把文本文件d1

31、.dat復(fù)制到文本文件d2.dat中,要求僅復(fù)制d1.dat中除英文字符和數(shù)字以外的其它容。 #include <stdio.h> void main() FILE *fpd1,*fpd2; char ch; fpd1=fopen("d1.dat","r"); fpd2=fopen("d2.dat","w"); while(fscanf(fpd1,"%c",&ch)!=EOF) if(!(ch>='A'&&ch<='Z

32、9;|ch>='a'&&ch<='z'|ch>='0'&&ch<='9') fprintf(fpd2,"%c",ch); fclose(fpd1); fclose(fpd2);  28. 求出1至100之間的素數(shù)(只能被1和自身整除的數(shù))并順序?qū)懭胛募u.dat。 #include <stdio.h> #include <math.h> void main() FILE *fp; int i,j,k=2; fp=fope

33、n("su.dat","w"); fprintf(fp,"%4d%4d",2,3); for(i=5;i<100;i=i+2) for(j=3;j<=sqrt(i);j=j+2) if(i%j=0) break; if(j>sqrt(i) fprintf(fp,"%4d",i); k+; if(k%10=0) fprintf(fp,"n"); fclose(fp);  29磁盤文件a1和a2,各自存放一個已按字母順序排好的字符串,編程合并二個文件到a3文件中,合并后仍

34、保持字母順序。 #include <stdio.h> #include <math.h> void main() FILE *fp1,*fp2,*fp3; int i,j,k; char c1,c2; fp1=fopen("a1","r"); fp2=fopen("a2","r"); / 首先從文件a1、a2中各讀入一個字符分別送入變量c1、c2,下面將作 / 循環(huán)比較,直到讀到文件尾標志為止。 fp3=fopen("a3","w"); c1=fget

35、c(fp1); c2=fgetc(fp2); do if(c1<c2) fputc(c1,fp3);c1=fgetc(fp1); else fputc(c2,fp3); c2=fgetc(fp2); while(!feof(fp1)&&!feof(fp2); / 若a1先讀到文件尾,則將c2寫入a3,再將a2中其它字符讀入后寫入a3;. if(feof(fp1) do fputc(c2,fp3); c2=fgetc(fp2); while(!feof(fp2) ; else do fputc(c1,fp3); c1=fgetc(fp1); while(!feof(fp1)

36、 ; fclose(fp1); fclose(fp2); fclose(fp3);  30順序文件C.DAT每個記錄包含學(xué)號(8位字符)和成績(三位整數(shù))兩個數(shù)據(jù)項。從文件讀入學(xué)生成績,將大于或等于60分的學(xué)生成績再形成一個新的文件SCORE60.DAT保存在A盤上,并顯示出學(xué)生總?cè)藬?shù)、平均成績和與格人數(shù)。 #include <stdio.h> #include <math.h> void main() FILE *fp1,*fp2; char s9; int x,zrs=0,pjcj=0,jgrs=0; fp1=fopen("c.dat"

37、,"r"); fp2=fopen("a:score60.dat","w"); fscanf(fp1,"%s%d",s,&x); do zrs+; pjcj+=x; if(x>=60) jgrs+; fprintf(fp2,"%s %dn",s,x); fscanf(fp1,"%s%d",s,&x); while(!feof(fp1); printf("總?cè)藬?shù):%d 平均成績:%d 與格人數(shù):%dn",zrs,pjcj/zrs,jgrs

38、); fclose(fp1); fclose(fp2);31程序清單:typedef int datatype;typedef struct nodedatatype data;struct node *next;linklist;INVERT(linklist *head)linklisk *p,*q; p=head->next; if(p!=NULL) head->next=NULL; doq=p->next; p->next=head->next; head->next=p; p=q;while(p!=NULL);32程序清單:PURGE(linkli

39、st *head)linklist *p,*q; q=head->next; if(q=NULL)return;p=q->next;while(p!=NULL)if(p->data=q->data)q=p->next; free(p);p=q->next;elseq=p;p=p->next;33、程序清單:#include <stdio.h>main()static char x=”computer”; char *p; for(p=x;p<x+7;p+=2)putchar(*p);printf(“n”);34、#include &l

40、t;stdio.h>#include <string.h>main()int m;char str80,str280;printf(“input a string:n”);gets(str2);printf(“intput m:n);scanf(“%d”,&m);if(strlen(str2)<m) printf(“err input!n”);elsecopystr(str1,str2,m);printf(“rsult is :%sn”,str1);copystr(char *p1,char *p2,int m)int n=0;while(n<m-1)p2

41、+; n+;while(*p2!=0)*p1=*p2;p1+=; p2+;*p1=0;35、程序清單:float search(float (pointer)4,int n)float *pt;pt=*(pointer+n);return(pt);36、Main()int score4=60,76,80,90,45,86,57,90,58,95,80,71,78,50,60,85; int (*p)4,j,k,flag;p=score;for(j=0,j<4;j+) if(*(*(p+j)+k)<60)flag=1; if(flag=1) printf(“NO.%dis fail,

42、svoreare:n”,j);for(k=0,;k<4;k+) printf(“%5d”, *(*(p+j)+k); printf(“n”);37、程序清單:main()int b16,x,k,r,I;printf(“enter a integer :n”):scanf(“%d”,&x);printf(%6ds binary number is:n”,x);k=-1;dor=x%2;k+;*(b+k;x/=2;while(x!=0for(I=k;I>=0;I-)printf(“%d”,*(b+i)printf(“n”);、float p(int n,int x)flaot

43、t,t1,t2;if(n=0)return(1);else if(n=1) return(x);elset1=(2*n-1)*x*(p(n-1),x); t2=(n-1)*p(n-2),x);t=(t1-t2)/n);return(t);39、main()int a55,I,j,k=0,m,n;m=n/2+1;for(I=0,I<m;I+) for(j=I;j<n-I;j+) k+;aIj=k; for(j=I+1;j,n-I;j+) k+;an-j-1=k; for(j=n-I-2;j>=I;j-) k+;an-I-1j=k; for(j=n-2-I;j>=I+1;j

44、-)k+;aIj;for(I=0;I<n;I+) for(j=0;j<n;j+)printf(“%5d”,aIj);printf(“n”);40、#include <stdio.h>main()int m16,n,I,t,count=0;long a,k;printf(“result is:n”);for(n=10;n<200;n+)k=0;t=1;a=n*n;for(I=1;a!=0;I+)mI=a%10;a/=10;for(;I>1;I-)k+=mI-1*t;t=t*10;if(k=n*n)printf(“%2d:%10d%10dn”,+count,n,

45、N*n);41、void convert(char *a,int n)int I;if(I=n/10)!=0) convert(a+1,i);*a=n%10+0;42、#include <stdio.h> main()FILE*fp;char str100,fikename10;int I=0;if(fp=fopen(“upper.txt”,”w”)=NULL)printf(“can not open filen”);exit(0);printf(“enter a string:n”);gets(str);while(strI!=!) if(strI>=a&&

46、strI<=z) strI=strI-32;fputc(strI,fp);I+; fclose(fp);43、#include “stdio.h” FILE *fp; main()int p=0,n=0,z=0,temp; fp=fopen(“number.dat”,”r”); if(fp=NULL) printf(“file not foundn”); elsewhile(!feof(fp) fscanf(fp,”%d”,&temp); if(temp>0) p+; else if(temp<0) n+;else z+;fclose(fp);printf(“posi

47、ve:%3d,negtive:%3d,zero:%3dn:,p,n,z);44、main() unsigned rightrot(unsigned a,int n) unsigned int m,b;int n;printf(“enter mand n:”);scanf(%x,%d”,&m,&n);printf(“m=%x,n=%dn”,m,n);b=rightrot(m,n);printf(“b=%xn”,b);unsigned rightrot(unsigned a,int n)int rb;while(nà0)rb=(a&1)<<(16-1)

48、;a=a>>1;a=a|rb;return a;45、解:PX(X,N)=X-X2+X3-X4+(-1)N-1XN =X*(1- X-X2+X3-X4+(-1)N-1XN-1=X*(1-PX(X,N-1)程序清單:double px(double x,int n)if(n=1) return x;else return(x*(1-px(x,n-1);46、程序清單:double opwer1(double x,int n)if(n=0) return 1;else return(x*power1(x,n-1);47、Printfn(int n)if(n=0&&n&l

49、t;=9) printf(“%d”,n);else printf(“%d”,x%10); printn(x/10); 48、程序清單:t(int n)int m; printf(“%d”,x%10); m=x/10;if(m>0) r(m);49、程序清單:int ack(int m,int n)if(m=0) return (n+1);else if(n=0)return(ack(m-1,1);else return(ack(m-1,ack(m,n-1);50、Void intobin(int x)if(x/2>0) intobin(x/2); printf(“%d”,x%2);

50、51、Void intobin(int x)if(x/>0) intobin(x/); printf(“%d”,x%);52、Void intobin(int x) if(x/16>0) intobin(x/16); printf(“%c”,(x%16>=9)?x%16+55:x%16+48);53、Main()int x; printf(“enter a number:n”); scanf(“%d”,&x); if(x!=0)if(x>0) x=x%2; if(x) printf(“this number is a plus odd numbern”); else printf(“this number is a plus even numbern”); else x=x%2; if(x) printf(“this number is a plus odd numbern”); else printf(“this

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論