c语言编程大题(5篇)

时间:2019-05-11 22:55:28下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《c语言编程大题》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《c语言编程大题》。

第一篇:c语言编程大题

三、编程题

1.输入一个半径值,分别计算圆周长、圆面积和球的体积。要求使用符号常量定义圆周率。#include int main(){ printf(“计算圆周长面积求面积n”);floatr,c,s,v;scanf(“%f”,&r);# define PI 3.14159265 c=2*PI*r;s=4*PI*r*r;v=4/3*PI*r*r*r;printf(“周长是%.2fn”,c);printf(“表面积是%.2fn”,s);printf(“体积是%.2fn”,v);return 0;} 2.假设今天是星期三,编程求20天之后是星期几? #include int main(){ printf(“今天是星期三,20天后是星期几?n”);int i;i=23%7;printf(“20天后是星期%dn”,i);return 0;} 3.从键盘输入一个字符,然后将其按字符和整数这两种形式输出。#include int main(){ printf(“输入一个字符n”);char i;scanf(“%c”,&i);printf(“整数形式是%dn”,i);printf(“字母形式是%cn”,i);return 0;} 4.输入一个大写英文字母,将它转化为小写输出。#include int main(){ printf(“请输入一个大写英文字母n”);charch;scanf(“%c”,&ch);printf(“%cn”,ch+32);return 0;} 5.求一元二次方程ax^2+bx+c=0方程的两个实根。a、b、c由键盘输入。(默认b*b-4*a*c>=0)#include #include int main(){ printf(“求两个实数根n”);float x1,x2,a,b,c;scanf(“%f%f%f”,&a,&b,&c);x1=((-b)+sqrt(b*b-4*a*c))/2;x2=((-b)-sqrt(b*b-4*a*c))/2;printf(“%.2fn”,x1);printf(“%.2fn”,x2);return 0;} 6.输入长方形的长和宽,编程求该长方形的周长和面积 #include int main(){ printf(“输入长和宽n”);inta,b,c,s;scanf(“%d%d”,&a,&b);c=2*(a+b);s=a*b;printf(“周长是%dn”,c);printf(“面积是%dn”,s);return 0;} 7.要将“China”译成密码,译码规律是:用原来字母后面的第5个字母代替原来的字母。例如,字母“A”后面第5个字母是“F”,用“F”代替“A”。因此,“China”应译为“Hmnsf”。请编写程序,用赋初值的方法使c1、c2、c3、c4、c5 5个变量的值分别为‘C’、‘h’、‘i’、‘n’、‘a’,经过运算,使c1、c2、c3、c4、c5分别变为‘H’、‘m’、‘n’、‘s’、‘f’并输出。

#include int main(){ printf(“China到Hmnstn”);char a[5]={'C','h','i','n','a'};for(int i=0;i<=5;i++)a[i]=a[i]+5;for(int j=0;j<=5;j++)printf(“%c”,a[j]);printf(“n”);return 0;} 8.有人用温度计测量出用华氏法表示的温度,现输入华氏温度f,要求把它转换为以摄氏法表示的温度c并输出。(c=5/9(f-32))#include int main(){ printf(“把华氏温度转换为摄氏温度n”);printf(“请输入华氏温度:n”);floati,j;scanf(“%f”,&i);j=5*(i-32)/9;printf(“%.1fn”,j);return 0;} 9.编写程序,输入两个实数,按代数值由大到小的顺序输出这两个实数。#include int main(){ printf(“将两个实数从大到小排列n”);floati,j;scanf(“%f%f”,&i,&j);if(i>j)printf(“输出%f %fn”,i,j);else printf(“输出%f %fn”,j,i);return 0;} 10.编写程序,从键盘输入两个整数,输出其中较小的数。#include int main(){ printf(“输出较小的数n”);inti,j;scanf(“%d%d”,&i,&j);if(i int main(){ printf(“输入一个不多于5位数的正整数n”);int i;scanf(“%d”,&i);if(i>0&&i<10)printf(“%d是一位数n”,i);if(i>=10&&i<100)printf(“%d是二位数n”,i);if(i>=100&&i<1000)printf(“%d是三位数n”,i);if(i>=1000&&i<10000)printf(“%d是四位数n”,i);return 0;} 12.编写程序,不使用系统提供的数学函数,编写程序求一个实数的绝对值。#include int main(){ printf(“求一个实数的绝对值n”);int i;scanf(“%d”,&i);if(i>=0)printf(“绝对值是%dn”,i);if(i<0)printf(“绝对值是%dn”,-i);return 0;} 13.编写程序,编写程序实现如下分段函数。当x<-5时,f(x)=|x|+5;当-5≤x≤5时,f(x)=x*x;当x>5时,f(x)=6x-10。(x定义成实型数据)#include int main(){ int i;scanf(“%d”,&i);if(i<-5)printf(“%dn”,-i+5);if(-5<=i&&i<=5)printf(“%dn”,i*i);else printf(“%dn”,6*i-10);return 0;} 14.编写程序,输入2015年的一个月份,输出该月有多少天。(使用switch语句实现)#include int main(){ printf(“输入月份n”);intmonth,day;scanf(“%d”,&month);switch(month){ case 2: day=28;printf(“%dn”,day);break;case 1: case 3: case 5: case 7: case 8: case 10: case 12: day=31;printf(“%dn”,day);break;case 4: case 6: case 9: case 11: day=30;printf(“%dn”,day);break;} return 0;} 15.编写程序,判断某一年是否是闰年。#include int main(){ printf(“判断某一年是否为闰年n”);int i;scanf(“%d”,&i);if(i%4==0)printf(“%d是闰年n”,i);if(i%4!=0)printf(“%d是平年n”,i);return 0;} 16.编写程序,编写程序,根据输入的学生成绩输出相应的等级。90分以上(包括90分)为A等,80~89分为B等,70~79分为C等,60~69分为D等,60分以下为E等。#include int main(){ printf(“求学生成绩相应的等级n”);int i;scanf(“%d”,&i);if(i>=90)printf(“%d是An”,i);else if(i<90&&i>=80)printf(“%d是Bn”,i);else if(i<80&&i>=70)printf(“%d是Cn”,i);else if(i<70&&i>=60)printf(“%d是Dn”,i);else printf(“%d是En”,i);return 0;} 17编写程序,输入一个百分制成绩,若大于等于60,则输出“恭喜!您的成绩通过了!”,若小于60,则输出“抱歉!您的成绩未通过!”(要求成绩只能是整数)#include int main(){ printf(“请输入您的成绩n”);int i;scanf(“%d”,&i);if(i>=60)printf(“您通过了n”);else printf(“您没通过n”);return 0;} 18.编写程序,输入3个整数x、y、z,输出其中最小值。#include int main(){ printf(“输出最小值n”);int x,y,z,min1,min;scanf(“%d%d%d”,&x,&y,&z);min1=x

