C語言上機(jī)試題精選完整版_第1頁
C語言上機(jī)試題精選完整版_第2頁
C語言上機(jī)試題精選完整版_第3頁
C語言上機(jī)試題精選完整版_第4頁
C語言上機(jī)試題精選完整版_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、【程序1】題目:有1、2、3、4個(gè)數(shù)字,能組成多少個(gè)互不相同且無重復(fù)數(shù)字的三位數(shù)?都是多少?1.程序分析:可填在百位、十位、個(gè)位的數(shù)字都是1、2、3、4。組成所有的排列后再去掉不滿足條件的排列。 2.程序源代碼:#include <stdio.h>main()int i,j,k;printf("n");for(i=1;i<5;i+) for(j=1;j<5;j+) for(k=1;k<5;k+) if(i!=k)&&(i!=j)&&(j!=k)printf("%d%d%dn",i,j

2、,k);【程序3】題目:一個(gè)整數(shù),它加上100后是一個(gè)完全平方數(shù),再加上168又是一個(gè)完全平方數(shù),請問該數(shù)是多少?1.程序分析:在10萬以內(nèi)判斷,先將該數(shù)加上100后再開方,再將該數(shù)加上268后再開方,如果開方后的結(jié)果滿足如下條件,即是結(jié)果。請看具體分析:2.程序源代碼:#include <stdio.h>#include <math.h>main()long int i,x,y;for(i=1;i<10000;i+)x=long(sqrt(i+100);y=long(sqrt(i+268);if(x*x=i+100)&&(y*y=i+268)pr

3、intf("n%ldn",i);【程序5】題目:輸入三個(gè)整數(shù)x,y,z,請把這三個(gè)數(shù)由小到大輸出。1.程序分析:我們想辦法把最小的數(shù)放到x上,先將x與y進(jìn)行比較,如果x>y則將x與y的值進(jìn)行交換,然后再用x與z進(jìn)行比較,如果x>z則將x與z的值進(jìn)行交換,這樣能使x最小。2.程序源代碼:#include <stdio.h>main()int x,y,z,t;scanf("%d%d%d",&x,&y,&z);if(x>y)t=x;x=y;y=t;if(x>z)t=z;x=z;x=t;if(y>

4、z)t=z;y=z;z=t;printf("small to big :%d %d %dn",x,y,z);【程序6】題目:用*號輸出字母C的圖案。1.程序分析:可先用'*'號在紙上寫出字母C,再分行輸出。2.程序源代碼:#include <stdio.h>main()printf("Hello C-world!n");printf(" *n");printf("*n");printf("*n");printf(" *n");【程序8】題目:輸出9

5、*9口訣。1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。2.程序源代碼:#include <stdio.h>main()int i,j,result;for(i=1;i<10;i+)for(j=1;j<10;j+)result=i*j;printf("%d*%d=%-3d",i,j,result);printf("n");【程序12】題目:判斷101-200之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)。1.程序分析:判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)),如果能被整除,則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù)。 

6、2.程序源代碼:#include <stdio.h>#include <math.h>main()int m,i,k,h=0,leap=1; printf("n");for(m=101;m<200;m+)k=sqrt(m+1);for(i=2;i<k;i+)if(m%i=0)leap=0;break;if(leap)printf("%-4d",m);h+;if(h%10=0)printf("n");leap=1;printf("nThe total is %dn",h);【程序1

7、3】題目:打印出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個(gè)“水仙花數(shù)”,因?yàn)?53=1的三次方5的三次方3的三次方。1.程序分析:利用for循環(huán)控制100-999個(gè)數(shù),每個(gè)數(shù)分解出個(gè)位,十位,百位。2.程序源代碼:#include <stdio.h>main()int i,j,k,n;printf("Water flower number is:");for(n=100;n<1000;n+)i=n/100;j=n%100/10;k=n%10;if(i*100+j*10+k=i*i*i*i+j*j*j

8、+k*k*k)printf("%-5d",n);printf("n");【程序14】題目:將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5。程序分析:對n進(jìn)行分解質(zhì)因數(shù),應(yīng)先找到一個(gè)最小的質(zhì)數(shù)k,然后按下述步驟完成: (1)如果這個(gè)質(zhì)數(shù)恰等于n,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束,打印出即可。(2)如果n<>k,但n能被k整除,則應(yīng)打印出k的值,并用n除以k的商,作為新的正整數(shù)你n,重復(fù)執(zhí)行第一步。(3)如果n不能被k整除,則用k+1作為k的值,重復(fù)執(zhí)行第一步。2.程序源代碼:#include <stdio.h&

