您好,欢迎来到尔游网。
搜索
您的当前位置:首页C语言期末复习资料

C语言期末复习资料

来源:尔游网
1、编程题

编写一个程序,从3个红球,5个白球,6个黑球中任意取出8个球,且其中必须有黑球,输出所有可能的方案。(10分) #include int main(void) {

int red,white,black; for(red=0;red<=3;red++)

for(white=0;white<=5;white++) for(black=1;black<=6;black++) if(red+white+black==8)

printf(\"红球=%d,白球=%d,黑球=%d\\n\return 0; }

2、编程题

要将“china”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“a”后面第4个字母是“e”,用“e”代替“a”。因此,“china”应译为“glmre”。请编一程序,用赋初值的方法使c1、c2、c3、c4、c5五个变量的值分别为„c‟、„h‟、„i‟、„n‟、„a‟,经过运算,使c1、c2、c3、c4、c5分别变为„g‟、„l‟、„m‟、„r‟、„e‟,并输出。(10分) #include int main(void) { char c1='C',c2='h',c3='i',c4='n',c5='a'; c1=c1+4; c2=c2+4; c3=c3+4; c4=c4+4; c5=c5+4; printf(\"%c%c%c%c%c\\n\ return 0; }

3、编程题

输入两个正整数m和n,求其最大公约数和最小公倍数,要求将N-S流程图画出来。 (10+5分)

#include

int gbs(int,int);//计算公倍数函数声明 int gys(int,int);//计算公约数函数声明 int main(void) { int m,n; printf(\"input two number:\"); scanf(\"%d,%d\ printf(\"gys=%d,gbs=%d\\n\ return 0;

}

int gys(intm,int n)//公约数函数定义 { int r; while((r=m%n)!=0) { m=n; n=r; } return n; }

int gbs(intm,int n)//公倍数函数定义 { return m*n/gys(m,n); }

4、编程题

设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。(10分) #include #define PI 3.14 int main(void) { double r=0,h=0,cl,cs,cbs,cbv,cv; scanf(\"%lf,%lf\型数据的输入一定用lf,用f则结果出错 cl=2*PI*r; cs=PI*r*r; cbs=4*PI*r; cbv=4/3*PI*r*r*r; cv=PI*r*r*h; printf(\"cl=%7.f,cs=%7.2f,cbs=%7.2f,cbv=%7.2f,cv=%7.2f\\n\ return 0; }

5、编程题

编写一个程序,求出1~100之间所有每位数的乘积小于每位数的和的数。例如:13满足1*3<1+3.

#include int main(void) {

inti,m,n;