(s=(a+b+c)/2,三角形面积area=sqrt(s(s-a)(s-b)(s-c)))#include #include int main(){ printf(“判断能否构成三角形若能求面积n”);floata,b,c,d,s;scanf(“%f%f%f”,&a,&b,&c);d=(a+b+c)/2;if(a>=c+b||b>=a+c||c>=a+b)printf(“不能构成三角形n”);else { s=sqrt(d*(d-a)*(d-b)*(d-c));printf(“面积是%.2fn”,s);} return 0;} 20.编写程序,试编程判断输入的正整数是否既是5又是7的整倍数。若是,则输出yes,否则输出no。

#include int main(){ printf(“判断一个正整数是否既是5又是7的倍数n”);int i;scanf(“%d”,&i);if(i%35==0)

printf(“yesn”);else

printf(“non”);return 0;} 21.编写程序,编程实现以下功能:读入两个运算数(data1和data2)及一个运算符(op),计算表达式data1 op data2的值,其中op可为+,?,*,(/执行除法运算时假设data2不为0,用switch语句实现)。#include int main(){ char op;float data1,data2;printf(“请输入两个数字n”);scanf(“%f%c%f”,&data1,&op,&data2);switch(op){ case'+':printf(“%f+%f=%.2fn”,data1,data2,data1+data2);break;case'-':printf(“%f-%f=%.2fn”,data1,data2,data1-data2);break;case'*':printf(“%f*%f=%.2fn”,data1,data2,data1*data2);break;case'/':printf(“%f/%f=%.2fn”,data1,data2,data1/data2);break;} return 0;} 22.编写程序,编写程序,输入任意一个1~7之间的整数,将他们转换成对应的表示星期几的英文单词。例如:1转换成Monday,7转换成Sunday。(使用switch语句实现)#include int main(){ printf(“请输入1至7之间任意整数n”);int i;scanf(“%d”,&i);switch(i){ case 1:printf(“Mondayn”);break;case 2:printf(“Tuesdayn”);break;case 3:printf(“Wednesdayn”);break;case 4:printf(“Thursdayn”);break;case 5:printf(“Fridayn”);break;case 6:printf(“Saturdayn”);break;case 7:printf(“Sundayn”);break;} return 0;} 23.输出小写字母的ascii码对照表。#include int main(){ printf(“输出小写字母的ascii码n”);charch;ch='a';for(int i=0;i<=25;i++)printf(“%c:%dt”,ch+i,ch+i);printf(“n”);return 0;} 24.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。#include main(){ int a=0,b=0,c=0,d=0,i=0;char s[10];printf(“请输入一行不超过十个字的字符串:n”);gets(s);while(i<10){ if(s[i]>='0'&&s[i]<='9'){ a++;} else if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')){ b++;}

else if(s[i]==' '){ c++;}

else { d++;} i++;} printf(“数字的个数是%dn”,a);printf(“字母的个数是%dn”,b);printf(“空格的个数是%dn”,c);printf(“其他符号的个数是%dn”,d);return 0;} 25.输出图形

$

$$$

$$$$$

$$$$$$$ #include #include int main(){ for(int i=0;i<=3;i++){ for(int j=1;j<=7;j++){ if(j>=fabs(4-i)&&j<=fabs(4+i))printf(“$”);else printf(“ ”);} printf(“n”);} return 0;} 26.求s=1+(1+2)+(1+2+3)+„ +(1+2+3+„+n),要求n从键盘输入。#include main(){

