第一篇:計(jì)算機(jī)系C語言編程50題(含答案)
1、輸入1~10之間的一個(gè)數(shù)字,輸出它對應(yīng)的英文單詞。#include “stdio.h” main(){ int x;printf(“please input x(1-10):n”);scanf(“%d”,&x);switch(x){ case 1:printf(“one”);break;case 2:printf(“two”);break;case 3:printf(“three”);break;case 4:printf(“four”);break;case 5:printf(“five”);break;case 6:printf(“six”);break;case 7:printf(“server”);break;case 8:printf(“eight”);break;case 9:printf(“nine”);break;case 10:printf(“ten”);break;} }
2、用自然語言描述程序邏輯如下,試寫程序。① 設(shè)置環(huán)境;
② 定義變量i、j、s,以及用于放置結(jié)果的變量sum,并令sum初值為0; ③ i=1;
④ 如果i≤100,則轉(zhuǎn)⑤,否則轉(zhuǎn)⑧;
⑤ 令s=0,求前i個(gè)自然數(shù)之和,并放于變量s之中; ⑥ sum=sum+s; ⑦ i增加1,轉(zhuǎn)④; ⑧ 輸出和sum,結(jié)束。#include “stdio.h” main(){ int i,j,s;long sum=0;for(i=1;i<=100;i++){ s=0;for(j=1;j<=i;j++){
s=s+j;} sum=sum+s;
} printf(“sum=%d”,sum);}
3、用自然語言描述的程序邏輯為:(假設(shè)正確口令為123456)① 設(shè)置環(huán)境;
② 定義變量i、flag和password,并令flag=0,i=0; ③ 用戶回答口令,將其賦于password變量;
④ 口令正確?如果是,則flag=1,轉(zhuǎn)⑥。否則轉(zhuǎn)⑤; ⑤ 回答三次口令了嗎?如果沒有,計(jì)數(shù)器加1后(i++),轉(zhuǎn)③,否則轉(zhuǎn)⑥; ⑥ 根據(jù)flag之值輸出相應(yīng)信息。#include “stdio.h” main(){ long i=0,flag=0,password;printf(“please input password:n”);scanf(“%ld”,&password);do { if(password==123456)flag=1;i++;}while(i<3);if(flag==1)printf(“口令正確!”);else printf(“口令不正確!”);}
4、用自然語言描述的程序邏輯如下: ① 設(shè)置環(huán)境;
② 定義變量digit、x、y分別表示原始數(shù)、原始數(shù)的個(gè)位數(shù)和逆數(shù); ③ 輸入原始正整數(shù)x;
④ 從x中分解出個(gè)位數(shù)字digit; ⑤ 合并個(gè)位digit至逆數(shù)y中; ⑥ 原始數(shù)x縮小10倍:x=x/10; ⑦ 如果x非零,則轉(zhuǎn)④;
⑧ 輸出逆數(shù)y,結(jié)束 #include “stdio.h” main(){ int digit,x,y=0;printf(“please input x:n”);scanf(“%d”,&x);do { digit=x%10;y=y*10+digit;x=x/10;} while(x);printf(“%d”,y);}
5、輸入某三角形的三個(gè)邊的長度,判斷出這是個(gè)什么三角形(等腰、等邊、任意,或不能構(gòu)成)。#include “stdio.h” main(){ float a,b,c;printf(“please input a,b,c:n”);scanf(“%f,%f,%f”,&a,&b,&c);if(a>0&&b>0&&c>0&&a+b>c&&b+c>a&&a+c>b){ if(a==b&&a==c&&b==c){
printf(“等邊三角形!”);}
else { if(a==b||a==c||b==c)
{
printf(“等腰三角形!”);
}
else
{
printf(“任意三角形!”);
}
} } else { printf(“不能構(gòu)成三角形!”);} }
6、輸入10個(gè)數(shù),分別統(tǒng)計(jì)其中正數(shù)、負(fù)數(shù)、零的個(gè)數(shù)。#include “stdio.h” #define N 10 main(){ int i,zsum=0,fsum=0,lsum=0;float x;for(i=1;i<=N;i++){ printf(“請輸入第%d個(gè)數(shù):”,i);scanf(“%f”,&x);if(x>0)zsum++;else if(x==0)lsum++;
else fsum++;} printf(“有%d個(gè)正數(shù),%d個(gè)負(fù)數(shù),%d個(gè)零”,zsum,fsum,lsum);}
7、先隨機(jī)產(chǎn)生N個(gè)三位自然數(shù)輸出,然后再輸出其中同時(shí)是3、5、7倍數(shù)的數(shù)。(設(shè)N為100)#include “stdio.h” #include “stdlib.h” #include “time.h” #define N 100 main(){ int i,x;randomize();for(i=1;i<=N;i++){ x=random(900)+100;printf(“%dt”,x);if(x%3==0&&x%5==0&&x%7==0)printf(“n*%d*n”,x);}
}
8、已知x和y存在下列對應(yīng)關(guān)系,要求對輸入的每個(gè)x值,計(jì)算出y值,請編程。y=0,x=a||x=-a;y=sqrt(a*a-x*x),-a 9、計(jì)算:1/2-2/3+3/4-4/5??,前100項(xiàng)。#include “stdio.h” main(){ int i,t=1;float sum=0;for(i=1;i<=100;i++){ sum=sum+(t*i*1.0)/(i+1);t=-t;} printf(“%f”,sum);} 10、從終端輸入3個(gè)數(shù)a、b、c,按從大到小的順序輸出。#include “stdio.h” #define N 3 main(){ int x[N],i,j,temp;for(i=0;i if(x[j]>x[i]) { temp=x[i]; x[i]=x[j]; x[j]=temp; } } } for(i=0;i 11、打印出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個(gè)3位數(shù),其各位數(shù)字立方之和等于該數(shù)本身。#include “stdio.h” #include “math.h” main(){ int i,gw,sw,bw;for(i=100;i<=999;i++){ gw=i%10;sw=i/10%10;bw=i/100%10;if(i==pow(gw,3)+pow(sw,3)+pow(bw,3))printf(“%dn”,i);} } 12、求下列式子的值:1-1/2+1/3-1/4+??+1/99-1/100,將結(jié)果輸出。#include “stdio.h” main(){ int i,t=1;float sum=0;for(i=1;i<=100;i++){ sum=sum+(1.0*t)/(i+1);t=-t;} printf(“sum=%f”,sum);} 13、編程輸入整數(shù)a和b,若大于100,則輸出百位以上的數(shù)字,否則輸出兩數(shù)之和。#include “stdio.h” main(){ int a,b;printf(“please input a,b:n”);scanf(“%d,%d”,&a,&b);if(a>100&&b>100){ printf(“%d,%d”,a/100,b/100);} else { printf(“%d”,a+b);} } 14、輸入學(xué)生的成績,利用計(jì)算機(jī)將學(xué)生的成績劃分出等級(jí)并輸出:90~100:A級(jí); 80~89:B級(jí); 70~79:C級(jí); 60~69:D級(jí); 0~59:E級(jí); #include “stdio.h” main(){ int chengji;printf(“please input chengji:n”);scanf(“%d”,&chengji);if(chengji>=90&&chengji<=100)printf(“A”);else if(chengji>=80)printf(“B”);else if(chengji>=70)printf(“C”);else if(chengji>=60)printf(“D”);else printf(“E”);} 15、把100~200之間的不能被3整除的數(shù)輸出。#include “stdio.h” main(){ int i;for(i=100;i<=200;i++)if(i%3!=0)printf(“%dt”,i);} 二 數(shù)組循環(huán)部分: 16、從終端(鍵盤)讀入20個(gè)數(shù)據(jù)到數(shù)組中,統(tǒng)計(jì)其中正數(shù)的個(gè)數(shù),并計(jì)算這些正數(shù)之和。#include “stdio.h” #define N 5 main(){ float x[N],sum=0;int i,count=0;for(i=0;i count++; sum+=x[i]; } } printf(“count=%d,sum=%f”,count,sum);} 17、從終端(鍵盤)將5個(gè)整數(shù)輸入到數(shù)組a中,然后將a逆序復(fù)制到數(shù)組b中,并輸出b中各元素的值。#include “stdio.h” #define N 5 main(){ int a[N],b[N],i;for(i=0;i 18、一輛卡車違反交通規(guī)則,撞人后逃跑?,F(xiàn)場有三人目擊事件,但都沒有記住車號(hào),只記下車號(hào)的一些特征。甲說:牌照的前兩位數(shù)字是相同的;乙說:牌照的后兩位數(shù)字是相同的,但與前兩位不同;丙是數(shù)學(xué)家,他說:四位的車號(hào)剛好是一個(gè)整數(shù)的平方。請根據(jù)以上線索找出車號(hào)。include “stdio.h” #include “math.h” main(){ int x;/*x表示四位車號(hào)*/ int gw,sw,bw,qw;for(x=0;x<=9999;x++){ gw=x%10;/*個(gè)位*/ sw=x/10%10;/*十位*/ bw=x/100%10;/*百位*/ qw=x/1000%10;/*千位*/ if(bw==qw&&gw==sw&&gw!=bw&&sqrt(x)==(int)sqrt(x))printf(“%dt”,x);} } 19 安人員審問四名竊賊嫌疑犯。已知,這四人當(dāng)中僅有一名是竊賊,還知道這四人中每人要么是誠實(shí)的,要么總是說謊的。在回答公安人員的問題中:甲說“乙沒有偷,是丁偷的”,乙說“我沒有偷,是丙偷的”,丙說“甲沒有偷,是乙偷的”,丁說“我沒有偷”。請根據(jù)這四人的答話判斷誰是盜竊者 #include “stdio.h” main(){ int a,b,c,d;for(a=0;a<=1;a++)for(b=0;b<=1;b++)for(c=0;c<=1;c++)for(d=0;d<=1;d++)if(b+d==1&&b+c==1&&a+b==1)printf(“%d,%d,%d,%dn”,a,b,c,d);}“百錢百雞”問題。百錢買百雞,雞翁一值錢三,雞母一值錢二,雞雛三值錢一,問雞翁、雞母、雞雛各幾何?*/ #include “stdio.h” main(){ int jiweng,jimu,jichou;for(jiweng=1;jiweng<=33;jiweng++)for(jimu=1;jimu<=50;jimu++){ jichou=100-jiweng-jimu;if(jiweng*3+jimu*2+jichou*1.0/3==100)printf(“%d,%d,%dn”,jiweng,jimu,jichou);} } B、C、D、E五名學(xué)生有可能參加計(jì)算機(jī)競賽,根據(jù)下列條件判斷哪些人參加了競賽.(1)A參加時(shí),B也參加;(2)B和C只有一個(gè)人參加; (3)C和D或者都參加,或者都不參加;(4)D和E中至少有一個(gè)人參加; (5)如果E參加,那么A和D也都參加。(程序有誤)#include “stdio.h” main(){ int a,b,c,d,e;/*用表示參加,表示未參加*/ for(a=0;a<=1;a++)for(b=0;b<=1;b++)for(c=0;c<=1;c++)for(d=0;d<=1;d++)for(e=0;e<=1;e++){ if(a==1)b=1;if(b==1)c=0;else c=1;if(c==1)d=1;else if(c==0)d=0;if(d||e)} } 輸入一個(gè)字串,判斷它是否是對稱串。如”abcdcba”是對稱串,”123456789”不是。#include “stdio.h” #include “string.h” main(){ char s[50];int i,flag=1;;gets(s);for(i=0;i<=strlen(s)/2-1;i++){ if(s[i]!=s[strlen(s)-i-1]){ flag=0;break;} } if(flag==1){ printf(“%s是對稱串”,s);} else { printf(“%s不是對稱串”,s);} } 23 隨機(jī)產(chǎn)生N個(gè)大寫字母輸出,然后統(tǒng)計(jì)其中共有多少個(gè)元音字符。(設(shè)N為200)#include “stdio.h” #include “stdlib.h” #include “time.h” #define N 200 main(){ int i,count=0,ch;randomize();for(i=1;i<=N;i++){ ch=random(26)+65;printf(“%ct”,ch);if(ch=='A'||ch=='E'||ch=='I'||ch=='O'||ch=='U')count++;} printf(“count=%d”,count);} 24 從鍵盤輸入長度不等的兩個(gè)字串,將長串連接于短串之后輸出。include “string.h” main(){ char s1[50],s2[100];gets(s1);/*輸入長串*/ gets(s2);/*輸入短串*/ puts(strcat(s2,s1));} 2 5鍵盤輸入兩個(gè)字串,輸出其中較短的那個(gè)字串,并輸出它的長度。#include “stdio.h” #include “string.h” main(){ char s1[100],s2[100];gets(s1);gets(s2);if(strlen(s1) 29入一行英文,已知各單詞之間用1個(gè)空格或一個(gè)標(biāo)點(diǎn)符號(hào)相隔(設(shè)第一個(gè)單詞前沒有空格),統(tǒng)計(jì)這行英文有多少個(gè)單詞。 #include “stdio.h” #include “string.h” main(){ char s[100];int i,count=0;gets(s);for(i=0;i 30輸入一行字符串,按如下規(guī)則加密:如果是英文字母則大寫變小寫、小寫變大寫,對非英文字符則保持不變。試寫加密程序。 #include “stdio.h” #include “string.h” main(){ char s[100];int i;gets(s);for(i=0;i 31隨機(jī)產(chǎn)生N個(gè)兩位自然數(shù),降序排列后輸出。(設(shè)N為20)#include “stdio.h” #include “stdlib.h” #include “time.h” #define N 20 main(){ int x[N],i,j,temp;randomize();for(i=0;i } } for(i=0;i 32求s=a+aa+aaa+aaaa+......+aa...a的值,其中a是1~9之間的一個(gè)數(shù)字,表達(dá)式項(xiàng)數(shù)從鍵盤輸入(設(shè)不超過10項(xiàng))。例如2+22+222+2222+22222(此時(shí)共有5個(gè)數(shù)相加),幾個(gè)數(shù)相加有鍵盤控制。#include “stdio.h” #include “math.h” main(){ int i,a,n;long t=0,s=0;scanf(“%d,%d”,&a,&n);s=t=a;printf(“%d”,t);for(i=1;i for(i=1;i<=n;i++){ s=s+i*pow(10,n-i); } printf(“%d”,s);} 34小學(xué)生智商測試。讓電腦隨機(jī)出十道100以內(nèi)整數(shù)的加法題(10分/題),小學(xué)生從鍵盤回答答案,統(tǒng)計(jì)小學(xué)生最后得分。 #include “stdio.h” #include “stdlib.h” #include “time.h” main(){ int i,x,y,sum,chengji=0;randomize();for(i=1;i<=10;i++){ x=random(100)+1;y=random(100)+1;printf(“%d+%d=”,x,y);scanf(“%d”,&sum);if(x+y==sum)chengji+=10;printf(“n”);} printf(“chengji=%d”,chengji);} 35斐氏數(shù)列是公元13世紀(jì)數(shù)學(xué)家斐波拉契發(fā)明的。即:1,2,3,5,8,13,21,34,55,89,??,輸出其前15項(xiàng)。 #include “stdio.h” #define N 15 main(){ int x,y,z,i;x=1;y=2;printf(“%dt%d”,x,y);for(i=3;i<=N;i++){ z=x+y;printf(“t%d”,z);x=y;y=z;} } 36輸入一個(gè)十進(jìn)數(shù),將其轉(zhuǎn)換成 N 進(jìn)制數(shù)(0 digit=x%n; s[i]=digit; i++; x=x/10;}while(x);for(i=strlen(s);i>=0;i--)printf(“%d”,s[i]);} else { printf(“n超出范圍!”);} } 37輸入n個(gè)整數(shù),將其中最小者與第一個(gè)數(shù)對調(diào),最大者與最后一個(gè)數(shù)對調(diào)。#include “stdio.h” #define N 10 main(){ int x[N],max,min,i,min_i,max_i;/*輸入N個(gè)數(shù)*/ for(i=0;i max=x[i]; max_i=i;} if(x[i] min=x[i]; min_i=i;} } /*輸出原來N個(gè)數(shù)*/ printf(“原來N個(gè)數(shù)如下:n”);for(i=0;i 41從鍵盤上輸入若干學(xué)生的一門課成績,計(jì)算出平均分,當(dāng)輸入負(fù)數(shù)時(shí)結(jié)束輸入。將結(jié)果輸出。#include “stdio.h” main(){ int x,count=0;float sum=0,avg;scanf(“%d”,&x);while(x>=0){ sum+=x;count++;scanf(“%d”,&x);} avg=sum/count;printf(“avg=%f”,avg);} 42打印以下圖案: 倒三角 #include “stdio.h” main(){ int i,j;for(i=4;i>=0;i--){ /*輸出每行前的空格*/ for(j=0;j<20-i;j++){ printf(“ ”);} /*輸出每行中的*號(hào)個(gè)數(shù)*/ for(j=0;j<2*i-1;j++){ printf(“*”);} /*輸出換行符*/ printf(“n”);} } 43求一個(gè)3*3的整型矩陣對角線元素之和。#include “stdio.h” #include “stdlib.h” #include “time.h” main(){ int x[3][3],i,j,sum=0;/*隨機(jī)產(chǎn)生整型矩陣,并輸出*/ randomize();for(i=0;i<3;i++){ for(j=0;j<3;j++){ x[i][j]=random(900);printf(“%dt”,x[i][j]);} printf(“n”);} /*求對角線元素和*/ sum=x[0][0]+x[1][1]+x[2][2];printf(“n對角線和=%d”,sum);} 44求滿足1+2+3+?+n<500中最大的N,并求其和,編寫程序?qū)崿F(xiàn)。#include “stdio.h” main(){ int n=0,sum=0;while(sum<500){ n++;sum+=n;} printf(“n=%d”,n);} 45求N的階乘,N由鍵盤輸入。#include “stdio.h” main(){ int n,i;long t=1;scanf(“%d”,&n);for(i=n;i>=1;i--)t=t*i;printf(“%d!=%ld”,n,t);} 三、自定義函數(shù)與指針部分: 46、鍵盤輸入長方體的長寬高l、w、h,求其體積及表面積。要求用自定義函數(shù)val(l,w,h)計(jì)算長方體的體積和表面積,計(jì)算結(jié)果使用全局變量帶回主函數(shù)。#include “stdio.h” float tiji,bmianji;void val(float l,float w,float h);main(){ float l,w,h;scanf(“%f,%f,%f”,&l,&w,&h);val(l,w,h);printf(“tiji=%f,bmianji=%f”,tiji,bmianji);} void val(float l,float w,float h){ tiji=l*w*h;bmianji=2*(l*w+l*h+w*h);} 47、找出三位自然數(shù)中的所有素?cái)?shù),要求判斷x素?cái)?shù)用自定義函數(shù)data(x)實(shí)現(xiàn)。#include “stdio.h” int data(int x);main(){ int i;for(i=100;i<=999;i++)if(data(i))printf(“%dt”,i);} int data(int x){ int flag=1,i;for(i=2;i if(x%i==0){ flag=0; break;} if(flag==1) return 1;else return 0;} 48、輸出n行由“#”組成的矩形,每行“#”的個(gè)數(shù)為m個(gè),其中n、m由終端(鍵盤)輸入。要求輸出m個(gè)“#”功能由函數(shù)satr(m)函數(shù)實(shí)現(xiàn)。#include “stdio.h” void satr(int m);main(){ int m,n,i;printf(“please input m,n:n”);scanf(“%d,%d”,&m,&n);for(i=1;i<=n;i++){ satr(m);printf(“n”);} } void satr(int m){ int i;for(i=m;i>=1;i--)printf(“#”);} 49、編寫程序,建立phone.txt文件,由鍵盤輸入5個(gè)人的姓名、手機(jī)號(hào)碼、家庭住址,寫入該文件中。#include “stdio.h” #define size 5 struct student { char name[20];int num;char addr[20];}stud[size]; void save(){ FILE *fp;int i;if((fp=fopen(“c:phone.txt”,“wb”))==NULL){ printf(“n不能打開文件,錯(cuò)誤”); exit(0);} for(i=0;i main(){ int i;for(i=0;i 50、輸出某二維數(shù)組中各元素的內(nèi)存地址及其值。#include “stdio.h” #include “stdlib.h” #include “time.h” #define M 4 #define N 6 main(){ int x[M][N],i,j,*p;randomize();for(i=0;i for(i=0;i C語言經(jīng)典編程題 題目01:在一個(gè)已知的字符串中查找最長單詞,假定字符串中只含字母和空格,空格用來分隔不同的單詞。 [cpp] view plain copy print? 1.2.3.4.5.6.7.8.9.int main(){ // 用數(shù)組定義一個(gè)字符串 char array[50] = “zha junju zhamengjun z mengjun”; char *str = array;// 定義指針變量str,指向數(shù)組array int len = 0;// 定義變量len,用于計(jì)數(shù) int max = 0;// 定義變量max,存放最長單詞的長度 char *p = 0;// 定義指針變量p,指向最長單詞的首字符 10.11.// 判斷指針當(dāng)前指向的字符是不是'
第二篇:C語言經(jīng)典編程題(推薦)