首页 二级C语言题库(新)

二级C语言题库(新)

举报
开通vip

二级C语言题库(新)上机题库 1建立班级通讯录,通讯录中记录每位学生的编号、姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。 int fun(STYPE *std) {FILE *fp;int i; if((fp=fopen("myfile5.dat","wb"))==NULL) return(0); printf("\nOutput data to file !\n"); for(i=0;i

二级C语言题库(新)
上机 题库 doc摄影基础题库高中语文题库及参考答案安全生产模拟考试平台题库选择大学英语b统考题库消防知识竞赛题库 1建立班级通讯录,通讯录中记录每位学生的编号、姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。 int fun(STYPE *std) {FILE *fp;int i; if((fp=fopen("myfile5.dat","wb"))==NULL) return(0); printf("\nOutput data to file !\n"); for(i=0;i10){s=s/100;*t=s%10*s1+*t; s1=s1*10;}} 将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。例如,当a=45,b=12,调用该函数后,c=1524 void fun(int a,int b,long *c) {*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);} 3将自然数1~10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。 int fun(char *fname ) {FILE *fp;int i,n;float x; if((fp=fopen(fname,"w"))==NULL) return 0; for(i=1;i<=10;i++) fprintf(fp,"%d %f\n",i,sqrt((double)i)); printf("\nSucceed!\n"); fclose(fp); printf("\nThe data in file :\n"); if((fp=fopen(fname,"r"))==NULL) return 0;fscanf(fp,"%d%f",&n,&x); while(!feof(fp)) {printf("%d %f\n",n,x); fscanf(fp,"%d%f",&n,&x);} fclose(fp);return 1;} 将n个无序整数从小到大排序。 For (i=j+1;ia[i]) p=i; if(p!=j) 将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12,调用该函数后,c=2514。 void fun(int a,int b,long *c) {*c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10); } 4将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值是1,失败时返回值为0。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。 int fun(char *source,char *target) {FILE *fs,*ft; char ch; if((fs=fopen(source, "r"))==NULL) return 0; if((ft=fopen(target, "w"))==NULL) return 0; printf("\nThe data in file :\n"); ch=fgetc(fs); while(!feof(fs)){putchar(ch); fputc(ch,ft);ch=fgetc(fs);} fclose(fs); fclose(ft); printf("\n\n");return 1;} 将长整型数s中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。当s中的数为87653142时,t中的数为8642。 void fun(long s,long *t) {int d;long sl=1;*t=0; while(s>0){d=s%10; if(d %2= =0){*t=d*s1+*t;s1*=10;} s/=10;}} 将两个两位数的正整数a,b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45时,b=12,调用该函数后,c=5142。 void fun(int a ,int b,long *c) {*c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10);} 5给定程序中已建立一个带有头结点的单向链 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf ,链表中的各结点按结点数据域中的数据递增有序链接。函数的功能是:把形参x的值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。 void fun( SLIST *h, int x) {SLIST *p, *q, *s; s=(SLIST *)malloc(sizeof(SLIST)); s->data=x;q=h;p=h->next; while(p!=NULL && x>p->data) {q=p;p=p->next;} s->next=p;q->next=s;}} 计算正整数num的各位上的数字之积。例如,若输入252,则输出应该是20。 long fun(long num) {long k=1; do{k*=num%10;num/=10; }while(num);return (k);} 计算n门课程的平均分,计算结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55则函数的值为71.8 float fun(float *a,int n) { int i; float ave=0.0; for(i=0;inext;s=p; while(t->next!=NULL) {s=t;t=t->next;} printf("%d ",t->data); s->next=NULL;free(t);} 将字符串中的字符按逆序输出,但不改变字符串中的内容。例如,若字符串为abcd,则应输出dcba。 fun(char *a) {if(*a){fun(a+1);printf(“%c”,*a);}} 比较两个字符串的长度,(不得调用字符串长度的函数),函数返回较长的字符串。若两个字符串长度相等,则返回第1个字符串。例如,输入beijing shanghai为回车键),函数将返回shanghai。 char *fun(char *s, char *t) { int i; char *p=s,*q=t; int n=0,m=0; while(*p) { n++; p++; } while(*q) { m++; q++; } if(n>=m) p=s; else p=t; return p; 7给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序链接。删除链表中数据域值相同的结点,使之只保留一个。 void fun( SLIST *h) {SLIST *p,*q;p=h->next; if(p!=NULL){q=p->next; while(q!=NULL) {if(p->data==q->data) {p->next=q->next; free(q);q=p->next;} else{ p=q;q=q->next;}}}} 用选择法对数组中的n个元素按从小到大的顺序进行排序。 void fun(int a[],int n) {int i,j,t,p; for(j=0;jnext; while(p!=0){n++; if(p->data==ch)return n; else p=p->next;}return 0;} main() {SLIST *head;int k;char ch; char a[N]={…};head=creatlist(a); outlist(head); printf("Enter a letter:"); scanf("%c",&ch);k=fun(head,ch); if(k==0) printf("\nNot found!\n"); else printf("The sequence number is : %d\n",k);} 删除p所指字符串中的所有空白字符(包括Tab字符、回车符及换行符)。输入字符串时用'#'结束输入。 fun(char *p) {int i,t;char c[80]; for(i=0,t=0;p[i];i++) if(!isspace(*(p+i)))c[t++]=p[i]; c[t]='\0'; strcpy(p,c);} 将ss所指字符串中所有下标为奇数位置上的字母转化为大写(若该位置上不是字母,则不转换)。若输入abc4EFg,则应输出aBc4Efg。 void fun ( char *ss) {int i; for(i=1;i=’a'&& ss[i]<= 'z') ss[i]-=ss[i];}} 9统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。 void fun(SLIST *h,int *n) {SLIST *p;(*n)=0;p=h->next; while(p){(*n)++;p=p->next;}} main() {SLIST *head;int a[N]={…},num; head=creatlist(a); outlist(head); fun(head,&num); 求出s所指字符串中最后一次出现的t所指字符串的地址,通过函数值返回,若未找到,则函数值为NULL。如,当字符串中的内容为abcdabfabcdx,t中的内容为ab时,输出应是abcdx。当字符串中的内容为abcdabfabcdx,t中的内容为abd时,则程序输出未找到的信息:Not found! char *fun(char *s,char *t) {char *p,*r,*a;a=NULL; while(*s){p=s;r=t; while(*r)if(*r==*p){r++;p++;} else break; if(*r=='\0')a=s;s++;}return a;} 将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全部删除,串中剩余字符所形成的一个新串放在t所指的数组中。若s所指字符串中的内容为ABCDEFG123456,最后t所指的数组中的内容应是246。 void fun(char *s, char t[]) {int i,j=0; for(i=0;inext; while(p){s+=p->data;p=p->next;} return s;} main() {SLIST *head;int a[N]={…}; head=creatlist(a);outlist(head); printf("\nsum=%d\n", fun(head));} 将s所指字符串中出现的t1所指字符串相同的字符串全部替换成t2所指字符串,所形成的新的字符串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。例如:当s所指字符串中所指的内容为abcdabfab,t1所指字符串中的内容为ab,t2所指字符串中的内容为99时,结果在w所指的数组中的内容应为99cd99f99。 void fun (char *s,char *t1, char *t2, char *w) {int i;char *p,*r,*a;strcpy(w,s); while(*w){p=w;r=t1; while(*r)if(*r==*p){r++;p++;} else break; if(*r= ='\0'){a=w;r=t2; while (*r){*a=*r;a++;r++;} w+=strlen(t2);}else w++;}} 将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。例如,当s所指字符串中的内容为ABCDEFGHIJK,则在t所指数组中的内容应是BDFHJ。 void fun(char *s,char t[]) {int i,j=0; for(i=1;isscore[i]*=a modify(&std,a) 求k!(k<13),例如:若k=10,则应输出3628800。 long fun(int k) {if(k>0)return(k*fun(k-1)); else if(k==0)return 1;} 程序定义了N×N的二维数组使数组左下三角元素中的值乘以n。如:若n的值为3,a数组中的值为 a=1 9 7 2 3 8 4 5 6 则返回主程序后a数组中的值应为 3 9 7 6 9 8 12 15 18 Void fun(int a[ ][N], int n) {int i, j; for(i=0; itt[j][i]) { min=tt[j][i]; k=j; } pp[i]=tt[k][i]; } 16利用结构体变量存储了一名学生的信息。函数的功能是输出这位学生的信息。 Void show(STU tt)for(i=0;i<3;i++) printf(”%5.1f”,tt.score[i] Show(std) 求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。例如数组中原有的数为:7、10、12、0、3、6、9、11、5、8,输出的结果为:12、11、7、0、3、6、9、10、5、8。 int fun(int *a,int n) {int i,m,t,k; for(i=0;i<2;i++){m=i; for(k=i+1;ka[m])m=k; t=a[i];a[i]=a[m];a[m]=t;}} w是一个大于10的无符号整数,若w是n(n≥2)位的整数,则函数求出w的低n-1位的数作为函数值返回。例如:w值为5923,则函数返回923;若w值为923,则函数返回23。 unsigned fun(unsigned w) {unsigned t,s=0,s1=1,p=0; t=w; while(t>10) { if(t/10) p=t%10; s=s+p*s1; s1=s1*10; t=t/10; } return s;} 17对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。ss所指字符串数组中共有M个字符串,且串长n[j]) k=j; ………….. Strcpy(ss[k],t); n[k]=n[i];} 判断字符ch中的字符是否与str所指字符串中的某个字符相同;若相同则什么也不做,若不同,则将其插在串的最后。 void fun (char *str,char ch) {while (*str &&*str !=ch) str++; if(*str!=ch) { str[0]=ch;str[1]=′\0′;}} 把s所指字符串中的内容逆置。例如:字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba。 fun(char *s) {char b[N]; int i=0,j; memset(b,0,N); for(j=strlen(s)-1;j>=0;j--)b[i++]=s[j]; strcpy(s,b); 18求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。 void fun(char (*ss)[N]) {int i,j,k=0,n,m,len; for(i=0;in){n=len;k=i;}} for(i=0; i=0;j--) ss[i][m--]=ss[i][j]; for(j=0;j1&&n<170)result*=n--; return result;} 从s所指字符串中删除给定的字符。同一字母的大、小写按不同字符处理。例如:若程序执行时输入字符串为turbo c and borland c++从键盘上输入字符n,则输出后变为:turbo c ad borlad c++。如果输入的字符在字符串中不存在,字符串照原样输出。 Void fun(char s[],char c) {char *p=s; int i=0; while(*p) { if(*p!=c) s[i++]=*p; p++; } s[i]= ′\0 ′; 19求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符*补齐,使其与最长的字符串等长。 void fun(char (*ss)[N]) {int i,j,n,len=0; for(i=0;ilen)len=n;} for(i=0;i*n){*n=len;k=i;}} return(k);} 根据形参m,计算下列公式的值。t=1+1/2+1/3+1/4+…+1/m。例如,若输入5,则应输出2.283333。 double fun(int m) {double t=1.0;int i; for(i=2;i<=m;i++)t+=1.0/i; return t;} 统计一个长度为2的字符串在另一个字符串中出现的次数。如假定输入的字符串为asd asasdfg asd as zx67 asd mklo,子字符串为as,则应当输出6。 int fun(char *str, char *substr) {int cnt=0; char *p=str,*q; while(*p){ q=strstr(p,substr); if(q==NULL) break; p=q+strlen(substr); cnt++; } return cnt; 21求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共有M个字符串,且串长='a')&&(tt[i]<= 'z')) tt[i]-=32;}return(tt);} 将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。例如,输入17,则应输出4,6,8,9,10,12,14,15,16。 void fun(int m, int *k, int xx[]) {int i,j; int t=0; for(i=2;i='0'&&s[i]<='9') {t2[j]=s[i];j++;} else t1[k++]=s[i]; t2[j]=0;t1[k]=0; for(i=0;i0) {p=*(pstr+i);*(pstr+i)=*(pstr+j); *(pstr+j)=p;}} 求出ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符1,则输出3。 int fun(char *ss, char c) {int cnt=0; char*p=ss; while(*p){ if(*p==c)cnt++; p++; } return cnt}; 23在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。 void fun(char *s) {int i,j,n; for(i=0;s[i]!='\0';i++) if(s[i]>='0'&&s[i]<='9'){n=0; while(s[i+1+n]!=0)n++; for(j=i+n+1;j>i;j--) s[j+1]=s[j];s[j+1]='*';i=i+1;}} 根据整型形参 m,计算如下公式的值。y=1+1/(2*2)+1/(3*3)+1/(4*4)+…+1/(m*m)的值。例如,若m=5,则应输出:1.463611。 double fun(int m) {double y=1.0;int i; for(i=2;i<=m;i++) y+=1.0/(i*i);return(y);} 实现B=A+A′,即把矩阵A加上A的转置,存放在矩阵B中。 输入下面矩阵: 1 2 3 4 5 6 7 8 9 其转置矩阵为:1 4 7 2 5 8 3 6 9 则程序输出:2 6 10 6 10 14 10 14 18 void fun (int a[3][3], int b[3][3]) {int c[3][3]; int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++){ c[i][j]=a[j][i]; b[i][j]=a[i][j]+c[i][j]; } 24统计形参s所指字符串中数字字符出现的次数,例如,形参s所指的字符串为:abcdef35adgh3kjsdf7。输出结果为:4。 void fun(char *s,int *t) {int i,n;n=0; for(i=0;s[i]!=NULL;i++) if(s[i]>='0'&&s[i]<='9' )n++; *t=n ;} 通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如,变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。 int fun(int *x,int y) {int t;t=*x;*x=y;return(t);} 求出1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。 void fun(int *a,int *n) {int i; *n=0; for(i=7;i<1000;i++) if(((i%7)==0||(i%11)==0)&&(i%77)!=0) a[(*n)++]=i; 25把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动。例如,形参s所指的字符串为:abcdefgh,执行结果为:ahcbedgf。 void fun(char *s) {int i,n,k;char c;n=0; for(i=0; s[i]!='\0'; i++)n++; if(n%2==0)k=n-1;else k=n-2; c=s[k]; for(i=k-2;i>=1;i=i-2)s[i+2]=s[i]; s[1]=c;} 求s=aa…aa-…-aaa-aa-a(此处aa…aa表示n个a,a和n的值在1至9之间)。如a=3,n=6,则以上表达式为:s=333333-33333-3333-333-33-3。其值是296298。 long fun(int a,int n) {int j;long s=0,t=0; for(j=0;j= 'a'&&*p<='z')pp[*p-'a']+=1; p++; } 26对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。例如,形参s所指的字符串为:baawrskjghzlicda,执行后p所指字符数组中的字符串应为:aachjlsw。 void fun(char *s,char *p) {int i,j,n,x,t;n=0; for(i=0;s[i]!='\0';i++)n++; for(i=1;is[j])t=j; if(t!=i){x=s[i];s[i]=s[t];s[t]=x;}} for(i=1,j=0;i=num) {pi=pi+t;n=n+2;s=-s;t=s/n;} pi=pi*4;return pi;} 删除一个字符串中指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。例如,输入一个字符串world,然后输入3,则调用该函数后的结果为word。 void fun (char a[ ], char b [ ], int n) {int p,m=0; for(p=0;pi;j--)s[j+1]=s[j]; s[j+1]=c;i=i+1;}} 计算数组元素中值为正数的平均值(不包括0)例如数组中元素 的值依次为:39,-47,21,2,-8,15,0则程序的运行结果为19.250000 Double fun(int [x] {double sum=0.0;int c=0,i=0; while(x[i]!=0) {if(x[i]>0) { sum+=x[i];c++}i++;} sum/=c; return sum; 根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)。若n的值为11时,值为1.833333。 double fun(int n) {int k; float str=1.0,sum=1.0; for(k=2;k<=n;k++) { sum=sum+k; str=str+1/sum; } return str; }main() 28有N×N矩阵,根据给定的m(m<=N)值,将每行元素中的值均右移m个位置,左边置为0。例如,N=3,m=2,有下列矩阵 1 2 3 4 5 6 7 8 9 程序执行结果为 0 0 1 0 0 4 0 0 7 void fun(int (*t)[N],int m) {int i,j; for(i=0;i=0;j--) t[i][j+m]=t[i][j]; for(j=0;j=2)&&(n<10)) {yes=1; for(j=2;j<=high/2;j++) if(high%j==0){yes=0;break;} if(yes){sum+=high;n++;} high--;}return sum;} 利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。xn-1=cos(xn) 迭代步骤如下:(1)取x1初值为0.0;(2)x0=x1,把x1的值赋给x0;(3)x1=cos(x0),求出一新的x1;(4)若x0-x1的绝对值小于0.000001,则招待步骤(5),否则执行步骤(2);(5)所求x1就是方程cos(x)-x=0的一个实根作为函数值返回。输出结果Root=0.739086。 double fun() {float x0, x1=0.0,; do{x0=x1;x1=cos(x0); }while(fabs(x0-x1)>=0.000001); return x1;}main() 29将N×N矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素绕回左边。例如,N=3,有下列矩阵 1 2 3 4 5 6 7 8 9 计算结果为 3 1 2 6 4 5 9 7 8 void fun(int (*t)[N]) {int i,j,x; for(i=0;i0;j--) t[i][j]=t[i][j-1];t[i][0]=x;}} 计算并输出下列级数的前N项之和SN,直到SN+1大于q为止,q的值通过形参传入。SN=2/1+3/2+4/3+(N+1)/N。例如,若q的值为50.0,则函数值为49.394948。 double fun(double q) {int n; double s,t;n=2;s=2.0; while(s<=q){t=s; s=s+(n+1.)/n;n++;} printf("n=%d\n ",n);return t;} 求Fibonacci数列中大于T的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)例如,当t=1000时,函数值为1597。 int fun(int t) {int f0=0,f1=1,f; do{ f=f0+f1; f0=f1; f1=f; }while(f=0;j--) t[N-1][N-1-j]=t[j][N-1]; for(j=N-1;j>=0;j--)t[j][N-1]=r[j];} 计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。例如,当n为5时,函数值应为10.407143。f(x)函数定义如下: double 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 n) {int i;double s=0.0,y; for(i=-n; i<=n;i++) {y=f(1.0*i);s+=y;}return s;} 计算s=(ln(1)+ln(2)+ln(3)+…+ln(m))0.5。可调用log(n)函数求ln(n)。若m的值为20,则函数值为6.506583。 double fun(int m) {double s=0.0;int i; for(i=1;i<=m;i++)s+=log(1.0*i); s=sqrt(s); return s;}main() 31有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。例如,若N=3,有下列矩阵: 1 2 3 4 5 6 7 8 9 计算结果为 1 0 0 6 5 0 10 14 9 void fun(int (*t)[N]) {int i,j; for(i=1;i
本文档为【二级C语言题库(新)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_047792
暂无简介~
格式:doc
大小:303KB
软件:Word
页数:70
分类:工学
上传时间:2012-09-15
浏览量:121