int sum=0,n,i,a=1;printf(“计算1+(1+2)+(1+2+3)+„„(1+2+3+n)=?n”);scanf(“%d”,&n);while(a<=n){ i=(1+a)*a/2;sum=sum+i;a++;} printf(“输出sum=%dn”,sum);return 0;}

27.计算10!#include int main(){ int i=1,a=1;for(i=1;i<=10;i++)a=a*i;printf(“%dn”,a);return 0;} 28.输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为153=1^3+5^3+3^3。#include int main(){ printf(“输出所有的水下花数n”);for(int i=1;i<=9;i++){ for(int j=0;j<=9;j++){ for(int k=0;k<=9;k++){ if(100*i+10*j+k==i*i*i+j*j*j+k*k*k)printf(“%d%d%d ”,i,j,k);} } } printf(“n”);return 0;} 29.鸡兔同笼,上数共有35个头,下有94只脚,鸡、兔各有几只? #include int main(){ for(int x=0;x<=35;x++){ for(int y=0;y<=35;y++){ if((x+y==35)&&(2*x+4*y==94))printf(“鸡有%d只,兔子有%d只n”,x,y);} } return 0;} 30.编程找10个数中的最大数以及该数在数组中的位置。#include int main(){ printf(“找10个数中最大数极其所在位置n”);int a[10],max;for(int i=0;i<=9;i++)scanf(“%d”,&a[i]);max=a[0];for(int j=1,int k=0;j<=9;j++){ if(max int main(){ printf(“找10个数中最小数极其所在位置n”);int a[10],min;for(int i=0;i<=9;i++)scanf(“%d”,&a[i]);min=a[0];for(int j=1,int k=0;j<=9;j++){ if(min>a[j]){ min=a[j];k=j+1;} } printf(“第%d位n”,k);printf(“最小是%dn”,min);return 0;} 32.编程将一个数组中的元素按逆序存放。#include int main(){ printf(“一个数组按照逆序存放n”);int a[10],b[10];for(int i=0;i<=9;i++)scanf(“%d”,&a[i]);for(int j=0;j<=9;j++){ b[j]=a[9-j];printf(“%d ”,b[j]);} printf(“n”);return 0;} 33.编程计算Fibonacci数列的前50项,并把结果存放在一个数组中。(Fibonacci数列前两项的值是1。从第3项开始,其值为前两项之和。)#include intmain(){ int a[50]={0,1};for(int i=2;i<50;i++){ a[i]=a[i-1]+a[i-2];} for(i=0;i<50;i++){ printf(“%ft”,a[i]);} printf(“n”);return 0;} 34.编写程序,将两个字符串连接起来(不使用strcat函数)。#include int main(){ int i=0,j=0;printf(“将两个字符串连接起来n”);char ch1[100],ch2[100];printf(“输入第一个字符串:”);gets(ch1);printf(“输入第二个字符串:”);gets(ch2);while(ch1[i]!='')i++;while(ch1[j]!='')j++;for(int k=i;k<=i+j-1;k++){ ch1[k]=ch2[k-i];} printf(“连接后为:”);for(int l=0;l<=i+j-1;l++)printf(“%c”,ch1[l]);printf(“n”);return 0;} 35.有一个2行3列的矩阵,编程找出值最小的元素的值以及它所在的行列号。#include int main(){ printf(“找到最小元素的值极其位置n”);int a[2][3],min,x,y;for(int i=0;i<=1;i++){ for(int j=0;j<=2;j++)scanf(“%d”,&a[i][j]);} min=a[0][0];for(int m=0;m<=1;m++){ for(int l=0;l<=2;l++){ if(min>a[m][l]){ min=a[m][l];x=m+1;y=l+1;} } } printf(“%dn”,min);printf(“第%d行,第%d列n”,x,y);return 0;} 36.一个学习小组有3个人,每人有4门课的成绩。计算每个人的平均成绩。#include int main(){ printf(“分别计算每个人的平均数n”);float a[3][4],v[3],s=0;for(int m=0;m<=2;m++){ for(int l=0;l<=3;l++){ scanf(“%f”,&a[m][l]);

