版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、 PAGE 73C語言實驗參考答案實驗一5、輸入并運行自已編寫的程序(教材第一章P14 三 編程題)。實驗二1、編寫一個程序,從鍵盤接收3個實數(shù)(分別為10.0、20.0、5.0),輸出這3個數(shù)的和s、乘積t和平均值a。#include main()float x,y,z,s,t,a;printf(“x,y,z=”);scanf(“%f,%f,%f”,&x,&y,&z);s=x+y+z;t=x*y*z;a=s/3;printf(“s=%f,t=%f,a=%fn”,s,t,a);2、編程。要求用戶輸入兩個整數(shù)a、b(分別為20、10), 讀取用戶從鍵盤輸入的值,然后:1)用整數(shù)輸出這兩個數(shù)的和、
2、差;2)用長整型輸出這兩個數(shù)的積,用float輸出商;3)用整數(shù)輸出這兩個數(shù)的余數(shù),用float輸出平均值。#include main()int a,b,he,cha,yu;long ji;float shang,aver;printf(“a,b=”);scanf(“%d,%d”,&a,&b);he=a+b;cha=a-b;ji=(long)a*b;shang=1.0*a/b;yu=a%b;aver=(a+b)/2.0;printf(“a+b=%d,a-b=%d,a*b=%ldn”,he,cha,ji);printf(“a/b=%f,a%b=%d,aver=%fn”,shang,yu,aver
3、);3.再次運行程序第2題中的程序,使整數(shù)a、b的值分別為10、20,分析程序運行結(jié)果,并給出說明。程序同上。實驗三1、編寫一個程序,從鍵盤接收一個一位的整型數(shù),經(jīng)轉(zhuǎn)換,用字符函數(shù)putchar輸出。例如,輸入整數(shù)5,程序運行后輸出字符5。#include main()int a;char c;printf(“a=”);scanf(“%d”,&a);c=a+48;putchar(c);2、編程。輸入半徑,計算球體表面積()和球體積 ()。#include #define PI 3.1415926main()float r,s,v;printf(“r=”);scanf(“%f”,&r);s=4*
4、PI*r*r;v=4/3.0*PI*r*r*r;printf(“s=%f,v=%fn”,s,v);3、編寫一個程序,要求通過鍵盤給6個變量賦值,然后將變量的值在屏幕上打印輸出。這六個變量的值分別為:10,10,40000,a,3.14,hello。#include main()int a,b;long c;char d,ch6;float e;scanf(“%d%d%ld%c%f%s”,&a,&b,&c,&d,&e,ch);printf(“%d,%d,%ld,%c,%f,%sn”,a,b,c,d,e,ch);實驗四1.編程實現(xiàn):鍵盤輸入三個整數(shù),分別存放到變量a,b,c中,輸出其中的最小值(要
5、求不改變a、b、c的值)。#include main()int a,b,c,min;printf(請輸入三個整數(shù)a,b,c=);scanf (%d,%d,%d,&a,&b,&c);min=ab?(bc?c:b):(ac?c:a);printf(min=%dn,min);2.編程實現(xiàn):鍵盤輸入一個字符,如是大寫字母,則輸出相應(yīng)小寫字母;如是小寫字母,則輸出相應(yīng)大寫字母;其它字符原樣輸出。#include main()char c;printf(請輸入一個字符:);scanf (%c,&c);if(c=a&c=A&c=Z)c=c+32;printf(%cn,c);3、計算以下分段函數(shù)值#inclu
6、de main()double x,y;printf(請輸入一個實數(shù):);scanf (%lf,&x);if(x=0&x10&x!=2&x!=3)y=x*x-5*x+6;else y=x*x-x-1;printf(x=%f,f(x)=%fn,x,y);4.編寫程序,鍵盤接收一個字符串(只含大、小寫英文字母),將該字符串加密后輸出。加密規(guī)則為:若為小寫字母則不變,若為大寫字母則將其轉(zhuǎn)換為小寫后再后移一個字母,例如“A”應(yīng)轉(zhuǎn)換為“b”,“B”應(yīng)轉(zhuǎn)換為“c”,“Y”應(yīng)轉(zhuǎn)換為“z”,而“Z”應(yīng)轉(zhuǎn)換為“a”。#include main()char c20;int i;printf(請輸入一個字符串(只含
7、英文字母):);gets (c);for(i=0;ci!=0;i+)if(ci= A&ci= Y)ci=ci+33;else if(ci=Z)ci=a;puts(c);putchar(n);5.編寫程序,用scanf輸入任意兩個數(shù)給變量a、b,若a大于等于b,則直接輸出a、b,否則將a、b的值交換(即a的原值放入b中,b的原值放入a中)后再輸出。#include main()float a,b,t;printf(請輸入兩個數(shù):);scanf (%f,%f,&a,&b);if(ab)t=a;a=b;b=t;printf (a=%f,b=%f,a,b);6.編寫程序:由系統(tǒng)生成一個10以內(nèi)的隨機整
8、數(shù),用戶從鍵盤上輸入一個10以內(nèi)的整數(shù),如果兩者相等輸出“OK”,否則輸出“ERROR”。 #include #include #include main()int a,b;srand( (unsigned)time(NULL);b=rand()%10+1;printf(請輸入一個10以內(nèi)的整數(shù):);scanf(%d,&a);printf(a=%d,隨機數(shù)b=%dn,a,b);if(a=b) printf(OK!n);else printf(ERROR!n);7.編寫程序要求輸入整數(shù)a和b,若a2+ b2大于100,則輸出a2+ b2百位以上的數(shù)字,否則輸出兩數(shù)之和。(此題為選做)#inclu
9、de main()int a,b,t;printf(請輸入兩個整數(shù)a,b=);scanf (%d,%d,&a,&b);t= a*a+b*b;if(t=100) printf(a+b =%d,a+b);else t=t/100;printf (a*a+b*b百位以上的數(shù)字是%dn,t);實驗五1. 編程,計算函數(shù)y的值,已知函數(shù)y與自變量x的關(guān)系為:#include main()float x,y;printf(“請輸入一個非負(fù)數(shù)x=”);scanf(“%f”,&x);if(x=0&x=100)y=x*x*x-20;if(x=0)printf(“y=%fn”,y);else printf(“輸入
10、錯誤!n”);2. 編寫一個簡單的計算器程序,輸入格式為:data1 op data2。其中data1和data2是參加運算的兩個數(shù),op為運算符,它的取值只能是+、-、*、/。#include main()char op;float d1,d2;printf(請輸入算式(如3+5):);scanf(%f%c%f,&d1,&op,&d2);switch(op) case +: printf(%g+%g=%gn,d1,d2,d1+d2);break; case -: printf(%g-%g=%gn,d1,d2,d1-d2);break; case *: printf(%g%g=%gn,d1,d
11、2,d1*d2);break; case /: printf(%g%g=%gn,d1,d2,d1/d2);break; 2. 編程實現(xiàn):輸入一個整數(shù),判斷它能否被3,5,7整除,并輸出以下信息之一:能同時被3,5,7整除能被其中兩數(shù)(要指出是哪兩個數(shù))整除能被其中一個數(shù)(要指出是哪一個數(shù))整除不能被3,5,7任一個數(shù)整除#include main()int n;printf(請輸入一個整數(shù)n=);scanf(%d,&n);if(n%3=0&n%5=0&n%7=0)printf(%d能被3,5,7整除n,n);else if(n%3=0&n%5=0)printf(%d能被3,5整除n,n);el
12、se if(n%3=0&n%7=0)printf(%d能被3,7整除n,n);else if(n%5=0&n%7=0)printf(%d能被5,7整除n,n);else if(n%3=0)printf(%d能被3整除n,n);else if(n%5=0)printf(%d能被5整除n,n);else if(n%7=0)printf(%d能被7整除n,n);else printf(%d不能被3,5,7任一個整除n,n);4. 已知從2008年12月開始,銀行整存整取存款不同期限的年利率分別為:三個月 1.71%,半年 1.98%,一年 2.25%,兩年 2.79%,三年 3.33%,五年 3.6
13、0%。編寫程序,要求輸入存錢的本金和期限,求出到期時能從銀行得到的利息與本金的合計數(shù)。#include main()char c;float x,y;printf(請輸入存款本金x=);scanf(%f,&x);dogetchar(); /*接受回車符*/clrscr(); /*清屏*/printf(n存款期限:n);printf(a三個月(年利率1.71%)n);printf(b半年(年利率1.98%)n);printf(c一年(年利率2.52%)n);printf(d兩年(年利率2.79%)n);printf(e三年(年利率3.33%)n);printf(f五年(年利率3.60%)n);p
14、rintf(請輸入存款期限(a,b,c,d,e,f):);scanf(%c,&c);while(!(c=a&c=f);printf(%g元存期,x);x=x/100;switch(c) case a:y=x*(100+1.71/4); printf(三個月);break; case b: y=x*(100+1.98/2); printf(半年);break; case c: y=x*(100+2.25); printf(一年);break; case d: y=x*(100+2.79*2); printf(兩年); break; case e: y=x*(100+3.33*3); printf
15、(三年);break; case f: y=x*(100+3.6*5); printf(五年);break; printf(到期的本息合計為%f元n,y);5. 設(shè)函數(shù)(1)用條件表達式求函數(shù)值y。(2)用if 語句編程,輸入x,輸出y,并給出你所使用的測試用例。解(1)用條件表達式求函數(shù)值y。#include main()float x;int y;printf(請輸入x=);scanf (%f,&x);y=(x=0)?(x0?1:0):-1;printf(y=%dn,y);解(2)用if 語句編程,輸入x,輸出y。#include main()float x;int y;printf(請輸
16、入x=);scanf (%f,&x);if(x=0) if(x0)y=1; else y=0;else y=-1;printf(y=%dn,y);6. 編寫程序:鍵盤上輸入一個不多于5位的正整數(shù),要求:求它是幾位數(shù)逆序打印出各位數(shù)字。如原數(shù)為123,應(yīng)輸出321。(此題為選做)#include #include main()long n,m,p,w1=0,w2=0,w3=0,w4=0,w5=0,t=0;printf(請輸入一個非負(fù)整數(shù)(n100000)n=);scanf(%ld,&n);if(n/10000)!=0)m=5;else if(n/1000!=0)m=4;else if(n/100
17、!=0)m=3;else if(n/10!=0)m=2;else m=1;switch(m) case 5:p=n/10000;w1=p;n-=p*10000;t+=w1*pow(10,m-5); case 4:p=n/1000;w2=p;n-=p*1000;t+=w2*pow(10,m-4); case 3:p=n/100;w3=p;n-=p*100;t+=w3*pow(10,m-3); case 2:p=n/10;w4=p;n-=p*10;t+=w4*pow(10,m-2); case 1:p=n;w5=p;t+=w5*pow(10,m-1); printf(輸入的是%ld位數(shù),逆序數(shù)為%
18、ldn,m,t);實驗六1、編程:輸出200以內(nèi)所有能被7整除的數(shù)。#include main()int i;for(i=0;i=200;i+=7) printf(“%4d”,i);2、從鍵盤輸入n個數(shù)(n10),找出其中最小值,請編寫相應(yīng)程序。#include main()int n,i,a,min;printf(“n=”);scanf(“%d”,&n);for(i=1;ia)min=a; printf(“min=%d”,min);3、鍵盤輸入正整數(shù)m和n(mn),計算mn之間所有奇數(shù)之和x與偶數(shù)之和y,請編程實現(xiàn)。#include main()int m,n,i,x1=0,x2=0;pri
19、ntf(“input m,n(mn):”);scanf(“%d,%d”,&m,&n);for(i=m;i=n;i+) if(i%2=1)x1+=i; else x2+=i;printf(“x1(奇數(shù)之和)=%d,x2(偶數(shù)之和)=%dn”,x1,x2);4.編程,計算函數(shù)y的值。要求鍵盤接收自變量x的值,若x 的值不為零,則計算函數(shù)y的值并輸出,再從鍵盤接收下一個x的值,直到x的值為零,則顯示“Thank You,Bye!”,爾后結(jié)束程序,已知函數(shù)y與自變量x的關(guān)系為: #include main()float x=1,y;doif(x0) printf(輸入錯誤(x0&x=100)y=x*x
20、*x-20;if(x0)printf(y(%g)=%gn,x,y);while(x!=0);printf(Thank You,Bye!n);5.編寫程序:有一分?jǐn)?shù)序列:2/1,3/2,5/3,8/5,13/8,21/13.求出這個數(shù)列的前20項之和。#include main()int i;float f1=1,f2=2,f,s=0;for(i=1;i=20;i+) f=f2/f1;s+=f; f=f1;f1=f2;f2=f+f2; printf(s(20)=%gn,s);6.我國現(xiàn)有人口13億,設(shè)年增長率為1%,編寫程序,計算多少年后增加到20億。#include main()float p
21、=13; int n=0; do p=p*1.01; n+; while(p20.); printf(%d年后人口增加到20億!n,n);7.求解愛因斯坦數(shù)學(xué)題。有一條長階梯,若每步跨2階,則最后剩余1階;若每步跨3階,則最后剩2階;若每步跨5階,則最后剩4階;若每步跨6階,則最后剩5階;若每步跨7階,最后才正好一階不剩。請問,這條階梯共有多少階?#include main() int n=7; do if(n%2!=1)n+;continue; if(n%3!=2) n+;continue; if(n%5!=4) n+;continue; if(n%6!=5) n+;continue; if
22、(n%7!=0) n+;continue; break; while(1); printf(這條階梯共有%d階!n,n);(說明:該題應(yīng)有多解:119,329,)8.每個蘋果0.8 元,第一天買2 個蘋果,第二天開始,每天買前一天的2 倍,直至購買的蘋果個數(shù)達到不超過100 的最大值。編寫程序求每天平均花多少錢?(此題為選做)#include main()float s=0; int n=1,p=0,d=0; do d+; /*第d天*/n=n*2; /*買n 個蘋果*/p=p+n; /*共p 個蘋果*/ while(p+n*2=100); s=p*0.8/d; printf(每天平均花%g元
23、錢!n,s);9.編寫程序,求一個整數(shù)任意次方的最后三位數(shù)。即求xy的最后三位數(shù),要求x,y 從鍵盤輸入。(注意xy的結(jié)果是否會溢出)。(此題為選做)#include #include main()double x,y,m;int m3;printf(請輸入x,y=);scanf(%lf,%lf,&x,&y);m=pow(x,y);m3=(int)m%1000;printf(x的y次方為%g,其最后三位數(shù)是%0.3dn,m,m3);實驗七1.編寫程序,從鍵盤輸入6 名學(xué)生的5 門成績,分別統(tǒng)計出每個學(xué)生的平均成績。#include main()int a,b,s;float v;for(a=1
24、;a=6;a+)v=0; for(b=1;b=5;b+) printf(請輸入第%d名學(xué)生的第%d門成績:,a,b); scanf(%d,&s); v=v+s; printf(第%d名學(xué)生的平均成績?yōu)?%gn,a,v/5.);2、打印出所有的水仙花數(shù),所謂的水仙花數(shù)是指一個3位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如,153是一個水仙花數(shù),因為有153=1*1*1+5*5*5+3*3*3 。解(1)#include main()int a,b,c,n;for(a=1;a=9;a+)for(b=0;b=9;b+)for(c=0;c=9;c+) n=100*a+10*b+c; if(n=a*a*a
25、+b*b*b+c*c*c) printf(“%dn”,n);解(2)#include main()int a,b,c,n;for(n=100;n=999;n+) a=n/100; b=n%100/10; c=n%10; if(n=a*a*a+b*b*b+c*c*c) printf(“%dn”,n);3、請分別用三種循環(huán)結(jié)構(gòu)編程計算: 1!+2!+3!+.+n!,n的值由鍵盤輸入。解(1)#include main()int n,i;long p=1,sum=0;printf(“n=”);scanf(“%d”,&n);for(i=1;i=n;i+) p*=i; sum+=p;printf(“1!
26、+2!+%d!=%ldn”,n,sum);解(2)#include main()int n,i=1;long p=1,sum=0;printf(“n=”);scanf(“%d”,&n);while(i=n) p*=i; sum+=p; i+;printf(“1!+2!+%d!=%ldn”,n,sum);解(3)#include main()int n,i=1;long p=1,sum=0;printf(“n=”);scanf(“%d”,&n);do p*=i; sum+=p; i+;while(i=n);printf(“1!+2!+%d!=%ldn”,n,sum);4.用循環(huán)語句編寫程序,其功
27、能是計算: s=1+12+123+1234+12345+123456+1234567#include main()long i,t=0,s=0;for(i=1;i=7;i+) t=10*t+i; /*printf(t=%ldn,t);*/ s=s+t; printf(s=%ldn,s);5.編寫程序,輸出下列形式的楊輝三角形的前10行。(此題為選做) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 #include main()int i,j,a10=1,1;printf(%4dn%4d%4dn,a0,a0,a1); for(i=2;i=1;j-)aj+=aj-1; for(j=0
28、;j=i;j+) printf(%4d,aj); printf(n);getch();實驗八1、打印輸出由1,2,3,4四個數(shù)字組成的4位數(shù),并統(tǒng)計它的個數(shù)(允許該4位數(shù)中有相同的數(shù)字,例如:1111,1122,,1212等).。#include main()int n,a,b,c,d,num=0;for(a=1;a=4;a+)for(b=1;b=4;b+)for(c=1;c=4;c+)for(d=1;d=4;d+) n=1000*a+100*b+10*c+d; printf(“%5d”,n); num+;printf(“nnum=%dn”,num);2、從鍵盤輸入10個正整數(shù)進行求和,如果錯
29、誤地輸入了負(fù)數(shù),則求和結(jié)束。請分別用break和不用break編寫相應(yīng)程序。解(1) 用break編寫程序#include main()int i,n,sum=0;for(i=1;i=0)sum+=n;else break;printf(“sum=%d”,sum);解(2) 不用break編寫程序#include main()int i=1,n=0,sum=0;while(i=0) scanf(“%d”,&n); if(n=0)sum+=n;i+;printf(“sum=%d”,sum);3.勾股定理為:a2+b2=c2,編寫程序,輸出30以內(nèi)滿足上述關(guān)系的整數(shù)組合,例如3,4,5就是一個整數(shù)
30、組合。#include main()int a,b,c,n;for(a=1;a=30;a+)for(b=a;b=30;b+)for(c=a;c=30;c+) if(c*c=a*a+b*b) printf(%d,%d,%dn,a,b,c); 4.計算并輸出500以內(nèi)最大的10個素數(shù)之和。#include main()int a,b,s=0,n=0;for(a=500;a=2;a-)for(b=2;b=a-1;b+) if(a%b=0)break; if(b=a)n+;s=s+a;printf(%d ,a); if(n=10) break;printf(ns=%dn,s);5.請驗證2000以內(nèi)的
31、哥德巴赫猜想,對于任何大于4的偶數(shù)均可以分解為兩個素數(shù)之和。#include main()int n,m,a,b;for(n=6;n=2000;n+=2)for(m=3;mn;m+=2) for(a=2;am;a+) if(m%a=0)break; if(a=m)for(b=2;bn-m;b+) if(n-m)%b=0)break; if(b=n-m) printf(%d=%3d+%3dn,n,m,n-m);break; 6.編寫程序:將一個正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5(此題為選做)#include main()int n,m,k=1;printf(請輸入一個正
32、整數(shù)n=);scanf(%d,&n);printf(%d=,n);for(m=2;m=n;m+)if(n%m=0)if(k=1) printf(%d,m);else printf(*%d,m);k+;n=n/m;m-;continue; printf(n);7.編寫程序,求一個正整數(shù)的位數(shù)(提示:關(guān)系表達式的值可以參與算術(shù)運算)。(此題為選做)#include main()long a,n=0,m=1; printf(請輸入一個正整數(shù)a=); scanf(%ld,&a);doif(a/m!=0)n+;m=m*10; else break; while(1);printf(正整數(shù)%ld的位數(shù)是:
33、%ldn,a,n);實驗九1、求一個33的整數(shù)矩陣的副對角線上所有奇數(shù)的和sum2。#include main()int a33,sum2=0,i,j;for(i=0;i3;i+)for(j=0;j3;j+) scanf(“%d”,&aij); if(i+j=2&aij%2)sum2+=aij;printf(“sum2=%d”,sum2);2、輸入一個正整數(shù)n(1n10),再輸入n個整數(shù),請編程實現(xiàn): = 1 * GB2 輸出這些數(shù)的平均值(保留2位小數(shù))。 = 2 * GB2 把這些數(shù)逆序后再輸出。 = 3 * GB2 輸出它們中的最大值及其下標(biāo)(設(shè)最大值唯一,下標(biāo)從0開始)。 = 4 *
34、GB2 將它們中的最小值與第一個數(shù)交換,最大值與最后一個數(shù)交換,然后輸出交換后的n個數(shù)。#include main()int a10,n,min,max,xb0,xb1,i,sum,t;float aver;printf(n=);scanf(%d,&n);for(i=0;in;i+) scanf(%d,&ai);min=a0;xb0=0;max=a0;xb1=0;sum=a0;for(i=1;iai)min=ai;xb0=i; if(maxai)max=ai;xb1=i;sum+=ai; aver=1.0*sum/n;printf(1)平均值為:%3.2fn,aver);printf(2)逆序
35、輸出:);for(i=0;in/2;i+)t=ai;ai=an-1-i;an-1-i=t;for(i=0;in;i+)printf(%4d,ai);printf(n);printf(3)最大值為:%d,其下標(biāo)為:%dn,max,xb1);t=a0;a0=axb0;axb0=t;for(i=0;in;i+)if(ai=max)xb1=i;t=an-1;an-1=axb1;axb1=t;printf(4)經(jīng)交換后輸出:);for(i=0;in;i+)printf(%4d,ai);printf(n);3.定義一個含有30個整型元素的數(shù)組a,按順序分別賦予從2開始的偶數(shù);然后按順序每5個數(shù)求出一個平均
36、值,放在另一個數(shù)組b中存儲,輸出數(shù)組b中6個元素的值。#include main()int a30,i,j;float b6=0,0,0,0,0,0;for(i=0;i30;i+)ai=(i+1)*2;for(i=0;i6;i+) for(j=0;j5;j+) bi+=ai*5+j; bi=bi/5.; printf(b%d=%gn,i+1,bi); 4.通過循環(huán)按行順序為一個55的二維數(shù)組a賦1到25的自然數(shù),然后輸出該數(shù)組的左下半角元素的值。#include main()int a55,i,j;for(i=0;i5;i+)for(j=0;j5;j+)aij=i*5+j+1;for(i=0;
37、i5;i+)for(j=0;j=i;j+) printf(%3d,aij); printf(n);5.從鍵盤輸入兩個字符串a(chǎn)和b,要求不使用庫函數(shù)strcat,把串b的前5個字符連接到串a(chǎn)中;如果b中的長度小于5,則把b的所有元素都連接到a中。#include main()char a20,b20;int i,j;gets(a);gets(b);for(i=0;ai!=0;i+);for(j=0;bj!=0&j5;j+)ai+j=bj;ai+j=0;puts(a);6.定義兩個N行N列的二維數(shù)組a、b,編寫程序,將a數(shù)組最后一行放到b數(shù)組的第0列中,把a數(shù)組中的第0行放到b數(shù)組的最后一列中,b
38、所指二維數(shù)組中其他元素的數(shù)據(jù)不變。#include main()int i,j ,a33=1,2,3,4,5,6,7,8,9;int b33=11,12,13,14,15,16,17,18,19;printf(變換前數(shù)組a,b:n);for(i=0;i3;i+)for(j=0;j3;j+)printf(%3d,aij); printf(n);printf(n);for(i=0;i3;i+)for(j=0;j3;j+)printf(%3d,bij); printf(n);for(i=0;i3;i+)bi0=a2i;bi2=a0i;printf(變換后數(shù)組a,b:n);for(i=0;i3;i+)
39、for(j=0;j3;j+)printf(%3d,aij);printf(n);printf(n);for(i=0;i3;i+)for(j=0;j3;j+)printf(%3d,bij);printf(n);7.一個整型數(shù)組有10個元素,編寫程序刪除所有值為n的元素。要求主函數(shù)完成n的輸入,數(shù)組元素的輸入以及進行刪除后數(shù)組元素的輸出。子函數(shù)完成刪除功能。(此題為選做) #include main()int a10,i,n,k=0,j;printf(請輸入10個整數(shù):n);for(i=0;i10;i+)scanf(%d,&ai);printf(請輸入1個要被刪除的整數(shù):n);scanf(%d,&
40、n);for(i=0;i10;i+)if(ai=n)for(j=i;j9;j+)aj=aj+1; i-;k+;continue;printf(刪除后數(shù)組的輸出:n);for(i=0;i10-k;i+)printf(%d ,ai);printf(n );8.試編程實現(xiàn)如下功能:先定義一個4行5列的數(shù)組(矩陣),調(diào)用庫函數(shù)rand()隨機產(chǎn)生20-50之間的整數(shù)給數(shù)組元素賦值,再將矩陣中第二列與第四列的元素互換。要求先輸出原數(shù)組,再輸出交換后的數(shù)組。(rand函數(shù)的使用請參閱教材259頁)(此題為選做)#include #include #include main()int a45,i,j,t;s
41、rand( (unsigned)time(NULL);printf(變換前數(shù)組a:n);for(i=0;i4;i+)for(j=0;j5;j+)aij= rand()%30+21;printf(%3d,aij);printf(n); printf(變換后數(shù)組a:n);for(i=0;i4;i+)t=ai1;ai1=ai3;ai3=t;for(i=0;i4;i+)for(j=0;j5;j+)printf(%3d,aij);printf(n);9.已知一組整型數(shù)據(jù)已按從小到大排列好,現(xiàn)任意輸入一個整數(shù),請按原來排序的規(guī)律將它插入到數(shù)組中(例如:原來的一組整數(shù)為1,3,5,8,9,若輸入的整數(shù)是7,
42、則最終的結(jié)果為: 1,3,5,7,8,9)。(此題為選做)#include main()int a10=1,3,5,7,9,11,13,15,17,i,j,n;printf(請輸入1個整數(shù):);scanf(%d,&n);for(i=0;in) for(j=9;ji;j-)aj=aj-1; ai=n; break; if(n=a8)a9=n;for(i=0;i10;i+)printf(%d ,ai);printf(n );10.編寫程序?qū)崿F(xiàn)對字符串的加密,要求從鍵盤輸入一個字符串,輸出加密之后的字符串。加密規(guī)則為:對于串中第奇數(shù)個字符,若是字母,則把該字母變?yōu)樗竺娴淖帜福ㄈ魹閆則變?yōu)锳),不是
43、字母則不變;對于偶數(shù)個字符,若是字母,則把該字母變?yōu)樗懊娴淖帜福ㄈ魹锳則變?yōu)閆),不是字母則不變;大小寫字母都遵循此規(guī)則。例如: 若原字符串是:AbbaZG Ha-MnnK Yzx 加密字符串為:BaczAF Gb-NmoJ Xaw (此題為選做)#include main()char a20;int i;printf(請輸入一個字符串:);gets(a);for(i=0;ai!=0;i+) if(ai=a&ai=A&ai=Z) if(i%2=1) switch(ai) case a:ai=z; break; case A:ai=Z; break; default:ai=ai-1; else
44、 switch(ai) case z:ai=a; break; case Z:ai=A; break; default:ai=ai+1; puts(a);printf(n );11.編寫程序:輸入一個整數(shù),輸出該整數(shù)的平方螺旋矩陣。例如輸入4,則輸出: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 (此題為選做)#include main()int i,j,m,n=1,a1010; printf(請輸入一個小于10的整數(shù):); scanf(%d,&m); for(i=0;i=m/2;i+) /*共旋轉(zhuǎn)m/2圈*/for(j=i;jm-i;j+) aij=n+;
45、for(j=i+1;ji;j-) am-i-1j=n+; for(j=m-i-1;ji;j-) aji=n+; for(i=0;im;i+)printf(nn); for(j=0;jm;j+) printf(%5d,aij); 實驗十1.編寫字符串拷貝程序,并要求將字符串中的小寫字母轉(zhuǎn)換成大寫字母。#include #include main()char a80,b80;int i,l;printf(輸入一個字符串:);gets(a);for(i=0;ai!=0;i+) bi=ai;if(bi=a&bi=z)bi=toupper(bi);puts(b);2、輸入一個以回車結(jié)束的字符串(少于80
46、個字符),將該字符串逆序后輸出。#include #include main()char c80,ch;int i,l;gets(c);l=strlen(c);for(i=0;il/2;i+) ch=ci;ci=cl-i-1;cl-i-1=ch;puts(c);3、輸入一個以回車結(jié)束的字符串(少于80個字符),再輸入一個字符,統(tǒng)計并輸出該字符在字符串中出現(xiàn)的次數(shù),然后再輸出該字符串。#include main()char c80,ch;int i,num=0;gets(c);ch=getchar();for(i=0;ci!=0;i+)if(ci=ch)num+;printf(“num(%c)=
47、%dn”,ch,num);puts(c);4.編寫程序:輸入一行英文字符串,統(tǒng)計單詞的個數(shù)(單詞和單詞以空格分隔)。(此題為選做)#includemain()char c50;int j=0,k,n=0;printf(輸入一個字符串:);gets(c);while(cj= )j+;if(cj!=0)n+;j+;for(k=j;k50;k+)if(ck= & ck+1!= & ck+1!=0)n+; if(ck=0)break;printf(n=%dn,n);實驗十一1、用指針方法,編寫一個函數(shù),求矩陣主對角線元素之和Sum。#include main()int i,j,a33,*p=*a,su
48、m=0;for(i=0;i3;i+)for(j=0;j3;j+)scanf(%d,p);if(i=j)sum+=*p;p+;printf(sum=%dn,sum);2、編一個程序,輸入15個整數(shù)存入一維數(shù)組,按逆序存放后再輸出(用指針完成)。#include main() int i,a15,*p=a,*q,temp;for(i=0;i15;i+)scanf(%d,p+i);q=&a14;for(i=0;i7;i+) temp=*p; *p=*q; *q=temp; p+; q-;p=a;for(i=0;i15;i+)printf(%3d,*(p+i);3、輸入一個36的二維整型數(shù)組,輸出其中
49、最大值、最小值以及它們所在行和列的下標(biāo)(用指針完成)。#include main()int i,j,a36,*p=*a,min,max,xb0_h,xb0_l,xb1_h,xb1_l;for(i=0;i3;i+)for(j=0;j6;j+)scanf(%d,p);if(i=0&j=0)max=*p;min=*p;xb0_h=0;xb0_l=0;xb1_h=0;xb1_l=0;if(max*p) min=*p;xb0_h=i;xb0_l=j;p+;printf(最大值為:%d,行標(biāo):%d,列標(biāo):%dn,max,xb1_h,xb1_l);printf(最小值為:%d,行標(biāo):%d,列標(biāo):%dn,mi
50、n,xb0_h,xb0_l);4.用指針編寫程序?qū)崿F(xiàn):輸入一個字符串,計算該字符串的長度,并統(tǒng)計該串中含小寫字母、大寫字母和其他字符的個數(shù)。#include main()char a100,*p=a; int n=0,xiao=0,da=0,qita=0; printf(請輸入一個字符串:); gets(p); while(*p) n+; if(*p=a&*p=A&*p=Z)da+;else qita+;p+;printf(n字符串長度=%d,n);printf(n小寫字母個數(shù)=%d,大寫字母個數(shù)=%d,其他字符個數(shù)=%dn,xiao,da,qita);5.用指針編寫程序完成,將字符串a(chǎn)賦給一
51、個字符數(shù)組,然后從第一個字母開始間隔地輸出該串。#include main()char a100,*p=a; int n=0; printf(請輸入一個字符串:); gets(p); while(*p) n+; if(n%2=1)putchar(*p);p+;6.編寫一個指針型函數(shù),從鍵盤接收一個17之間的整數(shù),根據(jù)指定的數(shù)字,返回與該數(shù)字相對應(yīng)的是星期幾。例如數(shù)字6則返回Saturday。(此題為選做)#include char *f(int m,char (*p)10)if(m=7)m=0;p+=m;return p;main()int n;char c710=Sunday,Monday,
52、Tuesday,Wednesday,Thursday,Friday,Saturday,(*q)4;q=c;doprintf(請輸入一個1-7的整數(shù):); scanf(%d,&n);while(n7);printf(%sn,f(n,q);7.用指針編寫程序?qū)崿F(xiàn),將一個字符串按逆序存放。要求主函數(shù)中完成字符串的輸入和輸出。子函數(shù)完成逆序存放。(此題為選做)#include #include void g(char a)int n,m;char *p=a,t;m=strlen(a);for(n=0;nm/2;n+)t=*(p+n);*(p+n)=*(p+m-n-1);*(p+m-n-1)=t;mai
53、n()char c50,*q=c;printf(請輸入一個字符串:);gets(q);g(c);printf(逆序后的字符串:);puts(q);實驗十二1.編寫程序:定義一個10個元素的職工結(jié)構(gòu)體數(shù)組(職工號、姓名、性別、出生年份、職務(wù)),從鍵盤輸入數(shù)據(jù)后,輸出年齡最大的和最小的職工信息。 #include main()int i,max=0,min=0,year1,year2;struct zg char num10; char name20; char sex3; int year; char zw10;z10;for(i=0;izi.year)year1=zi.year;max=i;i
54、f(year2zi.year) year2=zi.year;min=i;printf(年齡最大者:%s %s %s %d %sn,zmax.num,,zmax.sex,zmax.year,zmax.zw); printf(年齡最小者:%s %s %s %d %sn,zmin.num,,zmin.sex,zmin.year,zmin.zw); 2.試?yán)弥赶蚪Y(jié)構(gòu)體的指針編制一程序,實現(xiàn)輸入三位學(xué)生的學(xué)號、姓名、數(shù)學(xué)期中和期末成績,然后求出每一位學(xué)生的平均成績并輸出成績表按成績由高到底排序輸出三位學(xué)生的相關(guān)信息。#include main()int i=0,j,
55、n3=0,1,2,t;struct student char num10; char name20; int grade1,grade2; float aver; stu3,*p;for(p=stu;pnum,p-name,&p-grade1,&p-grade2); p-aver=(p-grade1+p-grade2)/2.; i+; printf(1)成績表:n);printf(姓名 期中成績 期末成績 平均成績n);for(p=stu;pname,p-grade1,p-grade2,p-aver);for(i=0;i3;i+)for(j=i;j3;j+) if(stui.averstuj.
56、aver) t=ni;ni=nj;nj=t;printf(2)成績排序:n);printf(學(xué)號 姓名 期中成績 期末成績 平均成績n);for(i=0;i3;i+)printf(%4s%8s%10d%10d%10.2fn,stuni.num,,stuni.grade1,stuni.grade2,stuni.aver);3.有一個包括學(xué)生學(xué)號、姓名和三門課成績的結(jié)構(gòu)變量,要求在主函數(shù)中對該變量賦值,在另一個函數(shù)中將其值打印出來。#include struct student char num10; char name20; int grade1,grade2,grade3;
57、 stu;main()void p();printf(請輸入學(xué)生的學(xué)號、姓名、成績1、成績2、成績3:);scanf(%s%s%d%d%d,stu.num,,&stu.grade1,&stu.grade2,&stu.grade3); p();void p()printf(學(xué)號 姓名 成績1 成績2 成績3n);printf(%4s%7s%7d%7d%7dn,stu.num,,stu.grade1,stu.grade2,stu.grade3);實驗十三1.定義一個函數(shù),求2005000之間滿足“用4除余1,用5除余3,用7除余4”的數(shù),且一行打印6個。#inclu
58、de void f(int n);main()int n;for(n=200;n=5000;n+)f(n);void f(int n)static int p=0,m=0;if(n%4=1 & n%5=3 & n%7=4) p+; printf(%6d,n); m=1; else m=0;if(p%6=0&m=1)printf(n);2.編寫函數(shù)isprime( ),用來判斷一個整形數(shù)a是否為素數(shù),若是素數(shù),函數(shù)返回1,否則返回0。#include int isprime(int a);main()int a,n=0;printf(“a=”);scanf(“%d”,&a);if(a0)n=is
59、prime(a);if(n=1)printf(“%d是素數(shù)”,a);else printf(“%d不是素數(shù)”,a);int isprime(int a)int m;for(m=2;ma;m+)if(a%m=0)return 0;return 1;3.在主函數(shù)main()中已有變量定義和函數(shù)調(diào)用語句:“int a=1,b= -5,c; c=fun (a ,,b)”; fun函數(shù)的作用是計算兩個數(shù)之差的絕對值,并將差值返回調(diào)用函數(shù)。請你:(1) 編寫fun函數(shù)。 fun(int x , int y) (2) 寫出這個主函數(shù)main()#include int fun(int x,int y);ma
60、in()int a=1,b=-5,c;c=fun(a,b);printf(“c=%dn”,c);int fun(int x,int y)if(xy)return x-y;else return y-x;4.編寫函數(shù),其功能是刪除字符串s中的所有數(shù)字字符。解一:用外部數(shù)組編程#include char s20;void del();main()printf(“請輸入一個字符串:”);gets(s);del();puts(s);void del()int i,j;for(i=0;si!=0;i+)if(si=0&si=9)for(j=i;sj!=0;j+)sj=sj+1; i-;解二:用指針作參數(shù)
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東碧桂園職業(yè)學(xué)院《視頻編輯技巧》2023-2024學(xué)年第一學(xué)期期末試卷
- 共青科技職業(yè)學(xué)院《內(nèi)科護理學(xué)實訓(xùn)一》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛南醫(yī)學(xué)院《制造工程訓(xùn)練D》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛南衛(wèi)生健康職業(yè)學(xué)院《醫(yī)學(xué)綜合2(臨床綜合技能)》2023-2024學(xué)年第一學(xué)期期末試卷
- 《夾層玻璃中間膜》課件
- 七年級語文上冊單元清六新人教版
- 三年級科學(xué)上冊第三單元天氣與我們的生活第十六課樹葉落了教案青島版
- 汛期和夏季安全培訓(xùn)課件
- 防止兒童丟失安全課件
- 安全班隊會課件
- 2023-2024學(xué)年浙江省杭州市西湖區(qū)五年級(上)期末數(shù)學(xué)試卷
- 五年級上冊數(shù)學(xué)計算題大全
- 系統(tǒng)解剖學(xué)(南方醫(yī)科大學(xué))智慧樹知到期末考試答案章節(jié)答案2024年南方醫(yī)科大學(xué)
- 《生物質(zhì)熱電聯(lián)產(chǎn)工程設(shè)計規(guī)范》
- 科研倫理與學(xué)術(shù)規(guī)范期末考試
- 2022公務(wù)員錄用體檢操作手冊(試行)
- 最新VTE指南解讀(靜脈血栓栓塞癥的臨床護理指南解讀)
- 噴嘴壓力計算表及選型
- 深化校企合作協(xié)同育人的實踐案例
- 雙淘汰制(16隊)對陣圖
- CR和AVE計算表[共8頁]
評論
0/150
提交評論