9、gt;main()int n,i;printf("Please input a number:n");scanf("%d",&n);printf("%d=",n);for(i=2;i<=n;i+)while(n!=i)if(n%i=0)printf("%d*",i);n=n/i;elsebreak;printf("%dn",n);【程序16】題目:輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。1.程序分析:利用輾除法。2.程序源代碼(原理不清楚 只知道確實(shí)是可行的 背出來得了)

10、#include <stdio.h>main()int a,b,num1,num2,temp;printf("Please input two numbers:n");scanf("%d%d",&num1,&num2); if(num1<num2)temp=num1;num1=num2;num2=temp;a=num1;b=num2;while(b!=0)temp=a%b;a=b;b=temp;printf("最大公約數(shù)為:%dn",a);printf("最小公倍數(shù)為:%dn",n

11、um1*num2/a);【程序17】題目:輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)。1.程序分析:利用while語句,條件為輸入的字符不為'n'.2.程序源代碼:#include <stdio.h>main()char c;int letters=0,space=0,digit=0,others=0;printf("Please input some charactersn");while(c=getchar()!='n')if(c>='a'&&c<='z

12、'|c>='A'&&c<='Z')letters+;else if(c=' ')space+;else if(c>'0'&&c<'9') digit+;else others+;printf("all in all:char=%d space=%d digit=%d others=%dn",letters,space,digit,others);【程序19】題目:一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為“完數(shù)”。例如6=123.

13、編程找出1000以內(nèi)的所有完數(shù)。1. 程序分析:請參照程序<-上頁程序14. 2.程序源代碼:#include <stdio.h>main()int k100;int i,j,n,s,t;for(j=2;j<1000;j+)n=-1;s=j;t=j;for(i=1;i<=j;i+)while(j!=i) if(j%i=0) n+; s=s-i; kn=i; j=j/i;elsebreak;if(s=0)printf("%d=",t);/for(i=0;i<n;i+)/printf("%d",ki);

14、n=-1;"解答你的補(bǔ)充問題:首先你要搞清楚n的作用,它是用標(biāo)記能被j整除的數(shù)組k的下標(biāo),因此每檢驗(yàn)1個(gè)數(shù)字n都要復(fù)原到原來的值-1. 假如放在int i,j,n,s; 這樣的話它在程序中只運(yùn)行一次(由于在for循環(huán)體外面,for循環(huán)體里邊的要運(yùn)行997次,即要檢驗(yàn)1000以內(nèi)數(shù)的數(shù))#include "stdio.h" void main() static int k10;/ (這句是啥意思) 這句話申明k10是1個(gè)靜態(tài)數(shù)組, int i,j,n,s; /(n= -1;為何不能加在這) 由于每回檢驗(yàn)1個(gè)數(shù)字是不是完數(shù)先要把n=-1 for(j=2;j<10

15、00;j+) n=-1; /(為何能加在這) s=j; for(i=1;i<j;i+) if(j%i)=0) n+; s=s-i; kn=i; if(s=0) printf("%d is a wanshu",j); for(i=0;i<n;i+) printf("%d,",ki); printf("%dn",kn); /j=6時(shí),i=1,2,3的時(shí)候能被6除盡,因此s=j=6 要減去1,2,3這樣最后s=0 則輸出他是個(gè)完數(shù) /請用例子說明一下程式的運(yùn)行過程.例如j=6." 【程序24】?題目:有一分?jǐn)?shù)序列:2/

16、1,3/2,5/3,8/5,13/8,21/13.求出這個(gè)數(shù)列的前20項(xiàng)之和。1.程序分析:請抓住分子與分母的變化規(guī)律。?2.程序源代碼:#include <stdio.h>main()int n,number=20;float t,a=2,b=1,s=0;for(n=1;n<=number;n+)s=s+a/b;t=a;a=a+b;b=t;printf("sum is %9.6fn",s);【程序25】 題目:求1+2!+3!+.+20!的和1.程序分析:此程序只是把累加變成了累乘。 2.程序源代碼:#include <stdi

17、o.h>main()float n,s=0,t=1;for(n=1;n<=20;n+)t*=n;s+=t;printf("1!+2!+3!+.+20!=%e",s);【程序26】 題目:利用遞歸方法求5!。1.程序分析:遞歸公式:fn=fn_1*4!2.程序源代碼:#include <stdio.h>int fact(int j)int sum; if(j=0)sum=1; else sum=j*fact(j-1); return sum;main()int i;for(i=0;i<=5;i+)printf("%d!=%dn