for(i=10;i<100;i++) {

m=i/10; n=i%10; if(m*nprintf(\"%d\\n\ }

return 0; }

6、编程题

一个3×20的整数数组,要求输出该数组中的最小值,并将其行号和列号输出。要求将N-S流程图画出来。(10+5分) #include int main(void) {

int a[3][20],min=0,i=0,j=0,l,s; for(i=0;i<3;i++)

for(j=0;j<20;j++)

scanf(\"%d\ min=a[0][0]; for(i=0;i<3;i++)

for(j=0;j<20;j++) {

if(a[i][j]min=a[i][j]; l=i; s=j; } }

printf(\"min=%d,line=%d,row=%d\\n\ return 0; }

7、编程题(10分)

1. 给一个不多于5位的正整数,要求:(1)求出它是几位数;(2)分别打印出每一位数字; #include int main(void) {

int n4,n3,n2,n1,n0,n; scanf(\"%d\n4=n/10000;

n3=(n-n4*10000)/1000;

n2=(n-n4*10000-n3*1000)/100;

n1=(n-n4*10000-n3*1000-n2*100)/10; n0=n%10; if(n4!=0) {

printf(\"The number is 5 bits,every number is%d\%d\%d\%d\%d\\n\}

else if(n3!=0) {

printf(\"The number is 4 bits,every number is %d\%d\%d\%d\\n\}

else if(n2!=0) { printf(\"The number is 3 bits,every number is %d\%d\%d\\n\}

else if(n1!=0) { printf(\"The number is 2 bits,every number is %d\%d\\n\} else {

printf(\"The number is 1 bits,every number is %d\\n\}

return 0; }

8、编程题(10+5分)

打印出以下的杨辉三角形(要求打印出10行)。(10+5分) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ……………… #include int main(void) { int a[10][10],i,j; for(i=0;i<10;i++) for(j=0;j<=i;j++) { if(j==0||j==i) a[i][j]=1; else a[i][j]=a[i-1][j-1]+a[i-1][j]; printf(\"%5d\ if(i==j) printf(\"\\n\"); } return 0; }

9、编程题 (10分)

x (x1) 有一函数:y2x1 (1x10)写一程序,输入x,输出y值。

 3x11 (10x) #include int main(void) { doublex,y; scanf(\"%lf\ if(x<1) y=x; else if(x<10) y=2*x-1; else y=3*x-11; printf(\"y=%f\ return 0; }

10、编程题(10+5分)

用筛法求100之内的素数。要求画出N-S流程图 #include int main(void) { int a[100],i,j,count=0; for(i=0;i<100;i++) a[i]=i+1; for(i=1;i<100-1;i++) { if(a[i]!=0) { for(j=i+1;j<100;j++) { if(a[j]!=0) if(a[j]%a[i]==0) a[j]=0; } } } a[0]=0; for(i=0;i<100;i++) { if(a[i]!=0) {

printf(\"%-5d\ count++; if(count%10==0) putchar('\\n'); } } putchar('\\n'); return 0; }

11、编程题(10分) 有一分数序列

2/1,3/2,5/3,8/5,13/8,21/13,… 求出这个数列的前20项之和。

#include int main(void) { doublei=1,j=1,t,temp,sum=0; int k=1; for(k=1;k<=20;k++) { t=1+i/j; sum=t+sum; temp=j; j=i+j; i=temp; printf(\"%7.2f\ } printf(\"\\nsum=%7.2f\ return 0; }

12、编程题(10+5分) 输入一行字符(80个字符),分别统计出其中英文字母、空格、数字和其它字符的个数。要求画出N-S流

#include

int ch=0,dig=0,sp=0,oth=0; int main(void) {

char str[81];

void countchar(char str[]); gets(str);

countchar(str);

printf(\"char=%d,digital=%d,space=%d,other=%d\\n\}

void countchar(char str[]) {

char c; int i=0;

while((c=str[i])!='\\0') {

if(c>='a'&&c<='z'||c>='A'&&c<='Z') ch++;

else if(c>='0'&&c<='9') dig++;

else if(c==' ') sp++; else

oth++; i++; } }

13、编程题 (10分)

求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数。要求输出结果5个一行。

#include int main(void) { int n,count=0; for(n=1;n<=1000;n++) { if((n%7==0||n%11==0)&&n%77!=0) { count++; if(count%5==1) printf(\"\\n\"); printf(\"%-5d\ } } return 0; }

14、编程题 (10分)

写一函数,使给定的一个二维数组(3×3)转置,即行列互换。 #include

void lexr(int a[][3],int b[][3]);

int main(void) {

int a[3][3],b[3][3],i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) {

scanf(\"%d\printf(\"%-5d\if(j==2) printf(\"\\n\"); } lexr(a,b); printf(\"\\n\"); for(i=0;i<3;i++) for(j=0;j<3;j++) {

printf(\"%-5d\if(j==2) printf(\"\\n\"); }

return 0; }

void lexr(int a[][3],int b[][3]) {

int i,j;

for(i=0;i<3;i++) for(j=0;j<3;j++) b[i][j]=a[j][i]; }

15、编程题(10+5分)

用选择法对10个整数按由小到大排序。要求画出N-S流程图。 #include int main(void) { int a[10],i; void sel_sort(int a[]); for(i=0;i<10;i++) scanf(\"%d\ sel_sort(a); for(i=0;i<10;i++) printf(\"%-5d\ return 0; }

void sel_sort(int a[])

{ int i,j,t; for(i=0;i<9;i++) for(j=i+1;j<10;j++) { if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } } }

16、编程题(10分)

计算1到10之间奇数之和及偶数之和。 #include int main(void) { int i,j,sumj=0,sumo=0; for(i=1;i<=9;i=i+2) { sumj=i+sumj; j=i+1; sumo=sumo+j; } printf(\"sumj=%-5d,sumo=%-5d\ return 0; }

17、编程题(10分)

写一函数,将两个字符串连接,不可以直接用strcat()函数。 #include #include

void stringcat(char *p1,char *p2); int main(void) {

char str1[80],str2[40]; gets(str1); gets(str2);

stringcat(str1,str2); puts(str1); return 0; }

void stringcat(char *p1,char *p2)

{

p1+=strlen(p1);

while((*p1++=*p2++)!='\\0'); }

18、编程题(10+5分)

打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=13+53+33。要求画出N-S流程图。 #include int main(void) { int n,i,j,k; for(n=100;n<=999;n++) { i=n/100; j=(n-i*100)/10; k=n%10; if(n==i*i*i+j*j*j+k*k*k) printf(\"%d=%d^3+%d^3+%d^3\\n\ } return 0; }

19、编程题 (15分)

编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。要求画出N-S流程图。 #include

int ch=0,dig=0,sp=0,oth=0; int main(void) { char har str[81]; void countchar(char str[]); gets(str); countchar(str); printf(\"char=%d,digital=%d,space=%d,other=%d\\n\}

void countchar(char str[]) { char c; int i=0; while((c=str[i])!='\\0') { if(c>='a'&&c<='z'||c>='A'&&c<='Z')

ch++; else if(c>='0'&&c<='9') dig++; else if(c==' ') sp++; else oth++; i++; } }

20、编程题(10分)

要求在字符串中所有数字字符前加一个$字符。

例如,输入:A1B23CD45,则输出为:A$1B$2$3CD$4$5。 #include int main(void) { char str1[40]={'\\0'},str2[80]={'\\0'},c; int i=0,count=0; gets(str1); while((c=str1[i])!='\\0') { if(c>='0'&&c<='9') str2[i+count++]='$'; str2[i+count]=c; i++; } puts(str2); return 0; }

21、编程题(10+5分)

要求用数组实现求fibonacci数列40个数,并且每输出5个数换行。这个数列有如下特点:第1,2两个数为1,1。从第3个数开始,该数是其前面两个数之和。即: f1=1 (n=1) f2=1 (n=2) fn=fn-1+fn-2 (n≥3) 要求画出N-S流程图。 #include int main(void) {

int f[40]={1,1},i; for(i=2;i<40;i++) f[i]=f[i-1]+f[i-2]; for(i=0;i<40;i++) {

printf(\"%-10d\ if(i%5==4) putchar('\\n'); }

return 0; }

22、编程题(10分)

从字符串中删除指定的字符。同一字母的大小写按不同字符处理。

例如:若程序执行时,输入字符串为:turbo c and Borland c++,从键盘上输入字符:n,则输出后变为:turbo c ad borladc++,如果输入的字符串不存在,则字符串照原样输出。 #include int main(void) { char str[80],copy[80]={'\\0'}; chardelc,c; inti=0,j=0; gets(str); scanf(\"%c\ while((c=str[i++])!='\\0') { if(c!=delc) copy[j++]=c; } puts(copy); return 0; }

23、编程题(15分)

写一函数,用“起泡法”对输入的10个字符按由小到大顺序排列,在主函数中调用。 #include #include

void bol_sort(char str[]); int main(void) { charstr[80]; gets(str); bol_sort(str); puts(str); return 0; }

void bol_sort(char str[]) { char c; int len;

inti=0,j=0; len=strlen(str); for(i=0;istr[j+1]) { c=str[j]; str[j]=str[j+1]; str[j+1]=c; } }

24、编程题(15分)

写一个判素数的函数,在主函数输入一个整数,输出是否素数的信息。 #include #include int checkprime(int); int main(void) { int flag,n; scanf(\"%d\ flag=checkprime(n); if(flag==0) printf(\"%-5d is prime.\\n\ else printf(\"%-5d is not prime.\\n\ return 0; }

int checkprime(int n) { int i,f=0; for(i=2;i<=sqrt(n);i++) if(n%i==0) { f=1; break; } return f; }

25、编程题(15分)

有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。 #include int main(void)

{ char str[3][80],c; int i,j=0,enb=0,ens=0,dig=0,sp=0,oth=0; for(i=0;i<3;i++) gets(str[i]); for(i=0;i<3;i++) puts(str[i]); for(i=0;i<3;i++) { j=0; while((c=str[i][j])!='\\0') { if(c>='A'&&c<='Z') enb++; else if(c>='a'&&c<='z') ens++; else if(c>='0'&&c<='9') dig++; else if(c==' ') sp++; else oth++; j++; } } printf(\"enb=%d,ens=%d,dig=%d,sp=%d,oth=%d\\n\ return 0; }

26、编程题(10分)

一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完数。 #include int main(void) { int n,i,sum; for(n=1;n<=1000;n++) { sum=0; for(i=1;iif(n==sum) printf(\"%d is perfect.\\n\ } return 0; }

27、编程题(15分)

写一函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。 #include #include void backstr(char str[]); int main(void) { charstr[81]; gets(str); backstr(str); puts(str); return 0; }

void backstr(char str[]) { char c; int i,j; for(i=0,j=strlen(str)-1;i28、编程题(10分) 求一个3×3矩阵主对角线元素之和。 #include int main(void) { int a[3][3]; inti,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(\"%d\ for(i=0;i<3;i++) { sum=sum+a[i][i]; } printf(\"sum=%d\\n\

return 0; }

29、编程题(10分)

将一个数组中的值按逆序重新存放(数组长度为5)。例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。

#include int main(void) { int a[5],i,j,t; for(i=0;i<5;i++) scanf(\"%d\ for(i=0,j=4;i30、编程题(10分)

输入三个整数x,y,z,请把这三个数由小到大输出。 #include int main(void) {

int x,y,z,t;

scanf(\"%d,%d,%d\if(x>y) {

t=x; x=y; y=t; } if(x>z) {

t=x; x=z; z=t; }

if(y>z) {

t=y;

y=z; z=t;

}

printf(\"%d\%d\%d\\return 0; }

31、编程题(10分)

计算和输出下列级数的和。

s=1/(1×2)+1/(2×3)+…+1/(n×(n+1))

例如,当n=10时,函数值为0.909091。 #include int main(void) { double sum=0; inti,n; scanf(\"%d\ for(i=1;i<=n;i++) { sum=sum+1.0/((i+1)*i); } printf(\"%f\\n\ return 0; }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- axer.cn 版权所有 湘ICP备2023022495号-12

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务