s=s+a[m][l];} v[m]=s/4;s=0;} printf(“第一个人平均分是%.2fn第二个人平均分是%.2fn第三个人平均分是%.2fn”,v[0],v[1],v[2]);return 0;} 37.编程输出杨辉三角中的前10行。1 1 1 1 2 1 1 3 3 1 1 4 6 4 1......#include int main(){ printf(“n”);int a[10][10]={{1},{1,1}},i,j;for(i=0;i<10;i++)a[i][0]=1;for(i=2;i<10;i++){ for(j=1;j<10;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];} for(i=0;i<10;i++){ for(j=0;j<=i;j++){ printf(“%dt”,a[i][j]);} printf(“n”);} printf(“n”);return 0;} 38.编写一个函数,输入立方体的长、宽、高,输出立方体的体积。#include int V(inti,intj,int k);int main(){ inta,b,c;printf(“输入长方体的长宽高n”);scanf(“%d%d%d”,&a,&b,&c);printf(“体积是%dn”,V(a,b,c));return 0;} int V(inti,intj,int k){ int v=i*j*k;return v;} 39.输入两个整数,要求输出其中值较大者。用函数实现找大数。#include int MAX(inti,int j);int main(){ inta,b;printf(“输入两个整数n”);scanf(“%d%d”,&a,&b);printf(“最大数是%dn”,MAX(a,b));return 0;} int MAX(inti,int j){ int v=i>j?i:j;return v;} 40.编写一个函数,用递归方法求n!,调用该函数求m!/(n!*(m-n)!)的值并输出。#include float X(int n);int main(){ intm,n;scanf(“%d%d”,&m,&n);printf(“result is %.3fn”,X(m)/X(n)/X(m-n));return 0;} float X(int n){ int i=1,a=1;for(i=1;i<=n;i++)a=a*i;return a;} 41.编写一个函数,实现用选择法对数组中10个整数按由小到大排序。#include intpailie(int a[10],int n);int main(){ for(int i=0;i<=9;i++)scanf(“%d”,&a[i]);

return 0;} intpailie(int a[10],int n){(不会)} 42.编写一个函数,求一个3×4的矩阵所有元素之和。

43.编写求圆的面积的函数,并调用该函数求出圆的面积。#include float S(int r);int main(){ printf(“计算圆的面积n”);int i;scanf(“%d”,&i);printf(“面积是%.2fn”,S(i));return 0;} float S(int r){ float s;#define PI 3.14159265 s=r*r*PI;return s;} 44.编写一个函数,该函数的功能是判断一个整数是不是素数(所谓素数是指除了1和它本身以外,不能被任何整数整除的数),在main函数中输入一个整数,调用该函数,判断该数是不是素数,若是则输出“yes”,否则输出“no”。#include int j();int main(){ printf(“请输入一个数:n”);j();return 0;} int j(){ int n;scanf(“%d”,&n);if(n==1&&n==2)printf(“%d是素数n”,n);for(int i=2;i<=n;i++){ if(n%i==0)break;} if(i int RUN(int i);int main(){ printf(“输出2000至2100之间的闰年:n”);for(int a=2000;a<=2100;a++){ RUN(a);} printf(“n”);return 0;} int RUN(int i){ int j;if(i%4==0)printf(“%d ”,i);return 0;} 46.编写两函数分别求两个个整数的最大公约数和最小公倍数,用主函数调用两个函数并输出结果,两个整数由键盘输入。#include int MAX(inta,int b);int MIN(inta,int b);int main(){ printf(“请输入两个数求最大公约数和最小公倍数n”);intx,y;scanf(“%d%d”,&x,&y);printf(“最大公约数是%d,最小公倍数是%dn”,MAX(x,y),MIN(x,y));return 0;} int MAX(inta,int b){ for(int i=(a=1;i--){

if(a%i==0&&b%i==0)

break;} return i;} int MIN(inta,int b){ for(int j=(a>b?a:b);j<=a*b;j++){ if(j%a==0&&j%b==0)

break;} return j;} 47.编写判断回文的函数,并调用此函数判定一个字符串是否为回文。(回文字符串是指该字符串从左到右读和从右到左读完全一样。)#include #include int PANDUAN(char b[10]);int main(){ char a[10];gets(a);PANDUAN(a);return 0;} int PANDUAN(char b[]){ int j=strlen(b),i=0;while(b[i]==b[j-1-i]){ i++;} if(i==j)printf(“是回文字符串n”);else printf(“不是回文字符串n”);return 0;} 48.编写一个函数,在一个有序的数列中插入一个数。插入后,数列仍然维持有序。如果有相同的数,要插入在相同的数的后面。#include #include #include int CHARU(int b[100],int n);int main(){ int a[]={1,2,3,4,5,6};int x;printf(“请输入插入数字n”);scanf(“%d”,&x);CHARU(a,x);return 0;} int CHARU(int b[100],int n){ int j=sizeof(b)/sizeof(int),i;printf(“%dn”,j);for(i=0;i<=j;i++){ if(n>=b[i]&&n<=b[i+1]){ for(int k=j+1;k>=i+2;k--)b[k]=b[k-1];b[i+1]=n;} else if(n>=b[j])b[j+1]=n;} for(i=0;i<=j+1;i++)printf(“%d ”,b[i]);printf(“n”);return 0;}(不会)

49.编写一个函数,使给定的一个3×3的二维整型数组转置,即行列互换。#include int ZHIHUAN(int b[3][3]);int main(){ printf(“请输入一个3*3方阵n”);int a[3][3];for(int i=0;i<=2;i++){ for(int j=0;j<=2;j++)

scanf(“%d”,&a[i][j]);} ZHIHUAN(a);return 0;} int ZHIHUAN(int b[3][3]){ int c[3][3],m,n;printf(“转置方阵为:n”);for(m=0;m<=2;m++){ for(n=0;n<=2;n++)c[n][m]=b[m][n];} for(n=0;n<=2;n++){ for(m=0;m<=2;m++)printf(“%d ”,c[n][m]);printf(“n”);}

return 0;}

