c语言机试题
(1)/*程序修改题目要求:
下列给定程序中,fun函数的功能是:求a=xx…xx-…-xx-xx-x
(此处xx…xx表示n个x,x和n的值在1至9之间)。例如:x=3,a=6,则以上表达式为:
a=333333-33333-3333-333-33-3
其值是296298。x和n是fun函数的参数,表达式的值作为函数值
传回main函数。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的
结构。每处3分,共9分*/
#include
#include
long fun(int x,int n)
{
int j;
/*********found*********/
long a=0,t=1;
/*********found*********/
for(j=0;j<=n;j++)
t=t*10+x;
a=t;
for(j=1;j { /*********found*********/ t=t/10; a=a-t; } return(a); } main() { int x,n;printf("\nplease enter x and n:"); scanf("%d%d",&x,&n); printf("The value of fun is %ld\n",fun(x,n)); } 答案: 1.错误long a=0,t=1; 正确long a=0,t=0; 2.错误for(j=0;j<=n;j++) 正确for(j=0;j 3.错误t=t%10; 正确t=t/10; (2)/*本题每空5分,共15分。 程序填空题目要求: 十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块, 第三个小孩8块,第四个小孩22块, 第五个小孩16块,第六个小孩4块, 第七个小孩10块,第八个小孩6块, 第九个小孩14块,第十个小孩20块。 然后所有的小孩同时将自己手中的糖 分一半给左边的小孩;糖块数为奇 数的人可向老师要一块。问经过这样几 次调整后大家手中的糖的块数都 一样?每人各有多少块糖? 请在程序的下划线处填入正确的内 容并把下划线删除,使得程序 得出正确的结果。 注意:源程序不得增行或删行,也不得 更改程序的结构! */ #include main() { int i,count=0,a[11]={0,10,2,8,22,16,4,10,14, 20}; /******found*****/ while(__1__) { for(i=1;i<=10;i++) a[i-1]=a[i-1]/2+a[i]/2; a[10]=a[10]/2+a[0]; for(i=1;i<=10;i++) /******found*****/ if(__2__) a[i]++; for(i=1;i<10;i++) /******found*****/ if(a[i]!=a[i+1]) __3_; if(i==10) break; else { a[0]=0; count++; } } printf("count=%d number=%d\n",count,a[1]); } 答案: 1. 2. a[i]%2==1 3. break (3)/*编程题目要求: 请输入星期几的第一个字母来判断一下是星期 几, 如果第一个字母一样,则继续判断第二个字母。 注意:部分程序段已给出,请勿改动 仅在两个found中填入你编写的若干语句。本题14分*/ #include void main() { /*******found******/ 答案:char ch1,ch2; printf("请输入第一个字母:"); ch1 = getchar(); getchar(); // 吸收换行符 if(ch1 == 'S') { printf("请输入第二个字母:"); ch2 = getchar(); switch(ch2) { case 'a': printf("星期 六\n");break; case 'u': printf("星期 日\n");break; } } else if(ch1 == 'T') { printf("请输入第二个字母:"); ch2 = getchar(); switch(ch2) 1 { case 'h': printf("星期四\n");break; case 'u': printf("星期二\n");break; } } else { switch(ch1) { case 'M': printf("星期一\n");break; case 'W': printf("星期三\n");break; case 'F': printf("星期五\n");break; } } return 0; } /*********found*****/ } (4)/*程序修改题目要求 给定程序中的函数Creatlink的功能是创建带头结点的单向链表, 并为各结点数据域赋0到m-1的值。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的 结构。每处3分,共6分*/ #include #include typedef struct aa { int data; struct aa *next; }NODE; NODE *Creatlink(int n,int m) { NODE *h=NULL,*p,*s; int i; /********found********/ p=(NODE )malloc(sizeof(NODE) ); h=p; p->next=NULL; for(i=1;i<=n;i++) { s=(NODE*)malloc(sizeof(NODE )); s->data=rand()%m; s->next=p->next; p->next=s; p=p->next; } /********found********/ return p; } outlink(NODE *h) { NODE *p; p=h->next; printf("\n\nThe list :\n\nhead"); while(p) { printf("->%d",p->data); p=p->next; } printf("\n"); } main() { NODE *head; head=Creatlink(8,22); outlink(head); } 答案: 1. 错误p->next=NULL; 正确 p=s; 2. 错误s->data=rand()%m; 正确 s->data=rand()%(m-1); 3. 错误return p; 正确 return h; (5)/*本题20分程序设计题目要求 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从 1到3报数), 凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 注意:部分程序段已给出,请勿改动 仅在两个found中填入你编写的若干语句。*/ #define nmax 50 main() { int i,k,m,n,num[nmax],*p; printf("please input the total of numbers:"); scanf("%d",&n); p=num; /*********found*******/ 答案:for(i=0;i *(p+i)=i+1; i=0; k=0; m=0; while(m { if(*(p+i)!=0) k++; if(k==5) { *(p+i)=0; k=0; m++; } i++; if(i==n) i=0; } while(*p==0) p++; printf("The people whose number is %d is left\n",*p); /*********found*******/ } (6)/*程序填空题目要求 在给定程序中,函数fun的功能是:将N×N矩阵 2 中元素的值按列右移1个位置,右边被移出矩阵的元素绕回左边。 例如,N=3,有下列矩阵: 1 2 3 4 5 6 7 8 9 计算结果为: 3 1 2 6 4 5 9 7 8 请在程序的下划线处填入正确的内容并把下划线删除,使得程序 得出正确的结果。 注意:源程序不得增行或删行,也不得更改程序的结构! 每空5分,共15分*/ # include # define N 3 void fun(int (*a)[N]) { int i,j,t; /*************found***************/ for(i=0;i<__N_;i++) { /*************found***************/ t=a[i][__N-1_]; for(j=N-1;j>0;j--) a[i][j]=a[i][j-1]; /*************found***************/ _a[i][0]_ __=t; } } main() { int i,j,a[][N]={1,2,3,4,5,6,7,8,9}; printf("The original array:\n"); for(i=0;i { for(j=0;j printf("%2d ",a[i][j]); printf("\n"); } fun(a); printf("\nThe result is:\n"); for(i=0;i { for(j=0;j printf("%2d ",a[i][j]); printf("\n"); } } (7)/*程序修改题目要求: 下列给定程序是建立一个带头结点的 单向链表,并用随机函数 为各结点数据域赋值。函数fun的作用 是求出单向链表结点(不包括头结点) 数据域中的最大值,并且作为函数值返 回。 请改正程序中的错误,使它能得出正确 的结果。 注意:不要改动main函数,不得增行 或删行,也不得更改程序的 结构。每处3分,共6分*/ #include #include #include typedef struct a { int data; struct a *next; }NODE; fun(NODE *h) { int max=-1; NODE *p; /*******found******/ p=h; while(p) { if(p->data>max) max=p->data; /*******found******/ p=h->next; } return max; } printresult(int s,FILE *pf) { fprintf(pf,"\nThe max in link:%d\n",s); } NODE *link(int n,int m) { NODE *h,*p,*s; int i; h=p=(NODE*)malloc(sizeof(NODE)); h->data=9999; for(i=1;i<=n;i++) { s=(NODE*)malloc(sizeof(NODE)); s->data=rand()%m; s->next=p->next; p->next=s; p=p->next; } p->next=NULL; return h; } printlink(NODE *h,FILE *pf) { NODE *p; p=h->next; fprintf(pf,"\nthe list :\n\nhead"); while(p) { fprintf(pf,"->%d",p->data); p=p->next; } fprintf(pf,"\n"); } main() { NODE *head; int m; head=link(12,100); printlink(head,stdout); m=fun(head); printf("\n The result :\n"); printresult(m,stdout); } 答案:1.错误p=h; 正确p=h->next; 2.错误p=h->next; 正确p=p->next; (8)/*程序设计题目要求 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭 据分为五份, 多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二 只猴子把剩 3 下的桃子又平均分成五份,又多了一个,它同样把多的一个扔 入海中,拿 走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有 多少个桃子? 注意:部分程序段已给出,请勿改动 仅在两个found中填入你编写的若干语句。本题14分*/ */ main() { /******found********/ 答案:int i,m,j,k,count; for(i=4;i<10000;i+=4) { count=0; m=i; for(k=0;k<5;k++) { j=i/4*5+1; i=j; if(j%4==0) count++; else break; } i=m; if(count==4) {printf("%d\n",count); break;} } /**********found*******/ } (9)/*本题每空5分,共15分。 程序填空题目要求: 甲乙丙丁四人同时开始放鞭炮,甲每隔t1秒放一次, 乙每隔t2秒放一次,丙每隔t3秒放一次,丁每隔t4秒 放一次,每人各放n次。函数fun的功能是根据形参提 供的值,求出总共听到多少次鞭炮声作为函数值返回。 注意,当几个鞭炮声同时炸响,只算一次响声,第一 次响声是在第0秒。 例如:若t1=7,t2=5,t3=6,t4=4,n=10,则总共可听 到28次鞭炮声。 请在程序的下划线处填入正确的内容并把下划线 删除,使得程序得出正确的结果。 注意:源程序不得增行或删行,也不得更改程序的结构!*/ #include /*************found************** */ #define OK(i,t,n) ((__1__==0)&&(i/t int fun(int t1,int t2,int t3,int t4,int n) { int count,t,maxt=t1; if(maxt if(maxt if(maxt count=1; /*************found********* ******/ for(t=1;t<__2__;t++) { if(OK(t,t1,n)||OK(t,t2,n)||OK(t,t3, n)||OK(t,t4,n)) count++; } /*************found********* ******/ return __3__; } main() { int t1=7,t2=5,t3=6,t4=4,n=10,r; r=fun(t1,t2,t3,t4,n); printf("The sound:%d\n",r); } 答案: 1.去掉下划线(1==0) 2.t 3.count (10)/*程序修改题目要求 下列给定程序中,fun的功能是计算以 下公式的值: t=f(-m_+f(-M+1)+…f(0)+f(1)+f(2)+…f( m) 例如,当m为10时,函数值应为 22.550361。 f(x)函数定义如下: (x+1)/(x-2) x>0 f(x)= 0 x=0或x=2 (x-1)/(x-2) x<0 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更 改程序的结构。每处3分,共9分*/ #include #include #include /********found******/ f(double x) { if(x==0.0||x==2.0) return 0.0; else if(x<0.0) return(x-1)/(x-2); else return (x+1)/(x-2); } double fun(int m) { int i; /********found******/ double t,y; for(i=-m;i<=m;i++) { y=f(1.0*i); t+=y; } /********found******/ return t } main() { printf("%lf\n",fun(10)); } 答案: 1. f(double x)````````````````````````````````````` double f(double x) 2. double t,y;`````````````````````````````````````````double t=0.0,y; 3. return t``````````````````````````````` return t; (11)/*程序填空题目要求: 定程序中已建立一个带有头结点的单向链表,链表中的各结点 按结点数据域中的数据递增有序链接。函数fun的功能是: 把形参x的值放入一个新结点并插入到链表中,插入后各结点 4 数据 域的值仍保持递增有序。 请在程序的下划线处填入正确的内容并把下划线删除,使得程序 得出正确的结果。 注意:源程序不得增行或删行,也不得更改程序的结构! 每空5分,共15分*/ #include #include #define N 8 typedef struct list { int data; struct list *next; }SLIST; void fun(SLIST *h,int x) { SLIST *p,*q,*s; s=(SLIST*)malloc(sizeof(SLIST)); /*********found*********/ s->data=__1__; q=h; p=h->next; while(p!=NULL&&x>p->data) { /*********found*********/ q=__2__; p=p->next; } s->next=p; /*********found*********/ q->next=__3__; } SLIST *creatlist(int *a) { SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0;i { q=(SLIST*)malloc(sizeof(SLIST)); q->data=a[i]; p->next=q;p=q; } p->next=0; return h; } void outlist(SLIST *h) { SLIST *p; p=h->next; if(p==NULL) printf("\nThe list is NULL!\n"); else { printf("\nhead"); do { printf("->%d",p->data); p=p->next; }while(p!=NULL); printf("->End\n"); } } main() { SLIST *head;int x; int a[N]={ 11,12,15,18,19,22,25,29}; head=creatlist(a); printf("\nThe list before inserting:\n"); outlist(head); printf("\nEnter a number :"); scanf("%d",&x); fun(head,x); printf("\nThe list after inserting :\n"); outlist(head); } 答案:1.x . 2. p 3. s (12)/*程序修改题目要求 给定程序中函数fun的功能是:在字符 串的最前端加入n个*号, 形成新串,并且覆盖原串。 注意:字符串的长度最长允许为79。 请改正程序中的错误,使它能得出正确 的结果。 注意:不要改动main函数,不得增行 或删行,也不得更改程序的 结构。每处3分,共6分*/ #include #include void fun(char s[],int n) { char a[80],*p; int i; /********found******/ s=p; for(i=0;i do { a[i]=*p; i++; } /********found******/ while(*p++) a[i]=0; strcpy(s,a); } main() { int n;char s[80]; printf("\n Enter a string :"); gets(s); printf("The string\"%s\"\n",s); printf("\nenter n(number of *):"); scanf("%d",&n); fun(s,n); printf("\nThe string after insert:\"%s\"\n",s); } 答案: 1. s=p;改为p=s 2.i++;改为i++;++p(?) (13)/*编程题目:一球从100米高度自由落下,每次落地后反跳 回 原高度的一半;再落下,求它在第10次落地时,共经过多少米? 第10次反弹多高?注意:部分程序段已给出,请勿改动 仅在两个found中填入你编写的若干语句。本题20分*/ main() { /**********found********/ 答案:float sn =100.0,hn=sn/2; int n; for(n=2;n<=10;n++) { sn=sn+2*hn;/* 第n次落下时共经历的米数 hn=hn/2;/*第n次反跳高度*/ 5 } printf("the total of road is %f\n”,sn); printf("the tenth is %f meter\n”,hn); } /********found*********/ (14)/*本题每空5分,共15分。 程序填空题目要求: 请补充函数fun,该函数的功能是建立一个带头结点的 单向链表并输出到文件file.dat和屏幕上,各结点的值 对应的下标,链表的结点数及输出的文件名作为参数传入。 请在程序的下划线处填入正确的内容并把下划线删除,使得程序 得出正确的结果。 注意:源程序不得增行或删行,也不得更改程序的结构! */ #include #include typedef struct s { int data; struct s *next; }NODE; void fun(int n,char *filename) { NODE *h,*p,*s; FILE *f; int i; h=p=(NODE *)malloc(sizeof(NODE)); h->data=0; for(i=1;i { s=(NODE*)malloc(sizeof(NODE)); /******found*****/ s->__1__; /******found*****/ __2__; /******found*****/ p=__3__; } p->next=NULL; if((f=fopen(filename,"w"))==NULL) { printf("Can not open file.dat"); exit(0); } p=h; fprintf(f,"THE LIST\n"); printf("THE LIST\n"); while(p) { fprintf(f,"%3d",p->data); printf("%3d",p->data); if(p->next!=NULL) { fprintf(f,"->"); printf("->"); } p=p->next; } fprintf(f,"\n"); printf("\n"); fclose(f); p=h; while(p) { s=p; p=p->next; free(s); } } main() { char *filename="file.dat"; int n; printf("\nPlease input n:"); scanf("%d",&n); fun(n,filename); } 答案; 1.data=i 2.p->next=s 3.p=p->next (15)/*每处3分,共6分。 程序修改题目要求 函数fun的功能是:逐个比较p、 q所指两个字符串对应位置中的字符, 把ASCII值大或相等的字符 依次存放到c所指数组中, 形成一个新的字符串。 例如,若主函数中a字符串 为:aBCDeFgH,主函数中b字符串为:ABcd,则c中 的字符串应为:aBcdeFgH。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改 程序的 结构。*/ #include #include void fun(char *p,char *q,char *c) { /*******found*******/ int k=1; /*******found*******/ while(*p!=*q) { if(*p<*q)c[k]=*q; else c[k]=*p; if(*p)p++; if(*q)q++; k++; } } main() { char a[10]="aBCDeFgH",b[10]="ABcd",c[10]={'\0'}; fun(a,b,c); printf("The string a:");puts(a); printf("The string b:");puts(b); printf("The string c:");puts(c); } 答案: 1.intk=1;改为intk=0; 2. while(*p!=*q)改为while(*p||*q) (16)/*本题每空5分,共15分。 程序填空题目要求如下: 建立一个如下的二维数组,并按以下格式输出。 10001 01010 00100 01010 10001 请在程序的下划线处填入正确的内容并把下划线删除,使得 程序 得出正确的结果。 注意:源程序不得增行或删行,也不得更改程序的结构! 6 (1)/*程序修改题目要求: 下列给定程序中,fun函数的功能是:求a=xx…xx-…-xx-xx-x (此处xx…xx表示n个x,x和n的值在1至9之间)。例如:x=3,a=6,则以上表达式为: a=333333-33333-3333-333-33-3 其值是296298。x和n是fun函数的参数,表达式的值作为函数值 传回main函数。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的 结构。每处3分,共9分*/ #include 1:第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能就是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。 2:第2题请编写函数fun,它的功能就是:求出1到100之内能北7或者11整除,但不能同时北7与11整除的所有证书,并将她们放在a所指的数组中,通过n返回这些数的个数。 3:第3题请编写函数void fun(int x,int pp[],int *n),它的功能就是:求出能整除x且不就是偶 数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 4:第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"至U "z"26各字母各自出现的次数,并依次放在pp所指的数组中。 5:第5题请编写一个函数void fun(int m,int k,int xx[]),该函数的功能就是:将大于整数m且 紧靠m的k各素数存入xx所指的数组中。 6:第6题请编写一个函数void fun(char a[],char[],int n),其功能就是:删除以各字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。 7:第7题请编写一个函数int fun(int *s,int t,int *k),用来求除数组的最大元素在数组中的下 标并存放在k所指的储存单元中。 8:第8题编写函数fun,功能就是:根据以下攻势计算s,计算结果作为函数值返回『通过形参 传入。S=1 + 1/(1+2)+1/(1+2+3)+ ??…、+1/(1+2+3+4+ ??…+n) 9:第9题编写一个函数fun,它的功能就是:根据以下公式求p的值,结果由函数值带回。M 与n为两个正整数,且要求m>n。p=m!/n!(m-n)! 10:第10题编写函数fun,它的功能就是:利用以下的简单迭代方法求方程cos(x)-x=0的一个 实根。 迭代步骤如下:(1)取x1初值为0、0;⑵x0=x1,把x1的值赋各x0; (3) x1=cos(x0),求出一个新的x1; (4) 若x0-x1的绝对值小于0、000001,则执行步骤(5),否则执行步骤(2); (5) 所求x1就就是方程cos(x)-x=0的一个实根,作为函数值返回。 程序将输出root=0、739085。 11:第11题下列程序定义了nx n的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][n]),该函数的功能就是:使数组左下半三角元素中的值全部置成0。 12:第12题下列程序定义了n x n的二维数组,并在主函数中赋值。请编写函数fun,函数的 功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s。 13:第13题请编写一个函数void fun(int tt[m][n],int pp[n]),tt 指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中赋予。 14:第14题请别写函数fun,函数的功能使求出二维数组周边元素之与,作为函数值返回。二 维数组中的值在主函数中赋予。 15:第15题请编写一个函数unsigned fun(unsigned w),w 使一个大于10的无符号整数,若w 使n(n>2)位的整数,则函数求出w后n-1位的数作为函数值返回。 16:第16题请编写一个函数float fun(double h),函数的功能使对变量h中的值保留2位小树, 并对第三位进行四舍五入(规定h中的值位正数)。 17:第17题请编写一个函数fun(char *s),该函数的功能使把字符串中的内容拟置。 18:第18题编写程序,实现矩阵(3行3列)的转置(即行列互换)。 19:第19题编写函数fun,该函数的功能就是:从字符中删除指定的字符,同一字母的大、小写按不同字符处理。20:第20题编写函数int fun(int lim,int aa[max]),该函数的功能就是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。 21:第21题请编写函数fun,对长度位7个字符的字符串,除首尾字符外,将其余5个字符按ascii码降序排列。 上机练习题 1.输入一个不超过五位的正整数,输出其逆数。例如输入12345,输出应为54321。 2.计算1+2+3…+n的值,n是从键盘输入的自然数。 3.从终端(键盘)读入20个数据到数组中,统计其中正数的个数,并计算这些正数之和。 4.从终端(键盘)将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中 各元素的值。 5.要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,每种面 值至少1张,编程输出所有可能的换法,程序应适当考虑减少重复次数。 6.求n以内(不包括n)同时能被3和7整除的所有自然数之和的平方根s,n从键盘输入。 例如若n为1000时,函数值应为:s=153.909064。 7.一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下 车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索找出车号。 8.输入1~10之间的一个数字,输出它对应的英文单词。 9.个位数为6且能被3整除但不能被5整除的三位自然数共有多少个,分别是哪些? 10.用自然语言描述程序逻辑如下,试写程序。 ①设置环境; ②定义变量i、j、s,以及用于放置结果的变量sum,并令sum初值为0; ③i=1; ④如果i≤100,则转⑤,否则转⑧; ⑤令s=0,求前i个自然数之和,并放于变量s之中; ⑥sum=sum+s; ⑦i增加1,转④; ⑧输出和sum,结束。 11.用自然语言描述的程序逻辑为: ①设置环境; ②定义变量i、flag和password,并令flag=0,i=0; ③用户回答口令,将其赋于password变量; ④口令正确?如果是,则flag=1,转⑥。否则转⑤; ⑤回答三次口令了吗?如果没有,计数器加1后(i++),转③,否则转⑥; ⑥根据flag之值输出相应信息。 12.用自然语言描述的程序逻辑如下: ①设置环境; ②定义变量digit、x、y分别表示原始数、原始数的个位数和逆数; ③输入原始正整数x; ④从x中分解出个位数字digit; ⑤合并个位digit至逆数y中; ⑥原始数x缩小10倍:x=x/10; ⑦如果x非零,则转④; ⑧输出逆数y,结束 13.输入某三角形的三个边的长度,判断出这是个什么三角形(等腰、等边、任意,或不能构 成)。 14.输入10个数,分别统计其中正数、负数、零的个数。 15.先随机产生N个三位自然数输出,然后再输出其中同时是3、5、7倍数的数。(设N为100) C语言习题集 3.11输入'A'~'F'中的一个字母,代表一个十六进制数,将其转换为十进制数,求该数与15的和并输出。 输入格式: B 输出格式: 26 #include 1.编写函数fun,它的功能是:计算并输出下列级数和 s= 1/(1*2)+1/(2*3)+...+1(n*(n+1)).例如,当n = 10时,函数值为:0.909091 2.在[10000, 20000]范围内考察个位数字是7的素数, 问:(1) 这样的素数有多少个?(2) 其中最大的一个等于几? 3. 编写程序,从键盘输入一年份,判断该年份是否为闰年。 1. 编写函数fun,它的功能是:计算并输出下列级数和:s= 1/(1*2)+1/(2*3)+...+1(n*(n+1))。例如,当n = 10时,函数值为:0.909091 2. 回文数是指正读和反读都一样的自然数。例如,8, 121, 5445这三个数都是回文数。求: (1) [1,1000]之内既是回文数,又是素数的最大整数。 (2) [1,1000]以内既是回文数,又是素数的整数有多少个" 3. 编写程序,能对输入一行字符,统计其中分别有多少个单词和空格。比如输入:”How are you”,有3个单词和2个空格。 1.编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为: F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2) 例如:当t =1000时,函数值为:1597。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 2.先从键盘上输入一个3行3列矩阵元素的值,然后输出主对角线元素平方之和. 3. 编程:删除字符串中的数字字符。 1.编写函数fun,它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。 例如若n为1000时,函数值应为:s = 153.909064。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 2.编程求出两个非零正整数的最大公约数. 3.请编写程序:根据以下公式求π(要求满足精度0.0005)的近似值:π/2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+……+(1*2*3*4*……*n)/(3*5*7*……*(2n+1)) 1.现矩阵(3行3列)的转置(即行列互换)。 例如,输入下面的矩阵: 100 200 300 400 500 600 700 800 900 程序输出: 100 400 700 200 500 800 300 600 900 上机试题(一) 1 已知A,B为正整数, A2 试求F(1)+F(3)+F(5)+……+F(49)值。 提示:最好使用递推法求解,因为使用递归调用很可能超出某些语言的递归深度。答案:12586269025 ………………………………………………………………………………………………… 上机试题(四) 1设有6个十进制数字a,b,c,d, e,f ,求满足abcdf×e=fdcba条件的五位数abcdf(a≠0,e≠0,e≠1)的个数。 答案:16 2一个数如果刚好与它所有的因子之和相等,则称该数为一个"完数",如:6=1+2+3,则6就是一个完数。求出200到500之间所有的完数之和。 答案:496 ………………………………………………………………………………………………… 上机试题(五) 1 一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:除1和它本身外,不能被其它整数整除的正整数称为素数,1不是素数,2是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数。例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。试求[100,999]之内的所有逆向超级素数的个数。 答案:39 2 编写程序,求在5000以内能被17或者23整除的正整数的个数。 答案:499 ………………………………………………………………………………………………… 上机试题(六) 1 设有十进制数字a,b,c,d和e,它们满足下列式子:abcd*e=bcde (a不等于0, e不等于0或1),求满足上述条件的所有四位数abcd的和。 C语言程序设计上机考试题 班级:姓名:学号: 使用C语言编写下列程序(20分×5=100分) 1、输入3个整型数据,求出最大数和最小数。 #include case 5: case 4: case 3: case 2: case 1: case 0:grade='E'; } printf("成绩是%5.1f,相应的等级是%c\n",score.grade); return 0; } 3、编写一个四则运算程序,输出计算结果。 #include 第一部分-分支、循环部分 1、某一次考试之后,需要统计考生(10人)的平均成绩,并找出其中的最高分和最低分。 2、从键盘输入两个正整数,输出这两个整数的商,要求商的小数点后保留5位。例如输入355和113, 输出3.14159. 3、用while循环结构编写程序打印ASCII码为33-127的字符 4、用do-while,for循环结构编写程序打印ASCII码为33-127的字符 5、用for循环结构编写程序打印ASCII码为33-127字符 6、在1-500中,找出能同时满足用3除余2,用5除余3,用7除余4的所有整数,用循环结构 7、输入一个整数将其倒着输出,如54321 8、计算s=1+1/3+1/5+…+1/n,截止到1/n<10-4 9、从键盘输入一整数n,计算1*1+2*2+...+n*n的值 10、用while 循环计算1+2+……+100的和 11、用do while循环计算1+2+……+100的和 12、用for 循环计算1+2+……+100的和 13、输入一个小于等于10的整数n ,计算n! 14、输入两个正整数m和n,计算m!+n!,m和n的值均小于10。 15、用循环语句,计算1~100之间的所有3的倍数之和 16、用循环语句,计算100-200之间的所有7的倍数之和 17、输出1-100之间,7的整数倍数或数字尾数为7的数字,统计出这些数字个数 18、输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数 19、输入一个整数,统计它有几位数 20、编写程序,输出1到50中间所有能被3整除的正整数 21、把100~200之间不能被3整除的输出 22、编程Y=1+3+5+7+ (111) 23、编程y=1*1/2*1/3*1/4*1/5*1/6*...前十项之积 24、编程实现九九乘法表 25、求1到100奇数和 26、求1到100偶数和 27、编程求200以内所有质数(素数) 28、从键盘输入一个整数,求该数的绝对值 29、从键盘输入+、-、*、/中的任一个,输出对应的英文单词:plus、minus、mutiply、divide,如输入 的不是这4个字符中的任一个,则输出“sorry,you are wrong”。 30、从键盘输入一个字符,判断其是否为a,r,或f,并输出相应的信息(不区分大小写)。 31、编一程序,对于给定的一个百分制成绩,输出用像'A','B','C','D','E'表示的等级成 绩。设:90分以上为'A',80~89分为'B',70~79分为'C',60~69分'D',60分以下为'E'。(要求用switch语句编程)。 32、输入一个整数,判断它能否被3,5,7整除。 33、用整数1~12依次表示1~12月,由键盘输入一个月份数,输出对应的季节英文名称(12~2 月为冬季;3~5月为春季;6~8月为夏季;9~11月为秋季。要求用if嵌套实现)。 34、编写输入整数a,b,c,当a为1时显示b和c之和,a为2时显示b与c之差,a为3 时显示b*c之积,a为4时取b/c之商,a为其他数值时不做任何操作的程序。 1.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? #include 第一套题 上机填空: #include { int a, b, c, k; double s; s = 0.0; a = 2; b = 1; for ( k = 1; k <= n; k++ ) { /************found************/ s = s + (Double)a / b; c = a; a = a + b; b = c; } return s; } main( ) { int n = 5; printf( "\nThe value of function is: %lf\n", fun ( n ) ); } 第一处改错:将:void fun ( int n ) 改为double fun ( int n ) 第二处改错:s = s + (Double)a / b; 改为s = s + (double)a / b; 第二套题 上机填空题 #include 上机考试:6月2日 13:30 不准携带:课本/参考书/参考资料/移动存储设备/草纸 一定要带:学生证/签字笔 1 用起泡法对N=10个整数由大到小排序。10个整数由键盘输入,排序后从屏幕输出结果 2 编写一函数,从实参传来一个字符串,分别统计其中数字、大写字母、小写字母和其它字符的个数,输入输出在main函数中完成 3 用一函数inv将一个字符串的字符逆序排列。输入输出在main函数中完成。要求在inv中用指针处理。4 求200之内的素数的和。从屏幕输出结果 5 从屏幕输入一行字符,将所有的大写字母转换为小写字母,所有的小写字母转换为大写字母,其它字符不变,从屏幕输出结果 6 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次落地后又反弹多高? 7 对N=20个字符由大到小排序。20个字符由键盘输入,排序后从屏幕输出结果 8 有一字符串,把其中的字母a和A去掉,成为一个新字符串。原字符串从键盘输入。从屏幕输出结果 9 求Fibonacci数列的前30项的和。从屏幕输出结果。Fibonacci数列为: F(1)=1,(n=1) F(2)=1,(n=2) F(n)=F(n-2)+F(n-1),(n>=3) 10 写一函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串 11 从键盘输入一个大于2的整数,判断是否是素数。从屏幕输出结果。要求用函数处理 12 从键盘输入月份,输出这个月有多少天。要求用函数处理 13 求两个数的最大公约数。要求用函数处理 14 求两个数的最小公倍数。要求用函数处理 15 从屏幕输入3个整数,按从小到大顺序输出,要求用指针进行处理 16 C语言程序设计上机考试题 班级::学号: 使用C语言编写下列程序(20分×5=100分) 1、输入3个整型数据,求出最大数和最小数。 #include case 5: case 4: case 3: case 2: case 1: case 0:grade='E'; } printf("成绩是%5.1f,相应的等级是%c\n",score.grade); return 0; } 3、编写一个四则运算程序,输出计算结果。 #include 上机考试练习题 20021程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat (0 int celsius, fahr; /*---------*/ scanf(“%d”,&fahr); celsius=5.0*(fahr-32)/9; printf("celsius = %d\n", celsius); } 20023程序填空,不要改变与输入输出有关的语句。 输入存款金额 money、存期 year 和年利率 rate,根据下列公式计算存款到期时的利息 interest(税前),输出时保留2位小数。 interest = money(1+rate)^year - money 输入输出示例:括号内为说明 输入 1000 3 0.025 (money = 1000, year = 3, rate = 0.025) 输出 interest = 76.89 #include 1: 第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。 2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。 3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 4: 第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。 5: 第5题请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。 . 6: 第6题请编写一个函数void fun(char a[],char[],int n),其功能是:删除以各字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。 7: 第7题请编写一个函数int fun(int *s,int t,int *k),用来求除数组的最大元素在数组中的下标并存放在k所指的储存单元中。 8: 第8题编写函数fun,功能是:根据以下攻势计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+…….+1/(1+2+3+4+……+n) 9: 第9题编写一个函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。M与n为两个正整数,且要求m>n。p=m!/n!(m-n)! 10: 第10题编写函数fun,它的功能是:利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。 迭代步骤如下:(1)取x1初值为;(2)x0=x1,把x1的值赋各x0; ( (3)x1=cos(x0),求出一个新的x1; (4)若x0-x1的绝对值小于,则执行步骤(5),否则执行步骤(2); (5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。 程序将输出root=。 11: 第11题下列程序定义了n×n的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][n]),该函数的功能是:使数组左下半三角元素中的值全部置成0。 12: 第12题下列程序定义了n×n的二维数组,并在主函数中赋值。请编写函数fun,函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s。 13: 第13题请编写一个函数void fun(int tt[m][n],int pp[n]),tt指向一个m行n列的二维函数 C 语言2-1 7.10求最大公约数。请使用递归算法计算正整数n 和m 的最大公约数GCD(n,m)。 GCD(n,m)=?? ???<=<=,其他,且)%,(),(0%n ,m n m GCD m n n m GCD m n m m #include 7.8偶数分解。编写程序,输入若干个大于2的正整数,如果是偶数,则将其分解为两个素数(只需找出第一对素数)并输出;如果输入的奇数,则输出“××× is odd number!”;输入为0时程序结束。只有1和它本身这两个因数的自然数叫做素数,0和1既不是素数也不是和数。 #include 1.第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50 #include // int temp; int len_num1,len_num2; // 两个长长整型数据的长度 int len_max,len_min; num1=(char*)malloc(sizeof(char)); num2=(char*)malloc(sizeof(char)); printf("输入两个长长整型数据:"); scanf("%s",num1); printf("输入两个长长整型数据:"); scanf("%s",num2); len_num1=strlen(num1); len_num2=strlen(num2); len_max=(len_num1>=len_num2)? len_num1:len_num2; len_min=(len_num1<=len_num2)? len_num1:len_num2; int len_max1=len_max; sum=(char*)malloc(sizeof(char)*len_max); memset(sum,0x00,len_max+1);//切忌初始化 for(;len_num1>0&&len_num2>0;len_num1--,len_num2--) { sum[len_max--]=((num1[len_num1-1]-'0')+(num2[len_num2-1]-'0')); } if(len_num1>0) { sum[len_max--]=num1[len_num1 - 1 ]-'0'; len_num1--; } if(len_num2>0) { sum[len_max--]=num1[len_num2 - 1]-'0'; len_num2--; } for(int j=len_max1;j>=0;j--) //实现进位操作 { // temp=sum[j]-'0'; if(sum[j]>=10) { sum[j-1]+=sum[j]/10; sum[j]%=10; } } char *outsum=(char*)malloc(sizeof(char)*len_max1); j=0; while(sum[j]==0) //跳出头部0元素 j++; for(int m=0;mc语言机试题
C语言上机试题
C语言上机练习题
C语言上机题库
C语言机试试题库
_《C语言》机试题(成-部分答案)
大学本科C语言上机考试题
c语言机试题汇总
C语言上机测试题目(完整版)
二级C语言上机题库及答案
c语言上机考试题
大学本科C语言上机考试题
浙江大学C语言上机考试题库
C语言上机试题
C语言上机题
华为C语言机试题面试题汇总