18、",i,fact(i);【程序37】題目:對10個(gè)數(shù)進(jìn)行排序1.程序分析:可以利用選擇法,即從后9個(gè)比較過程中,選擇一個(gè)最小的與第一個(gè)元素交換,下次類推,即用第二個(gè)元素與后8個(gè)進(jìn)行比較,并進(jìn)行交換。  2.程序源代碼:#include <stdio.h>#define N 10main()int i,j,min,temp,aN;printf("Please input ten numbers:n");for(i=0;i<N;i+)printf("a%d=",i);scanf("%d",&

19、amp;ai);printf("n");for(i=0;i<N;i+)printf("%5d",ai);printf("n");for(i=0;i<N-1;i+)min=i;for(j=i+1;j<N;j+)if(amin>aj)min=j;temp=ai;ai=amin;amin=temp;printf("After sortedn");for(i=0;i<N;i+)printf("%5d",ai);printf("n");【程序70】題目:寫

20、一個(gè)函數(shù),求一個(gè)字符串的長度,在main函數(shù)中輸入字符串,并輸出其長度。1.程序分析:2.程序源代碼:#include <stdio.h>int length(char p)int n=0;while(*p!='0')n+;p+;return n;main()int len;char str20;printf("Please input a string:n");scanf("%s",str);len=length(str);printf("The string has %d characters.n",l

21、en);【程序82】題目:八進(jìn)制轉(zhuǎn)換為十進(jìn)制#include <stdio.h>main()char a20;char* p;int n=0;p=a;printf("請輸入一個(gè)八進(jìn)制數(shù):"); gets(p);while(*p!='0') n=n*8+*p-'0'p+;printf("十進(jìn)制數(shù)為%dn",n);【程序96】題目:計(jì)算字符串中子串出現(xiàn)的次數(shù)#include <string.h>#include <stdio.h>main()char str120,str220,*p1,*p

22、2;int sum=0;printf("Please input two strings:n");scanf("%s%s",str1,str2);p1=str1;p2=str2;while(*p1!='0')if(*p1=*p2)while(*p1=*p2&&*p2!='0')p1+;p2+;elsep1+;if(*p2='0')sum+;p2=str2;printf("%d",sum);/getch(); 這句代碼不理解是什么意思【程序97】(譚浩強(qiáng)版P337)題目:從

23、鍵盤輸入一些字符,逐個(gè)把它們送到磁盤上去,直到輸入一個(gè)#為止。1.程序分析:2.程序源代碼:#include <stdio.h>#include <stdlib.h>void main()FILE* fp;char ch,10;scanf("%s",);if(fp=fopen(,"w")=NULL)printf("Cannot open the file!");exit(0);ch=getchar();/用于接收scanf操作中最后輸入的回車符ch=getchar();/接收輸入的第一個(gè)字符 while(ch!

24、='#')fputc(ch,fp);putchar(ch);ch=getchar();printf("n");fclose(fp);【程序98】題目:從鍵盤輸入一個(gè)字符串,將小寫字母全部轉(zhuǎn)換成大寫字母,然后輸出到一個(gè)磁盤文件“test”中保存。輸入的字符串以!結(jié)束。 #include <stdio.h>#include <stdlib.h>#include <string.h>main()FILE* fp;char str100,10;int i=0;if(fp=fopen("test","w

25、")=NULL)printf("Cannot open the filen");exit(0);printf("Please input a string:n");gets(str);while(stri!='!')if(stri>='a'&&stri<='z')stri=stri-32;fputc(stri,fp);i+;fclose(fp);fp=fopen("test","r");fgets(str,strlen(str)+

26、1,fp);printf("%sn",str);fclose(fp);【程序99】(有點(diǎn)小問題,出現(xiàn)了一個(gè)燙,說是未賦值)題目:有兩個(gè)磁盤文件A和B,各存放一行字母,要求把這兩個(gè)文件中的信息合并(按字母順序排列),輸出到一個(gè)新文件C中。1.程序分析:2.程序源代碼:#include<stdio.h>#include<stdlib.h>main() FILE* fp; int i,j,k,num,NUM; char c160,t,ch; if(fp=fopen("A.txt","r")=NULL) printf(