第二篇:数据结构试题大题编程及参考答案

数据结构考试题参考答案

1、设顺序表L中的数据元素递增有序。试写一算法,将数据元素x插入到顺序表L的适当位置,以保持该表的有序性。

解:存储结构为:

typedef struct

SeqList { DataType *data;

int MaxLen;

int len;}SeqList;算法如下:

void insertLx(SeqList &L, DataType x){ if(L.len==L.maxlen)return;int i=L.len-1;while(i>=0 && x

2、试写一个算法,在带头结点的单链表L的元素x前插入一个结点y。解:存储结构如下: typedef

struct

Lnode {ElemType data;struct Lnode *next;}Lnode, *LinkList;算法如下:

void insert_y_before_x(LinkList L, ElemType x, ElemType y){ Lnode *q, *p=L;

while(p->next && p->next->data!=x)p=p->next;//找x的前驱结点p;if(!p->next)return;// 若不存在结点x,则返回; q=new Lnode;q->data=y;q->next=p->next;p->next=q;}

3、试写一个算法,统计带头指针的单链表L的元素个数。解:存储结构如下: typedef

struct

Lnode {ElemType data;struct Lnode *next;}Lnode, *LinkList;算法如下: int length(LinkList L){ int len=0;Lnode *p=L;while(p){ len++;p=p->next;} return len;} 注:如果单链表是带头结点的,则算法如下: int length(LinkList L){ int len=0;Lnode *p=L->next;;while(p){ len++;p=p->next;} return len;}

4、试写一个算法,在带头结点的单链表L的第k个结点后插入一个结点x。解:

存储结构如下: typedef

struct

Lnode {ElemType data;struct Lnode *next;}Lnode, *LinkList;算法如下:

void insert_after_k(LinkList L, int k, ElemType x){ if(k<0)return;Lnode *q, *p=L;int i=0;while(p && inext;} //找到第k个结点p;if(!p)return;//若不存在第k个结点,则返回;

q=new Lnode;q->data=x;q->next=p->next;p->next=q;} 注:如果是在L的第k个结点前插入一个结点,则找第k-1个结点p,然后插入。5、试写一个算法,在带头结点的单链表L中删除所有的数据元素为x的结点。解:

存储结构如下: typedef

struct

Lnode {ElemType data;struct Lnode *next;}Lnode, *LinkList;算法如下:

void Delete_all_x(LinkList L, Elemtype x){ Lnode *p, *q;p=L;while(p){ if(p->next && p->next->data==x){q=p->next;p->next=q->next;delete q;} else p=p->next;} } 注意:要删除所有的值为x的结点。6、假设一个单循环链表L的数据域为整型,设计一个算法,求该表中所有结点的数据之和。解:

存储结构如下: typedef

struct

Lnode {ElemType data;struct Lnode *next;}Lnode, *LinkList;

假设L带头结点,且L指向头结点,则算法如下: int sum_Of_Data(LinkList L){ int s=0;Lnode *p=L->next;while(p!=L){s+=p->data;p=p->next;} return s;} 假设L不带头结点,且L指向循环链表中任何一个结点,则算法如下: int sum_of_data(LinkList L){ int s=0;Lnode *p=L;if(L){ s+=p->data;p=p->next;while(p!=L){ s+=p->data;p=p->next;} } return s;} 注:以上两种情形,只要给出其中一种情形的解即可。

7、假设二叉树用二叉链表存储,设计一个算法,求二叉树的结点个数。解:存储结构如下:

typedef struct bitnode {ElemType data;struct bitnode *lchild, *rchild;}bitnode, *bitree;算法如下: int nodes(bitree T){ if(!T)return 0;else return(1+nodes(T->lchild)+nodes(T->rchild));} 8、写一个算法,建立二叉树的二叉链表。解:存储结构如下: typedef char ElemType;typedef struct bitnode {ElemType data;struct bitnode *lchild, *rchild;}bitnode, *bitree;算法如下:

void creat_bitree(bitree &T){ //按扩展的先序序列输入结点,输入‘#’表示空。ElemType ch;

cin>>ch;if(ch==’#’)T=0;else { T=new bitnode;T->data=ch;creat_bitree(T->lchuild);creat_bitree(T->rchild);} } 或者写成以下算法:

bitree creat_bitree(void){ //按扩展的先序序列输入结点,输入‘#’表示空。bitree

T;ElemType ch;

cin>>ch;if(ch==’#’)T=0;else { T=new bitnode;T->data=ch;creat_bitree(T->lchuild);creat_bitree(T->rchild);} return T;}

9、假设一棵二叉树的先序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请画出该二叉树,并写出后序序列。解:该二叉树如下:

后序序列为:ACDBGJKIHFE。

10、假设一棵二叉树的层次序列为ABCDEFGHIJ,中序序列为DBGEHJACIF,请画出该二叉树,并写出其先序序列和后序序列。解:该二叉树如下:

先序序列为:ABDEGHJCFI;

后序序列为:DGJHEBIFCA。

11、编写一个递归算法,将用二叉链表表示的二叉树的所有结点的左、右子树交换。解:存储结构如下: typedef char ElemType;typedef struct bitnode {ElemType data;struct bitnode *lchild, *rchild;}bitnode, *bitree;算法如下:

void exchange(bitree &T){if(!T)return;bitree temp;temp=T->lchild;T->lchild=T->rchild;T->rchild=temp;exchange(T->lchild);exchange(T->rchild);}

12、试写出二叉链表表示的二叉树的先序遍历的非递归算法。解:存储结构如下: typedef char ElemType;typedef struct bitnode {ElemType data;struct bitnode *lchild, *rchild;}bitnode, *bitree;算法如下:

void preorder(bitree T){ //先序遍历,当前结点入栈。#define MaxNum 20 bitree stack[MaxNum];int top=0;//指向栈顶的下一位置。bitnode *p;p=T;while(p || top>0){while(p){cout<

data;stack[top++]=p;p=p->lchild;} if(top>0){ p=stack[--top];p=p->rchild;} } cout<

第三篇:c语言大题

1.功能:计算并输出给定整数n的所有因子之和(不包括1与自身)。注意:n的值不大于1000。

例如:n的值为12时,除了1和12外的因子有2、3、4、6,和为15,应输出15 int s=0,i;for(i=2;i

素数并放在aa数组中,该函数返回所求出素数的个数。

int n=0;int i,j;for(i=lim;i<=100;i++){for(j=2;j

于1000的整数)。long y=0;int i;for(i=1;i<=w;i++)if(i%2==1)y+=i;return y;4.功能:能计算从1开始到n的自然数的和,n由键盘输入,并在main()函数中输出。请使用for循环实现

int sum,i;sum =0;for(i=1;i<=n;i++){sum=sum+i;} return(sum);5.功能:编写程序, 使用循环将矩阵(3行3列)各元素值乘2。例如:输入下面的矩阵: 100 200 300 400 500 600 700 800 900 程序输出: 200 400 600 800 1000 1200 1400 1600 1800

int i,j;for(i=0;i < 3;i++)for(j=0;j < 3;j++)array[i][j]=array[i][j]*2;6.功能:把20个随机数存入一个数组,然后输出该数组中的最大值 int i,max=0;for(i=1;i

公式的值:y=1+1/3+1/5+1/7+...+1/(2m+1)例如:若m=9,则应输出:2.133256 double y=1;int i;for(i=1;i<=m;i++){y+=1.0/(2*i+1);} return(y);8.功能:判断m是否为素数。int i,k=1;if(m<=1)k=0;for(i=2;i

所求出素数的个数。int n=0;int i,j;for(i=2;i<=lim;i++){for(j=2;j

为整数),然后输出主对角线元素的平方和。fun()函数的功能为求对角线元素的和。程序中如果用到

循环,必须使用for循环。int sum;int i;sum=0;

for(i=0;i<3;i++)sum=sum+a[i][i]*a[i][i];

return sum;11.功能:求一个给定字符串中的字母的个数。int i,k=0;for(i=0;s[i]!='';i++)if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')k++;return k;12.功能:编写函数fun其功能是:根据整型形参m,计算如下

公式的值:y=1/2!+1/4!+...+1/m!(m是偶数)。double y=0.0;int i,j;double s=1;for(i=2;i<=m;i+=2){ for(j=i-1;j<=i;j++)s=s*j;y=y+1.0/s;} return y;

13、从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出。int min,i;min=x[0];for(i=1;i

在c数的个位和百位上, b数的十位和个位数依次放

在c数的十位和千位上。

例如: 当a=45,b=12,调用该函数后,c=2514。*c=a/10+a%10*100+b/10*10+b%10*1000;15.功能:编写函数判断一个整数m的各位数字之和能否被7整除,可以被7整除则返回1,否则返回0。调用该函数找出 100~200之间满足条件的所有数。int k,s=0;do {s=s+m%10;m=m/10;}while(m!=0);

if(s%7==0)k=1;else k=0;return(k);16.功能:将主函数中输入的字符串反序存放。

例如:输入字符串“abcdefg”,则应输出“gfedcba”。int i,j;char c;for(i=0,j=n-1;i

实现,请给出该函数的定义。int i,min=0;for(i=1;i list[i])min=i;return min;18.功能:编写函数对数组中的数据进行从小到大的排序。-----------------*/

int i,j,t;for(i=0;ia[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}-------------------19.功能:从低位开始取出长整型变量s奇数位上的数,依次构成一个新数放在t中。

例如:当s中的数为:7654321时,t中的数为:7531。long sl=10;t = s % 10;while(s > 0){ s = s/100;t = s%10*sl + t;sl = sl * 10;

20.求一个正整数的各位数字的立方和。int d,k,s=0;4

while(n>0){d=n%10;s+=d*d*d;n/=10;} return s;21.求给定正整数n以内的素数之积。(n<28)long i,k;long s=1;for(i=2;i<=n;i++){for(k=2;k

例如:主函数中给出的矩阵的两条对角线的和为45。int s=0;int i,j;for(i=0;i=0.000001){ e=e+jc;j=1;for(k=1;k<=i;k++)j=j*k;

jc=1.0/j;i++;} 24.请编一个函数: void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。int i,j;for(j=0;j26.功能:从键盘上输入任意实数x,求出其所对应的函数值。z=(x-4)的平方根(x>4)z=x的八次幂(4>x>-4)z=4/(x*(x+1))(-4>x>-10)z=|x|+20(其他)提示:x的八次幂请使用幂函数pow求得,平方根函数是sqrt。float z;if(x>4)z=sqrt(x-4);else if(x>-4)z=pow(x,8);else if(x>-10)z=4/(x*(x+1));else z=fabs(x)+20;return(z);27.功能:从低位开始取出长整型变量s中偶数位上的数,依次 构成一个新数放在t中。

例如:当s中的数为:7654321时,t中的数为:642。long sl=10;s /= 10;t = s % 10;

while(s > 0){ s = s/100;t = s%10*sl + t;sl = sl * 10;28.功能:求一组数中大于平均值的数的个数。

例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函数值为3 int i,k=0;float s=0,ave;for(i=0;iave)k++;return k;29.功能:编写函数fun,求任一整数m的n次方。long int x=1;int i;for(i=1;i<=n;i++)x=x*m;return x;30.功能:根据整型形参m,计算如下公式的值:

y=1/5+1/6+1/7+1/8+1/9+1/10...+1/(m+5)例如:若m=9,则应输出:1.168229 double y=0;int i;for(i=0;i<=m;i++){y+=1.0/(i+5);} return(y);

31.功能:编写函数fun生成一个主对角线元素为1,其他元素都

为0的3*3的二维数组。for(i=0;i<3;i++)for(j=0;j<3;j++)if(i==j)arr[i][j]=1;else arr[i][j]=0;32.功能:调用函数fun判断一个三位数是否“水仙花数”。在main函数中从键盘

输入一个三位数,并输出判断结果。请编写fun函数。

说明:所谓“水仙花数”是指一3位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153=1+125+27。int bw,sw,gw;bw=n/100;sw=(n-bw*100)/10;gw=n%10;

if(n==bw*bw*bw+sw*sw*sw+gw*gw*gw)return 1;else return 0;

33.根据整型形参m,计算如下公式的值:y=1/2+1/4+1/6+...+1/2m。程序中如果用到循环,必须使用for循环。例如:若m=9,则应输出:1.414484 double y=0;int i;for(i=1;i<=m;i++){y+=1.0/(2*i);} return(y);34.编写函数判断一个整数能否同时被3和5整除,若能则返回值为1,否则为0。调用该函数求出15~300之间能同时被3和5整除的数的个数。if(n%3==0&&n%5==0)return(1);return(0);

35.将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。例如:当a=45,b=12。调用该函数后,c=4251。*c=a/10*1000+a%10*10+b/10+b%10*100;

36.判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。x的值由主函数从键盘读入,要求不大于100。说明:所谓“同构数”是指这样的数,这个数出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数。int k;k=x*x;if((x<10 && k%10==x)||(x>9 && k%100==x))return 1;else return 0;37.功能:在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的积。fun()函数的功能为求对角线元素的积。int sum; int i,j; sum=1; for(i=0;i<3;i++)sum=sum*a[i][i]; return sum; 38.产生20个随机整数放入二维数组a[5][4]中,利用函数row_sum求每行元素的和,并将和放到另一个数组中。int i,j;for(i=0;i<5;i++)8

{ b[i]=0;for(j=0;j<4;j++)b[i]=b[i]+a[i][j];39.功能:根据整型形参m,计算如下公式的值:y=sin(m)*10。例如:若m=9,则应输出:4.121185

double y=0;y=sin(m)*10;return(y);} 40.功能:求出N×M整型数组的最大元素及其所在的行坐标及列坐标

(如果最大元素不唯一,选择位置在最前面的一个)。例如:输入的数组为:1 2 3 4 15 6 12 18 9 10 11 2 求出的最大数为18,行坐标为2,列坐标为1。

int max,i,j;max=array [0][0];Row=0;Col=0;for(i=0;i

第四篇:编程语言学习心得

程序语言学习的总结

通过两年的学习,我们基本上掌握了C语言,C++和C#三个编程课程。对于程序设计语言的学习,分为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。课程上的安排除了课堂讲授以外,学院设有专门课堂到实验室进行上机操作实验。

要利用c语言学到的知识编写c语言程序,即把c语言作为工具,通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。通过上机实验来验证自己编制的程序是否正确。在这种思想支配下,可能你会想办法去“掩盖”程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对c语言的理解和程序开发能力。

在原有的C语言的基础知识之上,初步接触C++时感到比较简单易懂。但随着之后的步步深入学习,C++的不同之处以及其优势逐。从第二章引入了C++简单程序的设计。包括一些C++语言的概述,基本数据类型和表达式,数据的输入与输出,算法的基本东芝结构,以及自定义类型数据等知识。此部分多与C语言相似。之后又学习了函数的相关内容,这里学到了新的知识要点----函数重载。该内容尤其在现在做课程设计的时候尤为重要。类是C++语言的精华之所在,在学习中,我感觉到类和C语言中的结构体有很大的相似之处,但在类中的构造函数、拷贝构造函数以及类的组合,经常弄混淆一些概念。在这之后又学习了类的继承与派生。这使得类与类之间形成了树状图的模型,各子类可以访问到父类的一些数据成员,同样也实现了数据的之间的“共享”。我个人在编写派生类的构造函数和拷贝构造函数时,感觉很不熟练,后面章节的多态性主要学习了运算符的重载,其本质就是函数的重载。

在学习C#中,类是具有相同特性和行为的对象的抽象。它使用关键字class声明的。在c#中仅允许单个继承,类只能从一个基类继承实现。但是一个类可以实现一个以上的接口。对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等局可以看对象,它不仅表示具体的事物,还能表示抽象的规则、计划或者事件。接口只是包含方法、委托或事件的签名。方法的实现是在实现接口的类中完成的。接口可以是命名空间或类的成员,并可以包含下列成员:每个C#可执行文件都有一个入口—Main方法:static void Main()修饰符public表示可以在任何地方访问该方法。所以可以在类的外部调用它。修饰符static表示方法不能在类的实例上执行,因此不必先实例化类在调用。在变量声明时:变量是类或者结构中的字段,如果没有显示初始化,创建这些变量时,其值就是默认的0。变量是方法的局部变量就必须在代码中显示初始化,之后才能在语句中使用它们的值。

课堂上要讲授许多关于语法规则,要使用这些工具解决问题,通过多次上机练习,对于语法知识有了更深刻的认识,在理解的基础上就会自然而然地掌握。一个程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。通过上机实验,熟练地掌握开发环境,为以后真正编写计算机程序解决实际问题打下基础。

第五篇:C语言编程

#include(stdio.h)

main()

{ int question[4]={-1,-1,-1,-1},i=0,j=0,k=0,A=0,B=0,answer[4]={0};

char again='y';

while(again=='y'){ srand((int)time(0));

while(i4){ k=(int)rand()%10;

for(j=0;ji;j++)if(k==question[j]){ k=-1;break;}

if(k==-1)continue;question[i]=k;i++;}/*while i*/

for(i=8;i0;i--)/*还有8次机会*/

{ A=0;B=0;printf(“n你还剩下%d次机会。”,i);

printf(“n请输入四个0-9之间的数字,中间用空格隔开n”);for(j=0;j4;j++)scanf(“%d”,&answer[j]);

for(j=0;j4;j++)

for(k=0;k4;k++)

{ if(answer[j]==question[k]){ if(j==k)A++;else B++;} }/*for*/

if(A==4){ again='0';

printf(“n你赢了,还继续猜吗?(y/n)”);

while(again!='y'&&again!='n')

scanf(“...%c”,&again);break;}/*if*/

printf(“n%dA%dB”,A,B);if(i==1){ again='0';

printf(“n你输了,正确答案是”);

for(j=0;j4;j++)

printf(“%dt”,question[j]);

printf(“n还继续吗?(y/n)”);

while(again!='y'&&again!='n')scanf(“%c”,&again);

printf(“%c”,again);break;}/*if*/ }/*for changce*/ }/*while again*/ printf(“感谢您玩这个游戏。”);}

下载c语言编程大题(5篇)word格式文档
下载c语言编程大题(5篇).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    编程语言的介绍

    本文由2008146683贡献 doc1。 编程语言介绍 目录 [隐藏] 1 开放源代码的必要性 2 各种语言的选择 3 各种语言的选择 4 我为什么选择了 Python 5 Ruby 和 Python 的比较 5.1......

    从语言进步到编程

    从语言进步到编程 1. 语言和编程本是两码事 分不清语言和编程的人,估计很能学得好编程。 1.1 盲从技术只能让你晕的更久 和其它事物一样,软件编程的发展也经历了从低级到高级......

    Java编程语言面试题

    西安英泰移动通信学院S2级Java编程语言测试题 1 Java编程语言面试题 一、简答题 1、 简述用Java编程语言编写、编译、解释和执行过程。 2、 简述在Java JDK中,java.exe程序的......

    T-SQL语言编程(5篇材料)

    南京信息工程大学实验(实习)报告 实验日期12.13得分指导教师方忠进系计算机专业软件工程年级2011班次3姓名张渊学号20112344931 一.实验目的 1. 掌握流控制语句的基本语法 2.......

    C语言经典编程题(推荐)

    C语言经典编程题 题目01:在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同的单词。 [cpp] view plain copy print? 1. 2. 3. 4. 5. 6. 7. 8. 9.......

    经典C语言编程100例

    经典C语言编程100例(1-30) 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。......

    vb语言编程教案

    课题:vb语言编程概述 课 时:2课时 授课时间:2011.09.05 课堂类型:讲授 教学目的:1.熟悉VB界面和VB集成开发环境; 2.在实际操作中学会编简单的VB应用程序; 教学要求:1. 掌握VB基础知......

    c语言编程练习

    本实验所有题目均要求使用指针。 1.写一函数,将一个3*3的整型矩阵转置。2.将两个按升序排列的数组合并成一个数组,并使合并后的数组也按升序排列。 要求: (1)输入两个数组(按升序);......