2013全国计算机等级考试2级C语言上机题库
- 格式:wps
- 大小:377.59 KB
- 文档页数:35
2013年9月全国计算机等级《二级C++》上机模考试卷(6)总分:100分及格:60分考试时间:120分一、选择题(每小题1分,共40分)(1)将E-R图转换到关系模式时,实体与联系都可以表示成()。
A. 属性B. 关系C. 键D. 域(2)下列叙述中正确的是()。
A. C程序的基本组成单位是语句B. C程序中的每一行只能写一条语句C. 简单C语句必须以分号结束D. C语句必须在一行内写完(3)下列选项合法的标识符是()。
A. 1_1B. 1-jC. _11D. 1__(4)有如下程序#include(iostream.h>voidmain(){charch[2][5]={"6937","8254"),*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j])'\0';j+=2)s=10*s+p[i][j]一'0';cout<<S;}该程序的输出结果是()。
A. 69825B. 63825C. 6385D. 693825(5)有如下程序:#included<iostream>usingnamespacestd;classA{public:virtualvoidfuncl(){cout<<"A1";)voidrune2(){cout<<"A2";}};classB:publicA{public:voidfuncl(){cout<<:"B1";}voidfunc2(){eout<<"B2";}};intmain(){A*p=newB;p->func1();P->func2();return0;}执行该程序,屏幕上将显示输出()。
2013年全国计算机等级二级C 语言模拟试题及答案2013年3月份全国计算机等级二级C语言试题及答案一、填空题1、C语言中基本的数据类型有:__________、__________ 、__________ 。
2、C语言中普通整型变量的类型说明符为__________,在内存中占__________字节,有符号普通整型的数据范围是__________。
3、整数-35在机内的补码表示为__________。
4、执行下列语句int a=8; a+=a-=a*a; 后,a的值是__________ 。
5、有如下语句:char A[ ]={”I am a student”}; 该字符串的长度是__________,A[3]=__________ 。
6、符号”a”和’a’的区别是__________。
7、所谓“指针”就是__________ 。
“&”运算符的作用是__________。
“*”运算符的作用是__________ 。
8、有如下输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应是__________。
二、选择题1、设整型变量a为5,使b不为2的表达式是()。
A. b=a/2B. b=6-(--a)C. b=a%2D. b=a>3?2:12、为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与()组成配对关系。
A. 缩排位置相同的ifB. 在其之前未配对的ifC. 在其之前未配对的最近的ifD.同一行上的if3、以下程序的输出结果是( )。
int x=10,y=10;printf(“%d%d\n”,x--,--y);A. 10 10B. 9 9C. 9 10D. 10 94、设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i 个元素的地址为()。
(总分3, 考试时间90分钟)全国计算机等级考试二级C++上机题库试卷六2013年改错题使用VC6打开考生文件夹下的工程kt11_1,此工程包含一个源程序文件kt11_1.cpp ,但该程序运行有问题,请改正函数中的错误,使该程序的输出结果为:Valuesare:1,2and3Pressanykeytocontinue源程序文件kt11_1.cpp 清单如下:#include<iostream.h>classCommonBase{ public:intx; };/*****************found*****************/classDeriveCommonA::publicCommonBase{ public:inty; };classDeriveCommonB:publicCommonBase{ public:intz; };/*****************found*****************/classOverlapping:publicDeriveCommonA;publicDeriveCommonB{ public:voidDisplay(){ cout<<"Valuesare:"<<DeriveCommonA::x<<","<<y<<"and"<<z<<endl; } };intmain(){ Overlappingov;/*****************found*****************/ov.x=1;ov.y=2;ov.z=3;ov.Display();return0; }1. 简单应用题请编写函数fun(),该函数的功能是判断字符串是否为回文,若是则函数返回1,主函数中输出YES ;否则返回0,主函数中输出NO 。
2013版全国计算机等级考试二级C教程课后编程题答案3-16#include<stdio.h>main(){double a,b,c,s,v;printf("input a,b,c:");scanf("a=%f b=%f c=%f", &a,&b,&c);s=a*b;v=a*b*c;printf("a=%f,b=%f,c=%f\n",a,b,c);printf("s=%f,v=%f",s,v);return 0;}3-17#include <stdio.h>main(){int a,b,c;printf("请输入需要划算成小时和分钟的数值\n");scanf("%d",&a);b=a/60;c=a%60;printf("a=%d小时%d分钟",b,c);return 0;}3-18#include <stdio.h>main(){int a,b,c,d;printf("请输入两个整数a和b\n");scanf("%d %d",&a,&b);c=a/b;d=a%b;printf("a和b的商和余数分别是%d %d",c,d); return 0;}3-19#include<stdio.h>main(){double a,b,c,d;printf("please input three numbers\n"); scanf("%lf%lf%lf",&a,&b,&c);d=(a+b+c)/3;printf("d=%lf",d);return 0;}3-20#include<stdio.h>main(){printf("please input three numbers"); int a,b,c,t;scanf("%d%d%d",&a,&b,&c);t=c;c=b;b=a;a=t;printf("a=%d,b=%d,c=%d",a,b,c); return 0;}4-21#include<stdio.h>main(){int a;printf("请输入a的值a=\n");scanf("%d",&a);switch(a/10){case 0: printf("m=1"); break;case 1: printf("m=1"); break;case 2: printf("m=1"); break;case 3: printf("m=2");break;case 4: printf("m=3");break;case 5: printf("m=4");break;default: printf("m=5");return 0;}}4-22#include<stdio.h>main(){int a,b,c,d,e,f,y,m,t;printf("please input her or his birthday \n"); scanf("%d%d%d",&a,&b,&c);printf("请输入现在的日期\n");scanf("%d%d%d",&d,&e,&f);y=d-a;m=e-b;t=f-c;printf("该生的实际年龄是%d年%d月%d天",y,m,t); return 0;}4-24#include<stdio.h>main(){int a,b,c,max;printf("请输入三个整数\n");scanf("%d%d%d",&a,&b,&c);max=a;if(a<b) max=b;if(max<c) max=c;printf("max=%d",max);return 0;}4-25#include <stdio.h>main(){double x,y;printf("请输入x的值\n");scanf("%lf",&x);if(-5<x&&x<0) y=x;if(x==0) y=x-1;if(0<x&&x<10) y=x+1;if(x<-5||x==-5)printf("您输入的x的值不在查找范围内"); if(x>10||x==10) printf("您输入的x的值不在查找范围内"); printf("y=%lf",y);return 0;5-17#include<stdio.h>main(){int n,i=1,t,sum=0;for(n=1;n<=101;n+=2){t=i*n;sum+=t;i=-i;}printf("sum=%d",sum);return 0;}5-18#include<stdio.h>main(){int t=1,n;float sum=1.0;for(n=1;n<=50;n++){t=t*n;sum+=1/t;}printf("e=%.3f",sum);return 0;}5-19#include<stdio.h>main(){int y,n=0;for(y=2000;y<=3000;y++){if(y%4==0&&y%100!=0||y%400==0) {printf("%d ",y);n++;}if(n%10==0) printf("\n");}printf("n=%d",n);return 0;}5-20#include<stdio.h>main(){int i,j,k,m,n,h;for(i=1;i<=3;i++){for(j=i;j<=3;j++)printf(" ");for(k=0;k<2*i-1;k++)printf("*");printf("\n");}for(m=0;m<4;m++){for(n=0;n<m;n++) printf(" ");for(h=0;h<7-2*m;h++) printf("*");printf("\n");}return 0;}6-19#include<stdio.h>main(){char ch;int n=0;printf("请输入一行字符并用回车换行符结束输入\n"); do{ch=getchar();printf("ch=%c ASCII=%d",ch,ch);n++;if(n%3==0) putchar('\n');}while((ch=getchar())!='\n');putchar('\n');return 0;6-20#include<stdio.h>main(){char ch;printf("请输入一行字符并用回车换行符结束输入\n"); while((ch=getchar())!='\n'){if(ch!=' ') printf("%c",ch);}putchar('\n');return 0;}6-216-21#include<stdio.h>main(){printf("请输入几行数字并用!来结束\n");char ch;int n=0;while((ch=getchar())!='!'){if(ch=='\n') n++;}printf("输入的行数是:");printf("%d",n);return 0;}6-22#include<stdio.h>main(){char ch;int n=0;printf("请输入一行字符并用回车换行符结束输入\n"); while((ch=getchar())!='\n'){ if('a'<ch&&ch<'z') n++;}printf("n=%d",n);putchar('\n');return 0;}6-23#include<stdio.h>main(){ int i,j,k;for(i=1;i<=5;i++){for(j=0;j<=5-i;j++) printf(" ");for(k=0;k<2*i-1;k++) printf("%c",'A'+i-1); putchar('\n');}return 0;}int mymod(int a,int b){int c;c=b%a;return c;}7-15#include<stdio.h>main(){ int a,b,c;printf("please input two numbers\n"); scanf("%d%d",&a,&b);c=mymod(a,b);printf("所求余数是%d",c); return 0;}7-16#include<stdio.h>main(){int m,n;printf("请输入m的值\n"); scanf("%d",m);double t=1.0;for(n=2;n<=m;n++)t+=1/(n*n);printf("t=%f",t);return 0;}7-17#include<stdio.h>main(){int m,n;printf("请输入m的值\n"); scanf("%d",m);double t=1.0;for(n=2;n<=m;n++)t+=1/(n*n);printf("t=%f",t);return 0;}7-18float f(float x){float s;s=x*x-5*x+4;return s;}#include<stdio.h>main(){float t,y1;printf("请输入参数t的值\n"); scanf("%f",&t);y1=f(t);printf("y1=%f",y1);return 0;}8-17voidf( float a, float b, float *p1,float *p2) {*p1=a+b;*p2=a-b;}#include<stdio.h>main(){float x, y ;printf("请输入x和y的值\n");scanf ("%f%f",x,y);f(x,y,&x,&y);printf("%f%f",x,y);return 0;}8-18void f(int x ,int y ,int z ,int *p1 ,int *p2) {*p1=x;*p2=z;if(*p1>y) *p1=y;if(*p1>z) *p1=z;if(*p2<y) *p2=y;if(*p2<x) *p2=x;}#include<stdio.h>main(){printf("请输入a b c的值\n");int a,b,c;scanf("%d%d%d",&a,&b,&c);f(a,b,c,&a,&b);printf("三个数中最小的数是%d最大的数是%d",a,b); return 0;}9-27#include<stdio.h>main(){char ch;int num[9]={0},i;printf("请输入一行字符以回车来结束输入\n"); while((ch=getchar())!='\n')if('0'<ch&&ch<'9')num[ch-'0']+=1;for(i=0;i<9;i++)printf("%d字符出现的次数是:%d次\n",i,num[i]);return 0;}9-28#include<stdio.h>main(){int a[10]={0,1,2,3,4,5,6,7,8,9},i,n;printf("请输入需要向前移动的第一个元素的下标n(n>0):\n"); scanf("%d",&n);for(i=n;i<=9;i++)a[i-1]=a[i];for(i=0;i<=8;i++)printf("%d",a[i]);return 0;}9-29#include<stdio.h>#include<stdlib.h>main(){int y[20],h[20],k=0,i,j;printf("y数组中的值如下\n");for(i=0;i<20;i++){ y[i]=rand()%99;printf("%d ",y[i]);}for(i=0;i<=10;i++){if(y[i]%2==1){h[k]=y[i];k++;}}printf("y数组中的奇数如下\n"); for(j=0;j<k;j++)printf("%d ",h[j]);return 0;}9-30#include<stdio.h>main(){int j,p,k,m;char a[8]={'a','2','c','d','e','f','g','9'},t; for(j=0;j<8;j++){if('A'<=a[j]&&a[j]<='z'){p=j;for(k=j+1;k<7;k++)if('A'<=a[k]&&a[k]<='z')if(a[p]<a[k]) p=k;t=a[j]; a[j]=a[p]; a[p]=t;}}for(m=0;m<=7;m++)printf("%c ",a[m]);return 0;}9-31#include<stdio.h>main(){int i=0,m;char ch,a[11]={0},x;printf("请输入8个有序的数\n"); do {ch=getchar();a[i]=ch;i++;}while((ch=getchar())!='\n');printf("输入的数分别是:");for(m=0;m<8;m++)printf(" a[%d]=%c\n ",m,a[m]); putchar('\n');printf("请输入需要插入的数\n"); int j,k,s,l,p;scanf("%c",&x);if(x<a[0]){for(l=10;l>=1;l--)a[l]=a[l-1];a[0]=x;}if(a[0]<x&&x<a[9]){for(j=0;j<=8;j++)if(a[j]<x&&x<a[j+1]){p=j+1;for(k=10;k>j+1;k--)a[k]=a[k-1];}}a[p]=x;if(x>a[9])a[10]=x;for(s=0;s<=8;s++)printf("%c ",a[s]);return 0;}9-32#include<stdio.h>main(){int h,j,i,k,a[15];printf("请输入需要转化成2进制的10进制数\n"); scanf("%d",&h);do{j=h%2;h=h/2;a[i]=j;i++;}while(h/2==0);for(k=i;k>=0;k--)printf("%d",a[k]);return 0;}9-33#include<stdio.h>#include<stdlib.h>main(){int i=0,n=1,a[15],j,x;x=rand()%20;a[i]=x;for(j=0;n<=14;j++){ x=rand()%20;while(i<n&&x!=a[i])i++;if(i==n){a[n]=x;n++;}i=0;}printf("a数组中不重复的15个数是:");for(j=0;j<=14;j++)printf("%d " ,a[j]);return 0;}9-34#include <stdio.h>#include <stdlib.h>main(){int a[5][5],k=0,c1=0,c2=0,h[5]={0},e[5]={0},o,i,j,l,n,y,z; for(i=0;i<5;i++)for(j=0;j<5;j++){a[i][j]=rand()%30;printf("%d ",a[i][j]);k++;if(k%5==0)printf("\n");}for(z=0;z<=4;z++){c1=c1+a[z][z];c2=c2+a[z][5-z];}printf("c1=%d c2=%d\n",c1,c2); for(l=0;l<5;l++)for(n=0;n<5;n++){h[l]=h[l]+a[l][n];e[l]=e[l]+a[n][l];}for(o=0;o<5;o++)printf("h[%d]=%d ",o,h[o]); printf("\n");for(y=0;y<=4;y++)printf("e[%d]=%d ",y,e[y]); return 0;}9-36include<stdio.h>main(){inta[9][9],k,i,j;printf("* * A MULTIPLICATION TABLE * *\n"); printf(".......................................................\n"); printf("(1)");for(k=2;k<=9;k++)printf("(%d)",k);printf("\n");for(i=0;i<9;i++){printf("(%d)",i+1);for(j=0;j<9;j++){a[i][j]=(i+1)*(j+1);printf("%-4d",a[i][j]);}printf("\n");}printf(".......................................................\n"); return 0;}9-37#include<stdio.h>#include<stdlib.h>main(){int a[5][5],i,j,k,m;for(i=0;i<5;i++){for(j=0;j<5;j++){a[i][j]=rand()%100;printf("%-4d",a[i][j]);}printf("\n\n");}printf("转置后的距阵如下\n"); for(k=0;k<5;k++){ for(m=0;m<5;m++)printf("%-4d",a[m][k]);printf("\n");}return 0;}10-19#include<stdio.h>scomp(char*s1,char*s2){int i;i=0;while(sl[i]==s2[i]&&s1[i]) i++;jreturn (s1[i]-s2[i]);}main(){char str1[]="ABC",str2[10];get(tr2);if(scomp(str1,str2)<0printf("str1>str2\n"); else if(scomp (str1,str2)<0)printf("str1<str2\n"); elseprintf("str1=str2\n");}10-20#include<stdio.h>void gettext (char(*)[61],int*);void puttext (char[][61],int);main(){char text[40][61];int n;gettext (text,&n);puttext (text,n);}void gettext (char(*t)[61],int*m){ int n;printf("enter texline,ended to empty line:\n"); n=0;gets(t[n]);while(*t[n]){n++;gets(t[n]);}*m=n;}void puttext (char t[][61],int n){ int i;for(i=0;i<n;i++){ printf("%-2d:",i+1);puts(t[i]);}}10-21#include<stdio.h>#include<string.h>getstr(char p[][80]){char t[80];int n=0;printf("enter string.a empty sring to end\n");gets(t);while(strcmp(t," ")){strcmp(p[n],t);n++;}return n;}char*findmin(char(*a)[80],int n){char*p;int i;p=a[0];for(i=0;i<=n;i++)if(strcmp(p,a[i]))p=a[i];return p;}11-11#include<stdio.h>#include<string.h>main(int argv,char*a[]){char str[]="Ilove you pretty because not olny are you elegent but also you make so success";int i;printf("请输入outch或outch-2或outch+6\n");if(*(a[1]+1)==2)for(i=0;i<=1;i++)printf("%c",str[strlen(str)-1-i]);if(*(a[1]+1)==6)for(i=0;i<=5;i++)printf("%c",str[i]);if(argv==1)for(i=0;i<=10;i++)printf("%c",str[i]);return 0;}11-12#include<stdio.h>void f(int n){int d,t;d=n%2;printf("%d",d);t=n/2;if(t>=1) f(t);}main(){int num;printf("请输入一个10进制的数\n"); scanf("%d",&num);f(num);return 0;11-13#include<stdio.h>int f(int n){int t=0;if(n!=0) return n+f(n-1);else return 0;}main(){int a,s;printf("请输入a的值\n");scanf("%d",&a);printf("%d",f(a));}11-14#include<stdio.h>#define N30struct stud{char num[5],name[10]; int s[4];double ave;};void readrec(struct stud*ps);void write (struct stud*ps);main(){struct stud student[N];readrec(student);write(student);return 0;}void readrec(struct stud*ps){int i,j;for(i=0;i<N;i++){gets(ps[i].num);gets(ps[i].name);ps[i].ave=0;for(j=0;j>4;j++){scanf("%d",&ps[i].s[j]);ps[i].ave+=ps[i].s[j]/4.0;} getchar();}void write (struct stud*ps){int i,j;for(i=0;i<N;i++){printf("%s %s",(ps+i)->num,ps[i].name);for(j=0;j<4;j++) printf("%3d",ps[i].s[j]);printf("%6.1f\n",ps[i].ave);}}14-12#include<stdio.h>#define N30struct stud{char num[5],name[10];int s[4];double ave;};void readrec(struct stud*ps);void write (struct stud*ps);main(){struct stud student[N];readrec(student);write(student);return 0;}void readrec(struct stud*ps){int i,j;for(i=0;i<N;i++){gets(ps[i].num);gets(ps[i].name);ps[i].ave=0;for(j=0;j>4;j++){scanf("%d",&ps[i].s[j]);ps[i].ave+=ps[i].s[j]/4.0;} getchar();}void write (struct stud*ps){int i,j;for(i=0;i<N;i++){printf("%s %s",(ps+i)->num,ps[i].name); for(j=0;j<4;j++) printf("%3d",ps[i].s[j]); printf("%6.1f\n",ps[i].ave);}}14-13#include<stdio.h>#include<stdlib.h>struct student {int date;struct student*next;};typedef struct student SLIST;SLIST * create_slist(){ int c;SLIST*h,*s,*r;h=(SLIST*)malloc(sizeof(SLIST));r=h;printf("请输入整形数据并以-1来结束\n"); scanf("%d",&c);while(c!=-1){s=(SLIST*)malloc(sizeof(SLIST)); s->date=c;r->next=s;r=s;scanf("%d",&c);}r->next='\0';return h;}int maxaval(SLIST*head){int m;SLIST *p,*pmax;p=head->next;m=p->date; pmax=p;for(p=p->next;p;p=p->next)if(p->date>m) m=p->date; return m;}SLIST *maxadd(SLIST*head) {int m;SLIST *p,*pmax;p=head->next;m=p->date; pmax=p;for(p=p->next;p;p=p->next) if(p->date>m) pmax=p; return pmax;}main(){SLIST *add;add=create_slist();printf("%d\n", maxaval(add)); printf("%d",maxadd(add));。
计算机二级C上机考试题库及答案一、单项选择题(每题1分,共10分)1. 在C语言中,以下哪个选项是正确的字符串定义方式?A. char str[] = "Hello, World!";B. char str[] = {'H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'};C. char str[] = {"Hello, World!"};D. char str[] = "Hello, World!";答案:A2. 下列哪个函数用于将字符串s1复制到s2中?A. strcat(s1, s2);B. strcpy(s1, s2);C. strcmp(s1, s2);D. strncpy(s1, s2, n);答案:B3. 在C语言中,以下哪个关键字用于声明一个函数?A. intB. voidC. returnD. function答案:A4. 如果一个变量被声明为static int,那么这个变量的生命周期是?A. 只在函数调用期间B. 程序运行期间C. 只在程序启动时D. 只在程序结束时答案:B5. 在C语言中,以下哪个运算符用于计算两个整数的差?A. +B. -C. *D. /答案:B6. 以下哪个选项不是C语言中合法的标识符?A. _myVarB. my_varC. 2ndVarD. var$name答案:C7. 在C语言中,以下哪个选项是正确的数组定义方式?A. int arr[5] = {1, 2, 3, 4, 5};B. int arr[] = {1, 2, 3, 4, 5};C. int arr[5] = {1, 2, 3};D. int arr[] = {1, 2, 3, 4};答案:A8. 以下哪个选项是正确的C语言注释方式?A. /* This is a comment */B. // This is a commentC. //* This is a commentD. /* This is a comment */答案:A9. 在C语言中,以下哪个选项是正确的多行字符串定义方式?A. char str[] = "Line1\nLine2";B. char str[] = 'Line1\nLine2';C. char str[] = "Line1\nLine2";D. char str[] = "Line1\nLine2";答案:A10. 在C语言中,以下哪个选项是正确的结构体定义方式?A. struct Student {int id;char name[50];};B. struct Student {int id;char name[];};C. struct Student {int id;char name[50] = "John Doe";};D. struct Student {int id;char name[];};答案:A二、填空题(每题2分,共20分)1. 在C语言中,使用________运算符可以对变量进行自增操作。
注释:有表格的,左为自己编写且调试通过的程序,右为答案的程序,方便对照。
没有表格的,是自己编写且调试通过的程序。
5253int j=0;char *p=a;while(*p){if(*p=='*'){ a[j++]=*p;p++;}else break;}while(*p){ if(*p>='A'&&*p<='z')a[j++]=*p;p++;}a[j]='\0';5760inti,j=0,n=0;char *p=a;while(*p){if(*p=='*'){ a[j++]=*p;p++;}else break;}while(*p){ a[n++]=*p; p++;}a[n]='\0';66(题中求Fibonacci数列中大于t的最小的一个数,答案用到了do-while循环,也就是先循环一次再判断循环条件,而while循环就是先判断循环条件再循环,我认为答案更正确,但是最后的结果都是一样的,为什么呢?原来我在循环的前面已经算了一次f值了。
)67inti,j;for(j=0;j<nn;j++)for(i=0;i<mm;i++){b[*n]=s[i][j];/*注意此处的用法*/*n=*n+1;}68inti,j=0;for(i=1;i<=1000;i++)if((i%7==0||i%11==0)&&(!(i%7==0&&i%11==0)))a[j++]=i;a[j]='\0';*n=j;59inti,j,min,m=0;for(j=0;j<N;j++){min=tt[0][j];for(i=0;i<M;i++){ if(min>=tt[i][j]) min=tt[i][j];}pp[m++]=min;}pp[m]='\0';70inti;double u=1.0,t,s=1.0;for(i=2;i<=n;i++){ u=u+i;t=1.0/u;s+=t;}return s;71(按照自己的思路编写正确)inti=0,j=0,m;char *p=a,h[81];while(*p){ if(*p=='*')h[i++]=*p;else break;p++;}while(*p){ if(*p!='\0')a[j++]=*p;p++;}for(m=0;m<i;m++){a[j++]=h[m];}a[j]='\0';72*c=(b%10)*1000+(a/10)*100+(b/10)*10+(a%10);73(注意是行-列的顺序,还是列-行的顺序)inti,j,n=0;for(i=0; i<N;i++) /* 请填写相应语句完成其功能*/{for(j=0;j<M;j++)b[n++]=s[j][i];}b[n]='\0';74(每一次排序,把最小的放在最后,然后总体循环需要的次数4次)char t;inti,j;for(i=0;i<5;i++)for(j=1;j<num-2;j++)if(s[j]<s[j+1]){ t=s[j+1];s[j+1]=s[j];s[j]=t;}75(体会while循环的精髓,对字符串的循环用while很有用)int n=0;while(*ss){ if(*ss==c)n++;ss++;}return n;76(交换赋值思想)inti,j;char t;i=strlen(s);for(j=0;j<i/2;j++){t=s[i-j-1];s[i-j-1]=s[j];s[j]=t;}77(看到字符串要联想到strlen、strcat、strcmp、strcpy)inti,j;j=strlen(str);for(i=0;i<j/2;i++)if(str[i]==str[j-i-1])return 1;else return 0;78(删除一个字符,从另一个方面来说,就是把其它字符赋给新的字符数组)char *p=s;inti=0;while(*p){ if(*p!=c)s[i++]=*p;p++;}79(注意形参和实参的关系)inti,j;for(i=0;i<mm;i++)for(j=0;j<nn;j++){ b[*n]=s[i][j];*n+=1;}80(求小于m的非素数)inti,j,q=0;for(i=2;i<m;i++){for(j=2;j<i;j++){if(i%j==0){xx[q++]=i;break;}}}xx[q]='\0';*k=q;81(链表不是很熟,但是代码写出来,调试通过了)double max;STREC *p;/*定义结构体指针p*/max=h->s;p=h; /*h赋给p,(STREC *h)*/while(p){ if(max<p->s)max=p->s;p=p->next;}return max;82(上三角、下三角)inti,j;for(i=0;i<N;i++)for(j=0;j<=i;j++)a[i][j]=0;83(对熟悉的用法和题型,可以按照自己的思路编程)int n=0,a[80],i,t=1;while(w){a[n++]=w%10;w=w/10;}w=0;for(i=0;i<n-1;i++){w+=a[i]*t;t=t*10;}return w;84inti,j=0;for(i=1;i<=x;i=i+2)if(x%i==0) pp[j++]=i;*n=j;85int j=0;while(*s){ if(*s%2!=0)t[j++]=*s;s++;}t[j]='\0';86inti,j,min=a[0].s;for(i=0;i<N;i++)if(min<a[i].s){ min=a[i].s;j=i;}*s=a[j];87inti,j;for(i=0;i<N;i++)for(j=0;j<=i;j++)a[i][j]*=n;88while(*ss){if(*(ss+1)>='a'&&*(ss+1)<='z')*(ss+1)-=32; ss+=2;}89(先拆分,再合并思想)inti=0,j=0,m,n;char *q=a,w[81]; /*注意此处引入中间变量*p,因为返回是*a */ while(*q){if(*q!='*') a[i++]=*q;q++;}a[i]='\0';while(*(p++)){if(*p=='*') w[j++]=*p;}w[j]='\0';for(n=0;n<j;n++)a[i++]=w[n];a[i]='\0';90int j=0;while(*(s++)){ t[j++]=*s;s++;}t[j]='\0';91inti,j,m=0;for(i=0;i<M;i++){ for(j=0;j<N;j++){ if(a[i][j])b[m++]=a[i][j];else break;}}b[m]='\0';(形参为void fun(char a[M][N], char *b))92(当返回值为杂乱的数时,注意添加return)double sum=0.0,aver;inti;for(i=0;i<n;i++)sum+=a[i];aver=sum/n;return aver;93float x1=0.0,x0;x0=x1;x1=cos(x0);while(fabs(x0-x1)>1.0E-6){ x0=x1;x1=cos(x0);}return x1;94inti,j=0;for(i=1;i<=m;i++)if(i%7==0||i%11==0)a[j++]=i;*n=j;95*c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10);96比较清晰。
计算机二级C上机考试题库及答案1. 题目一:编写一个程序,实现两个整数的加法运算。
要求:- 定义两个整数变量a和b。
- 编写一个函数add(),实现两个整数的加法运算。
- 在main函数中调用add()函数,并打印结果。
答案:```c#include <stdio.h>int add(int x, int y) {return x + y;}int main() {int a = 5, b = 10;printf("The sum of %d and %d is %d\n", a, b, add(a, b));return 0;}```2. 题目二:编写一个程序,实现字符串的反转。
要求:- 定义一个字符串变量str。
- 编写一个函数reverse(),实现字符串的反转。
- 在main函数中调用reverse()函数,并打印反转后的结果。
答案:```c#include <stdio.h>#include <string.h>void reverse(char *str) {int length = strlen(str);for (int i = 0; i < length / 2; i++) {char temp = str[i];str[i] = str[length - i - 1];str[length - i - 1] = temp;}}int main() {char str[] = "Hello World";reverse(str);printf("Reversed string: %s\n", str);return 0;}```3. 题目三:编写一个程序,实现计算数组中元素的平均值。
要求:- 定义一个整数数组arr。
- 编写一个函数average(),计算数组中元素的平均值。
- 在main函数中调用average()函数,并打印平均值。
计算机二级C上机考试题库及答案一、选择题1. 在C语言中,以下哪个选项是正确的整型常量表示?A. 0x12B. 0.123C. 1.2e3D. 0b1010答案:A2. 若有以下定义:```cint a=1, b=2, c;```则执行语句 `c = a + b;` 后,变量 `c` 的值是多少?A. 0B. 1C. 3D. 4答案:C3. 在C语言中,以下哪个关键字用于声明一个函数?A. structB. unionC. staticD. void答案:D二、填空题1. 在C语言中,`printf` 函数用于输出,其对应的输入函数是________ 。
答案:scanf2. 若定义 `char str[10] = "Hello";`,则 `str` 数组的第7个元素是 ________ 。
答案:\03. 在C语言中,声明一个指向整型的指针变量 `p`,其正确的声明方式是 ________ 。
答案:int *p;三、编程题1. 编写一个C程序,计算并输出以下数列的前10项之和:1, 1/2, 1/3, 1/4, ...```c#include <stdio.h>int main() {double sum = 0.0;for (int i = 1; i <= 10; i++) {sum += 1.0 / i;}printf("The sum of the series is: %f\n", sum);return 0;}```2. 给定一个字符串,编写一个C程序,将字符串中的所有小写字母转换为大写字母。
```c#include <stdio.h>int main() {char str[] = "Hello, World!";for (int i = 0; str[i] != '\0'; i++) {if (str[i] >= 'a' && str[i] <= 'z') {str[i] -= 'a' - 'A';}}printf("%s\n", str);return 0;}```结束语:以上是计算机二级C上机考试题库及答案的部分内容,希望对您的学习和复习有所帮助。
2013年3月全国计算机等级考试二级C语言上机题库100套完全版aaa导读:就爱阅读网友为您分享以下“2013年3月全国计算机等级考试二级C语言上机题库100套完全版aaa”的资讯,希望对您有所帮助,感谢您对的支持!第 3 处:{ tl++; /*****found*** ***/ fscanf(fp,”%s%s%s”,str,str1,str2); 2.tt++; 程序修改给定程序MODI1.C 中函数fun 的功能是:对N 名学生的学生成绩,按从高到低的顺序找出前m(m<10) if(tl>sl) return t; 名学生来,将这些学生数据存放在一个动态分配的else return s; 连续存储区中,此存储区的首地址作为函数值返回。
} STU *fun(STU a[ ],int m) { STU b[N],*t; 3. 程序设计int i,j,k; 请编写函数fun,函数的功能是:移动字符串中的/*****found*** ***/ 内容,移动的规则如下:把第 1 到第m 个字符,平t=(STU *)calloc(sizeof(STU),m); 均移到字符串的最后,把第m+1个到最后的;字for(i=0;i<N;i++) 符移到字符串的前部。
void fun(char *w, int m ) for(k=0;k<m;k++) { { for(i=j=0;i<N;i++) int i; if(b[i].s>b[j].s)j=i; /*****found*** ***/ t[k]=b[j]; b[j].s=0; 第七套1.程序填空return t; 程序通过定义并赋初值的方式,利用结构体变量存} 储了一名学生的信息,函数fun 的功能是输出这位学生的信息。
3. 程序设计请编写函数fun,函数的功能是,删去一维数组中第 1 处void show( STU tt) 所有相同的数,使之只剩一个。
全国计算机二级c语言上机练习题及答案(二)计算机二级C上机练习题汇总(二)第四套(1)填空题人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。
函数fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!#include#include#define N 8typedef struct{ char num[10];int year,month,day ;}STU;/**********found**********/___1___ fun(STU *std, char *num){ int i; STU a={"",9999,99,99};for (i=0; i<="" p="">/**********found**********/if( strcmp(___2___,num)==0 )/**********found**********/return (___3___);return a;}main(){ STU std[N]={ {"111111",1984,2,15},{"222222",1983,9,21},{"333333",19 84,9,1},{"444444",1983,7,15},{"555555",1984,9,28},{"666666",1983,1 1,15},{"777777",1983,6,22},{"888888",1984,8,19}};STU p;char n[10]="666666";p=fun(std,n);if(p.num[0]==0)printf("\nNot found !\n");else{ printf("\nSucceed !\n ");printf("%s %d-%d-%d\n",p.num,p.year,p.month,p.day);}}第1 处:STU fun(STU *std, char *num)第2 处:if( strcmp(std[i].num,num)==0 )第3 处:return (std[i]);(2)改错题给定程序modi.c中,函数fun的功能是:将s所指字符串的正序和反序进行连接,形成一个新串放在t 所指的数组中。
第一套: 1.1 填空 给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶函数的数去除,剩余的书按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。 void fun(unsigned long *n) { unsigned long x=0, i; int t; i=1; while(*n) /**********found**********/ { t=*n % 10 ; /**********found**********/ if(t%2!= 0) { x=x+t*i; i=i*10; } *n =*n /10; } /**********found**********/ *n=x; } 1.2 改错 给定程序MODI1.C 中函数fun的功能是:计算n!。 double fun ( int n ) { double result = 1.0 ; /************found************/ if (n == 0) return 1.0 ; while( n >1 && n < 170 ) /************found************/ result *= n--; return result ;} 1.3 程序 请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。 long fun ( char *p) { /* 以下代码仅供参考 */ int i, len, t; /* len为串长,t为正负标识 */ long x=0; len=strlen(p); if(p[0]=='-') { t=-1; len--; p++; } else t=1; /* 以下完成数字字符串转换为一个数字 */ while(*p) x = x*10-48+(*p++); return x*t; } 第二套: 2.1填空 给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数些到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。 void fun(char *s, int a, double f) {/**********found**********/ FILE * fp; char ch; fp = fopen("file1.txt", "w"); fprintf(fp, "%s %d %f\n", s, a, f); fclose(fp); fp = fopen("file1.txt", "r"); printf("\nThe result :\n\n"); ch = fgetc(fp); /**********found**********/ while (!feof(fp)) { /**********found**********/ putchar(ch); ch = fgetc(fp); } putchar('\n'); fclose(fp); } 2.2 改错 给定程序MODI1.C中函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。请改正函数fun中指定部位的错误,使它能得出正确的结果。 #include void fun(char *s) { int i,j; for(i=0,j=0; s[i]!='\0'; i++) if(s[i]>='0' && s[i]<='9') /**********found**********/ s[j++]=s[i]; /**********found**********/ s[j]='\0';} 2.3程序 请编写函数fun,函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。 void fun(char s[][N], char *b) { int i,j,n=0; for(i=0; i < N;i++) /* 请填写相应语句完成其功能 */ { for(j = 0 ; j < M ; j++) { b[n] = s[j][i] ; n = i * M + j + 1; } } b[n]='\0'; } 第三套: 3.1填空 程序通过定义学生机构体变量,存储了学生的学号,姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。 void fun(char *filename, STU n) { FILE *fp; /**********found**********/ fp = fopen(filename, "rb+"); /**********found**********/ fseek(fp, -1L*sizeof(STU), SEEK_END); /**********found**********/ fwrite(&n, sizeof(STU), 1, fp); fclose(fp);} 3.2改错 给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。 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 h;} 3.3程序 请编写函数fun,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。(有问题) int fun( char *s) { int k = 1 ; while(*s) { if (*s == ' ') k++ ; s++ ; } return k ; } 第四套: 4.1填空 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排列后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。 #define N 5 typedef struct student { long sno; char name[10]; float score[3]; } STU; void fun(char *filename) { FILE *fp; int i, j; STU s[N], t; /**********found**********/ fp = fopen(filename, "rb"); fread(s, sizeof(STU), N, fp); fclose(fp); for (i=0; is[j].sno) { t = s[i]; s[i] = s[j]; s[j] = t; } fp = fopen(filename, "wb"); /**********found**********/ fwrite(s, sizeof(STU), N, fp); fclose(fp);} 4.2改错 给定程序MODI1.C中函数fun的功能是:在字符串的最前端假如n个*号,形成新串,并且覆盖原串。注意:字符串的长度最长允许为79。 void fun ( char s[], int n ) { char a[80] , *p; int i; /**********found***********/ p=s; for(i=0; i 10) b[M - 1]++ ; else b[j]++ ;} } 第五套: 5.1填空 给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成响应的整数、浮点数,然后将其显示在屏幕上。 void fun(char *s, int a, double f) {/**********found**********/ FILE * fp; char str[100], str1[100], str2[100]; int a1; double f1; fp = fopen("file1.txt", "w"); fprintf(fp, "%s %d %f\n", s, a, f); /**********found**********/ fclose(fp) ; fp = fopen("file1.txt", "r"); /**********found**********/ fscanf(fp,"%s%s%s", str, str1, str2); fclose(fp); a1 = atoi(str1); f1 = atof(str2); printf("\nThe result :\n\n%s %d %f\n", str, a1, f1);} 5.2改错 给定程序MODI1.C中函数fun的功能是:对N名学生的学习成绩按从高到低的顺序找出前m(≤10)名学生出来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首笛子作为函数值返回。 typedef struct ss { char num[10]; int s; } STU; STU *fun(STU a[], int m) { STU b[N], *t; int i,j,k; /**********found**********/ t=(STU *)calloc(sizeof(STU),m); for(i=0; ifor(k=0; k{ for(i=j=0; iif(b[i].s > b[j].s) j=i; /**********found**********/ t[k]=b[j]; b[j].s=0; } return t;} 5.3程序 请编写函数fun,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。删除后,数组中的内容应该是:2 3 4 5 6 7 8 9 10。 int fun(int a[], int n) { int i, j = 1, k = a[0] ; for(i = 1 ; i < n ; i++) if(k != a[i]) { a[j++]=a[i] ; k = a[i] ; } a[j] = 0 ; return j ;} 第六套: 6.1填空 给定程序中:函数fun的功能是根据形参i的值返回某个函数的值。当调用正确时,程序输出: x1=5.000000, x2=3.000000, x1*x1+x1*x2=40.000000。 double f1(double x) { return x*x; } double f2(double x, double y) { return x*y; } /**********found**********/ double fun(int i, double x, double y) { if (i==1) /**********found**********/ return f1(x); else /**********found**********/ return f2(x, y);} 6.2改错 给定程序MODI1.C中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。 /**********found**********/ char *fun(char *s, char *t) { int sl=0,tl=0; char *ss, *tt; ss=s; tt=t; while(*ss) { sl++; /**********found**********/ ss++; }