27、"file A cannot be openedn"); exit(0); printf("A contents are:n"); for(i=0;(ch=fgetc(fp)!=EOF;i+)/*一個(gè)字符一個(gè)字符讀*/ ci=ch; putchar(ci); num=i+1; fclose(fp);if(fp=fopen("B.txt","r")=NULL) printf("file B cannot be openedn"); exit(0); printf("nB contents

28、 are:n");for(i=0;(ch=fgetc(fp)!=EOF;i+) cnum+i=ch; putchar(cnum+i); fclose(fp);NUM=num+i+1;for(k=0;k<NUM-1;k+)/*冒泡排序*/ for(j=0;j<NUM-k-1;j+) if(cj>cj+1) t=cj; cj=cj+1; cj+1=t; printf("nC fileis:n");fp=fopen("C","w");for(i=0;i<NUM;i+) putc(ci,fp);/*將字符一個(gè)

29、個(gè)寫入文件中*/ putchar(ci);/*一個(gè)個(gè)輸出字符*/fclose(fp);printf("n");已運(yùn)行部分:字符串類:1、/*輸出9*9口訣。共9行9列,i控制行,j控制列。*/#include "stdio.h"main()int i,j,result; for (i=1;i<10;i+) for(j=1;j<10;j+) result=i*j; printf("%d*%d=%-3d",i,j,result);/*-3d表示左對齊,占3位*/ printf("n");/*每一行后換行*/

30、 8、/*完善程序,實(shí)現(xiàn)將輸入的字符串反序輸出,如輸入windows 輸出swodniw。*/#include "stdio.h"#include <string.h>main() char c200,c1; int i,j,k; printf("Enter a string: "); scanf("%s",c); k=strlen(c); for (i=0,j=k-1;i<k/2;i+,j-) c1=ci;ci=cj;cj=c1; printf("%sn",c); 或者:#include <

31、;string.h>#include "stdio.h"main()char c200,c1;int i,j,k;printf("Enter a string:");scanf("%s",c);k=strlen(c);for(i=k-1;i>=0;i-)c1=ci; printf("%c",c1);指針法:void invert(char *s)int i,j,k; char t; k=strlen(s); for(i=0,j=k-1;i<k/2;i+,j-) t=*(s+i); *(s+i)=*

32、(s+j); *(s+j)=t; main() FILE *fp;char str200,*p,i,j;if(fp=fopen("p9_2.out","w")=NULL) printf("cannot open the filen"); exit(0); printf("input str:n");gets(str); printf(“n%s”,str);fprintf(fp,“%s”,str);invert(str); printf(“n%s”,str);fprintf(fp,“n%s”,str); fclose

33、(fp);16、/*輸入一個(gè)字符串,判斷其是否為回文?;匚淖址侵笍淖蟮接易x和從右到左讀完全相同的字符串。*/#include <stdio.h>#include <string.h>main() char s100; int i,j,n; printf("輸入字符串:n"); gets(s); n=strlen(s); for(i=0,j=n-1;i<j;i+,j-) if(si!=sj) break; if(i>=j) printf("是回文串n"); else printf("不是回文串n"

34、);或者:#include <stdio.h>#include <string.h>main()char s100;int i,j,n,k;printf("Enter a string :");scanf("%s",s);k=0; n=strlen(s);for(i=0,j=n-1;i<n/2;i+,j-)if(si!=sj)k+;if(k!=0)printf("不是回文");else printf("是回文");文件類:從鍵盤輸入一個(gè)字符串,將小寫字母全部轉(zhuǎn)換成大寫字母,然后輸出到一

35、個(gè)磁盤文件“test”中保存。輸入的字符串以!結(jié)束。 程序源代碼:i nclude "stdio.h"main()FILE *fp;char str100,10;int i=0;if(fp=fopen("test","w")=NULL) printf("cannot open the filen");exit(0);printf("please input a string:n");gets(str);while(stri!='!') if(stri>='a'

36、;&&stri<='z')stri=stri-32;fputc(stri,fp);i+;fclose(fp);fp=fopen("test","r");fgets(str,strlen(str)+1,fp);printf("%sn",str);fclose(fp); 將一個(gè)磁盤文件中的信息,復(fù)制到另一個(gè)磁盤文件中去程序源代碼:#include <stdio.h>#include <stdlib.h>void main()FILE *in,*out;char ch,in,out;printf("Enter the in:n");scanf("%s",infile);printf("Enter the out:n");scanf("%s",outfile); if(in=fopen(infile,"r")=NULL)printf("Cannot open the infile!");exit(0);if(out=fopen

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論