计算机等级考试 南开百题—字符串左右排序和比较类试题
2011下半年南开100题for二级C
1、编一个函数fun(char *s),函数的功能是把字符串中的内容逆置。
例子如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcba。
试题程序:#include <string.h>#include <conio.h>#include <stdio.h>#define N 81/*注:该题的算法是先分别找出字符串的两头,然后同时逐一往中间移动,每移动一次都进行两字符的位置对换,直到中间字符(用s+i<s+n-1-i来控制)。
由于s+i中一个地址,因此要注意把它的内容取出再进行换位。
即先进行取内容运算*) */fun(char *s){ int i=0,t,n=strlen(s);for(;s+i<s+n-1-i;i++){t=*(s+i);*(s+i)=*(s+n-1-i);*(s+n-1-i)= t;}}main(){ char a[N];clrscr();printf("Enter a string:"); gets(a); printf("The original stringis:");puts(a);fun(a);printf("\n");printf("The string after modified:"); puts(a);}2、写程序,实现矩阵(3行3列)的转置(即行列互换)。
例如,输入一面的矩阵:程序输出:试题程序:#include <stdio.h>#include <conio.h> /*这题的关键在于进行行列下标转换的算法,由矩阵的对称性我们不难看出在进行行列互换时a[j]在好是与a[j][i]互换,因而只要我位让程序走完矩阵的左上角即可(用for(i=0;i<2;i++)再套for(j=i+1;j<3;j++)来完成左上角的走动。
字符串例题
字符串例题字符串是计算机程序中常见的数据类型之一,它由一系列字符组成,可以用来表示文本、姓名、地址等信息。
本文将针对字符串的一些常见例题进行分析,并提供相关参考内容。
1. 判断回文字符串:回文字符串是指从左至右和从右至左读都是一样的字符串。
可以通过比较字符串的首尾字符是否相同,逐个向中间靠拢来判断字符串是否回文。
参考内容:```pythondef is_palindrome(s):left = 0right = len(s) - 1while left < right:if s[left] != s[right]:return Falseleft += 1right -= 1return Trues = input("请输入一个字符串: ")if is_palindrome(s):print("是回文字符串")else:print("不是回文字符串")```2. 统计字符出现次数:给定一个字符串和一个字符,统计该字符在字符串中出现的次数。
参考内容:```pythondef count_char(s, c):count = 0for char in s:if char == c:count += 1return counts = input("请输入一个字符串: ")c = input("请输入要统计的字符: ")print("字符", c, "在字符串中出现的次数为:", count_char(s, c)) ```3. 反转字符串:将给定的字符串逆序输出。
参考内容:```pythondef reverse_string(s):return s[::-1]s = input("请输入一个字符串: ")print("反转后的字符串为:", reverse_string(s))```4. 判断字符串是否包含另一个字符串:给定两个字符串s1和s2,判断s2是否包含在s1中。
2012年计算机二级C考试重点复习以及南开100题
2012年计算机等级考试二级C++考点分析及南开100题C++语言的数据类型考点1 基本类型C++中的数据类型大体可以分为3类:基本类型、导出类型和用户定义类型。
基本类型是系统预先定义好的、与硬件直接相关的类型,是构造派生类型的基本元件。
它包括:逻辑型、字符型、整型、浮点型和空值型。
(1)逻辑型:又称布尔型,用关键字bool表示。
取值范围只包含true和false,这两个关键字分别对应整逻辑真)和0(表示逻辑假)。
(2)字符型:又称char型,用关键字char表示。
取值范围包含全部基本字符及ASCII 码集对应的全部符号,字符型数据占用1字节(Byte),即8位(bit)空间。
(3)整型:又称int型,用关键字int表示。
取值范围是计算机所能表示的所有整数。
整型是C++中最常用的数据类型。
(4)浮点型:包括单精度型(又称float型)和双精度型(又称double型)。
单精度型数据的取值范围是-.4E38~3.4E38(不能超过7位有效数字,若超出,则舍去第7位以后的数字),单精度数据一般占用4字节,双精度型数据一般占用8字节。
(5)空值型:又称void型,用关键字void表示。
取值为空。
注意:C++中没有空值型的常量或变量,void主要用于函数和指针的声明。
小提示:void是无值,而不是0,因为0也是一个值。
考点2 基本类型的派生类型在C++语言中,基本类型的字长及其取值范围可以放大和缩小,改变后的类型称为基本类型的派生类型。
由基本类型关键字int,char,float和double前面加上类型修饰符short(短类型,缩短字长),long(长类型长字长),signed(有符号类型,取值范围包括正负),unsigned无符号类型,取值范围只包括正)组成。
考点3 字面常量字面常量又称直接常量,C++中有以下几种常量类型。
(1)逻辑常量:逻辑类型包含的true和false两个取值,就称为逻辑常量。
逻辑常量主要用在逻辑运算中。
计算机二级南开100题
51: 第51题请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指的数组中,非素数的个数通过k传回。
答案:void fun(int m,int *k,int xx[]){int i,j;int t=0;for(i=2;i<m;i++){j=2;while(j<i){if(i%j==0){xx[t]=i;t++;break;}j++;}*k=t;}}52: 第52题编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。
答案:void fun(char p1[],char p2[]){int i=0,n=0;char *p=p1,*q=p2;while (*p){p++;n++;}i=n;while(*p){p1=*q;q++;i++;}p1=‘\0’;}53: 第53题请编写函数fun,该函数的功能是:实现b=a+a,即把矩阵a加上a的转置,存放在矩阵b中。
计算结果在main函数中输出。
答案:void fun(int a[3][3],int b[3][3]){int i,j,at[3][3];for(i=0;i<=2;i++)for(j=0;j<=2;j++)at[j]=a[j];for(i=0;i<3;i++)for(j=0;j<3;j++)b[j]=a[j]+at[j];}54: 第54题学生的记录由学号和成绩组称个,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。
答案:double fun(strec *a, strec *b,int *n){double aver=0.0;int i,j=0;*n=0;for (i=0;i<n;i++)aver+=a.s;aver/=n;for(i=0;i<n;i++)if(a.s<aver){b[j]=a;(*n)++;j++; }return aver;}55: 第55题请编写函数fun,该函数的功能是:将m行n列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的储存单元中。
NCRE全国计算机等级考试二级C语言上机---南开100题答案
填空题答案第1题答案第1处填空:n>1或1<n第2处填空:n-1第3处填空:1或1l或1L第2题答案第1处填空:n==0或0==n或!n第2处填空:n==1或1==n第3处填空:fun(n-1)+fun(n-2)或fun(n-2)+fun(n-1)第3题答案第1处填空:n--或--n或n-=1或n=n-1第2处填空:s[i]=s[n]或*(s+i)=*(s+n)第3处填空:s[n]=t或*(s+n)=t第4题答案第1处填空:i<=n或n>=i第2处填空:||第3处填空:1.0或(double)1第5题答案第1处填空:r*r第2处填空:&x第3处填空:x第6题答案第1处填空:<=第2处填空:n++或n+=1或n=n+1 第3处填空:return s或return (s) 第7题答案第1处填空:n%10第2处填空:break第3处填空:break第8题答案第1处填空:&num[i]或num+i第2处填空:max<num[i]?或num[i]>max?第3处填空:num[i]!=0或0!=num[i] 第9题答案第1处填空:(*a)++或++(*a)或*a=*a+1或*a+=1第2处填空:(*b)++或++(*b)或*b=*b+1或*b+=1第3处填空:upper,lower第10题答案第1处填空:max=a第2处填空:max=b第3处填空:max=c第11题答案第1处填空:1第2处填空:s[k]或*(s+k)第3处填空:c第12题答案第1处填空:tt[i]<='Z'或'Z'>=tt[i]第2处填空:32或'a'-'A'第3处填空:tt第13题答案第1处填空:char*fun(int n)第2处填空:2第3处填空:n%i==0或!(n%i)或0==n%i第14题答案第1处填空:*p或*p!='\0'或*p!=0第2处填空:i++或++i或i+=1或i=i+1第3处填空:'\0'或0第15题答案第1处填空:!=第2处填空:str[1]或*(str+1)第3处填空:s,c第16题答案第1处填空:n%100!=0或n%100或0!=n%100第2处填空:n%400==0或!(n%400)或0==n%400第3处填空:flag第17题答案第1处填空:n第2处填空:else第3处填空:a,b第18题答案第1处填空:*p==t或t==*p第2处填空:bb[n++]=i第3处填空:n第19题答案第1处填空:score[i]或*(score+i)第2处填空:below第3处填空:below[i]或*(below+i)第20题答案第1处填空:i第2处填空:j第3处填空:aa,&n第21题答案第1处填空:j++或++j或j+=1或j=j+1第2处填空:s[i]=t1[i]第3处填空:j第22题答案第1处填空:&&第2处填空:0第3处填空:s[j]或*(s+j)第23题答案第1处填空:int x[]或int*x第2处填空:sum+=x[i]或sum=sum+x[i]第3处填空:sum/n第24题答案第1处填空:a第2处填空:a第3处填空:b第25题答案第1处填空:n/2第2处填空:i第3处填空:a[n-i-1]第26题答案第1处填空:i=1第2处填空:&&第3处填空:--j或j-1第27题答案第1处填空:j=2第2处填空:i第3处填空:j第28题答案第1处填空:1第2处填空:s*i或i*s第3处填空:0第4处填空:s+fun(k)或fun(k)+s第29题答案第1处填空:0第2处填空:i<=x或x>=i第30题答案第1处填空:--i或i--或i-=1或i=i-1第2处填空:s[i]-'0'第3处填空:t*10+k或k+t*10或10*t+k或k+10*t第31题答案第1处填空:*(p1+i)或p1[i]或*(p1+i)!=0或p1[i]!=0第2处填空:*p2或p2[0]或*p2!=0或p2[0]!=0第3处填空:*p2++第32题答案第1处填空:sum+=x[i]或sum=sum+x[i]第2处填空:avg*1000或1000*avg第3处填空:(avg+5)/10或(5+avg)/10第33题答案第1处填空:1第2处填空:i第3处填空:a[p+i]或*(a+p+i)第34题答案第1处填空:bb[i]=0或*(bb+i)=0第2处填空:bb[5]++或++bb[5]或bb[5]=bb[5]+1或bb[5]+=1第3处填空:p++;或++p;或p+=1;或p=p+1;第35题答案第1处填空:i<*num或*num>i第2处填空:n++或++n或n+=1或n=n+1第3处填空:*num=n第36题答案第1处填空:&&第2处填空:s[i]-'0'第3处填空:n第37题答案第1处填空:xx[i]%10第2处填空:bb[n++]=xx[i]第3处填空:n第38题答案第1处填空:n/100%10第2处填空:"yes!"第3处填空:"no!"第39题答案第1处填空:"%d",&n第2处填空:str2[i]=str1[i];第3处填空:str2第40题答案第1处填空:"%s",str1第2处填空:%c第3处填空:str2第41题答案第1处填空:"%ld",&n第2处填空:n=-n;或n*=-1;第3处填空:"%ld",n第42题答案第1处填空:*p或p[0]第2处填空:default:b[10]++;第3处填空:p++;或p+=1;或p=p+1;或++p;第43题答案第1处填空:*p或*p!=0或0!=*p 第2处填空:bb[*p-'0']++或bb[*p-'0']+=1第3处填空:num[j]=bb[i]第44题答案第1处填空:0第2处填空:||第45题答案第1处填空:s1-i-1或s1-1-i第2处填空:2*s1或s1*2第46题答案第1处填空:*k第2处填空:s[i]>max或max<s[i] 第3处填空:i第47题答案第1处填空:xx[i]%10第2处填空:bb[n++]=xx[i]第3处填空:n第48题答案第1处填空:n>0或0<n 第2处填空:n%10+'0'或'0'+n%10第3处填空:str[i]='\0'或str[i]=0第49题答案第1处填空:disc<0或0>disc第2处填空:sqrt第3处填空:sqrt第50题答案第1处填空:s第2处填空:*p++第3处填空:*(p)或*p或*p!=0第51题答案第1处填空:x>y或y<x第2处填空:x>z或z<x第3处填空:y>z或z<y第52题答案第1处填空:"out52.dat","w"第2处填空:fputc(ch,fp)第3处填空:fclose(fp)第53题答案第1处填空:i第2处填空:p->next=s第3处填空:p->next第54题答案第1处填空:*p1<*p2或*p2>*p1第2处填空:*p1>*p2或*p2<*p1第3处填空:'\0'或0第55题答案第1处填空:flag=1第2处填空:j%i==0或0==j%i或!(j%i)第3处填空:flag==1或1==flag第56题答案第1处填空:&&第2处填空:fputc(ch,fp1)第3处填空:fclose(fp)第57题答案第1处填空:double第2处填空:j第3处填空:1.0/t或(double)1/t第58题答案第1处填空:&n第2处填空:i=1第3处填空:f*=i或f=f*i或f=i*f第59题答案第1处填空:sum=0第2处填空:sum+=n或sum=sum+n或sum=n+sum第3处填空:ld第60题答案第1处填空:i<n或n>i第2处填空:j<n-1或n-1>j第61题答案第1处填空:bb[i]=0或*(bb+i)=0第2处填空:bb[i]+=score[i][j]或bb[i]=bb[i]+score[i][j]或bb[i]=score[i][j]+bb[i]第62题答案第1处填空:"%c",&str[i]或"%c",str+i第2处填空:str[i]!='*'或*(str+i)!='*'第3处填空:"%c",str[j]或"%c",*(str+j)第63题答案第1处填空:STU第2处填空:h第3处填空:h第64题答案第1处填空:str1[i]!=''或''!=str1[i]第2处填空:i++或++i或i+=1或i=i+1第65题答案第1处填空:bb[i][j]=1第2处填空:bb[i][j]=0第66题答案第1处填空:j>i或i<j第2处填空:bb[j]=bb[j-1]第3处填空:break第67题答案第1处填空:p=str第2处填空:p[i]++或++p[i]或p[i]+=1或p[i]=p[i]+1第3处填空:s[i]='\0'或s[i]=0第68题答案第1处填空:break第2处填空:'\0'或0第3处填空:*p++第69题答案第1处填空:<第2处填空:*p2或p2[0]第3处填空:str1第70题答案第1处填空:*(pstr+j)或pstr[j]第2处填空:pstr[j]或*(pstr+j)第3处填空:p第71题答案第1处填空:std[3]或std[]或*std第2处填空:PERSON第3处填空:std第72题答案第1处填空:N第2处填空:M第3处填空:bb[i]/N或*(bb+i)/N第73题答案第1处填空:bb[i][j]=0第2处填空:1第3处填空:j==n-1-i或j==n-i-1第74题答案第1处填空:*std或std[0]第2处填空:std[i].age第3处填空:第75题答案第1处填空:&n第2处填空:t*i或i*t第3处填空:s+t或t+s第76题答案第1处填空:i第2处填空:s[j]=s[i]第77题答案第1处填空:N-1第2处填空:bb[n++]=aa[i]第3处填空:i,bb[i]第78题答案第1处填空:fun(char s[],int n)或fun(char*s,int n)第2处填空:j=0第3处填空:s[j]='\0'或s[j]=0第79题答案第1处填空:aa[i]%2==0或0==aa[i]%2或aa[i]%2第2处填空:i<k或k>i第80题答案第1处填空:--i或i--或i-=1或i=i-1 第2处填空:bb[j]=bb[i]第81题答案第1处填空:sum=0第2处填空:t[i][i]第3处填空:1第82题答案第1处填空:i%10第2处填空:g*g*g==i或i==g*g*g 第83题答案第1处填空:break;第2处填空:i++或++i或i+=1或i=i+1第3处填空:'\0'或0第84题答案第1处填空:&&第2处填空:i,j第85题答案第1处填空:[N]第2处填空:t[i][j]第3处填空:t[j][i]第86题答案第1处填空:N第2处填空:N-1第3处填空:0第87题答案第1处填空:&&第2处填空:g+ 第88题答案第1处填空:s[i]或s[i]!=0或0!=s[i]第2处填空:s[i]==ch或ch==s[i]第3处填空:return n第89题答案第1处填空:s[i]!='\0'或s[i]或s[i]!=0第2处填空:32或'a'-'A'第3处填空:i++或++i或i+=1或i=i+1第90题答案第1处填空:STU第2处填空:std[i].num第3处填空:std[i]第91题答案第1处填空:i=1,j=0或j=0,i=1第2处填空:bb[j++]=i第3处填空:return j第92题答案第1处填空:str[i+1]或str[i+1]!='\0'或str[i+1]!=0第2处填空:str[i]=ch第93题答案第1处填空:aa[max]<aa[i]或aa[i]>aa[max]第2处填空:aa[min]>aa[i]或aa[i]<aa[min]第3处填空:aa[max]=aa[min]第94题答案第1处填空:i++或++i或i+=1或i=i+1第2处填空:s[j++]=s[i]第3处填空:s[j]='\0'或s[j]=0第95题答案第1处填空:0.0或0或(double)0第2处填空:n第3处填空:s第96题答案第1处填空:aa[k++]=t或aa[k]=t,k++或aa[k]=t;k++第2处填空:i<j或j>i第97题答案第1处填空:break第2处填空:t[i]第3处填空:u[ul]第98题答案第1处填空:s[i]!='\0'或s[i]或s[i]!=0第2处填空:25第3处填空:1第99题答案第1处填空:j%i==0或!(j%i)或0==j%i第2处填空:flag==1或flag或1==flag第3处填空:aver/n第100题答案第1处填空:k=0第2处填空:||第3处填空:s[k]='\0'或s[k]=0改错题答案第1题答案第1处:IsPrime(int n);应改为IsPrime(int n)第2处:if!(n%i)应改为if(!(n%i))第2题答案第1处:int k=1;应改为int k=0;第2处:while(*p!=*q)应改为while(*p||*q)第3题答案第1处:s[j]=s[i];应改为s[j++]=s[i];第2处:s[j]="\0";应改为s[j]='\0';第4题答案第1处:void fun(char*s,int a,int b)应改为void fun(char*s,int*a,int*b)第2处:a++;应改为(*a)++;第3处:b++;应改为(*b)++;第5题答案第1处:a[i+1]=a[i];应改为a[i]=a[i+1];第6题答案第1处:for(i=2;i<m;i++)应改为for(i=2;i<=m;i++)第2处:y-=1/(i*i);应改为y-=1.0/(i*i);第7题答案第1处:p=j应改为p=j;第2处:p=i;应改为p=j;第8题答案第1处:void fun(char*p);应改为void fun(char*p)第2处:p=q+i;应改为q=p+i;第9题答案第1处:t=s[k];应改为t+=s[k];第2处:*aver=&ave;应改为*aver=ave;第10题答案第1处:void fun(char*s,*t1,*t2,*w)应改为voidfun(char*s,char*t1,char*t2,char*w)第2处:while(r)应改为while(*r)第11题答案第1处:n=*p-'o';应改为n=*p-'0';第2处:n=n*7+*p-'o';应改为n=n*8+*p-'0';第12题答案第1处:a=NuLL;应改为a=NULL;3/13第2处:if(r==p)应改为if(*r==*p) 第13题答案第1处:t+=1.0/k;应改为t+=1.0/i; 第2处:应填return t;第14题答案第1处:int r;应改为double r;第2处:while(fabs(n-m)<0.001)应改为while(fabs(n-m)>0.001)第15题答案第1处:void fun(char str,char ch)应改为void fun(char*str,char ch)第2处:if(*str==ch)应改为if(*str=='\0')第3处:str[1]='0';应改为str[1]='\0';或str[1]=0;第16题答案第1处:p->next=NULL;应改为p=s; 第2处:s->data=rand()%m;应改为s->data=rand()%(m-1);第3处:return p;应改为return h; 第17题答案第1处:if((k%13=0)||(k%17=0))应改为if((k%13==0)||(k%17==0))第2处:应填}第18题答案第1处:void fun(int a,int b)应改为void fun(int*a,int*b)第2处:t=b;b=a;a=t;应改为t=*b;*b=*a;*a=t;第19题答案第1处:void fun(long s,long t)应改为void fun(long s,long*t)第2处:while(s<0)应改为while(s>0) 第20题答案第1处:void fun(int a[],int m)应改为int fun(int a[],int m)第2处:if(m>=a[mid])应改为if(m>a[mid])第21题答案第1处:p=h;应改为p=h->next;第2处:p=h->next;应改为p=p->next;第22题答案第1处:for(i=2;i<m;i++)应改为for(i=2;i<=m;i++)第2处:y+=1/(i*i);应改为y+=1.0/(i*i);第23题答案第1处:int fun(n)应改为int fun(int n)第2处:if(n=1)应改为if(n==1)第24题答案第1处:if(r==p)应改为if(*r==*p) 第2处:if(r=='\0')应改为if(*r=='\0') 第25题答案第1处:if n==0应改为if(n==0)第2处:result=n--;应改为result*=n--;第26题答案第1处:应填sum=0;第2处:scanf("%d,",a[i][j]);应改为scanf("%d,",&a[i][j]);第27题答案第1处:t=0;应改为t=1.0;第2处:while(t<=eps)应改为while(t>=eps)第28题答案第1处:s=p;应改为p=s;第2处:应填p++;或++p;或p+=1;或p=p+1第3处:a[i]='0';应改为a[i]='\0';或a[i]=0;第29题答案第1处:b=a;应改为a=b;第2处:return(a);应改为return(b);第30题答案第1处:long k;应改为long k=1;第2处:num\=10;应改为num/=10;第31题答案第1处:if((tt[i]>='a')||(tt[i]<='z'))应改为if((tt[i]>='a')&&(tt[i]<='z'))第2处:tt[i]+=32;应改为tt[i]-=32;第32题答案第1处:if(i+1%5==0)应改为if((i+1)%5==0)第33题答案第1处:while(*s!='@')应改为while(*s)或while(*s!='\0')或while(*s!=0)第2处:(*s)++;应改为s++;第34题答案第1处:t=0;应改为*t=0;第2处:if(d%2==0)应改为if(d%2!=0)第35题答案第1处:if(p=='')应改为if(*p=='')第2处:*p=toupper(*(p-1));应改为*(p-1)=toupper(*(p-1));第36题答案第1处:j=1;应改为j=0;第2处:while(t!=0&&m!=0&&n!=0)应改为while(t!=0||m!=0||n!=0)第37题答案第1处:*r=t;应改为r=t;或r=&t[0];第2处:应填r=t;或r=&t[0];第38题答案第1处:t=x;x=y;应改为t=*x;*x=y;第2处:return(y);应改为return(t);或return t;第39题答案第1处:void fun(char s,char t)应改为void fun(char*s,char*t)第2处:t[2*d-1]='\0';应改为t[2*d]='\0';或t[d+i]='\0';或t[2*d]=0;或t[d+i]=0;第40题答案第1处:for(i=j+1;i<n-1;i++)应改为for(i=j+1;i<n;i++)第2处:t=i;应改为p=i;第41题答案第1处:while(p->next)应改为while(p!=NULL)第2处:p=h->next;应改为p=p->next;第42题答案第1处:if(i%2&&s[i]%2==0)应改为if(i%2||s[i]%2==0)或if(i%2!=0||s[i]%2==0)第2处:t[i]='\0';应改为t[j]='\0';或t[j]=0;第43题答案第1处:k=n;应改为k=i;第2处:b=k/10;应改为b=k%10;第44题答案第1处:fun(int**a,int m)应改为voidfun(int(*a)[M],int m)第2处:a[j][k]=k*j;应改为a[j][k]=(k+1)*(j+1);第45题答案第1处:void fun(char*s,t1,t2,w)应改为voidfun(char*s,char*t1,char*t2,char*w)第2处:while(w)应改为while(*w)第46题答案第1处:fun(int n)应改为doublefun(int n)第2处:return sum应改为returnsum;第47题答案第1处:void fun(int*a,int n);应改为void fun(int*a,int n)第2处:m=0;应改为m=i;第48题答案第1处:fun(char(*sq)[N])应改为char*fun(char(*sq)[M])第2处:return sq;应改为return sp;第49题答案第1处:*t=malloc(sizeof(STU));应改为t=(STU*)malloc(sizeof(STU)*m);第2处:t[k].num=b[j].num;应改为strcpy(t[k].num,b[j].num);第50题答案第1处:t[i]=s[s1-i];应改为t[i]=s[s1-i-1];或t[i]=s[s1-1-i];第51题答案第1处:void fun(char str[][],int m,char*pt)应改为void fun(char str[][10],int m,char*pt)第2处:pt[i]=str[k,i];应改为pt[i]=str[k][i];第52题答案第1处:int fun(double x[],int n)应改为int fun(double x[],int n){第53题答案第1处:switch(g);应改为switch(g) 第2处:case 1;应改为case 1:第54题答案第1处:double fun(char*s,char*t)应改为char*fun(char*s,char*t)第2处:(*ss)++;应改为ss++;第3处:(*tt)++;应改为tt++;第55题答案第1处:y=0;应改为y=1;第2处:d=i-a;应改为d=a-i;第56题答案第1处:void fun(char(*pstr)[6])应改为void fun(char*pstr[6])第2处:if(strcmp(*(pstr+i),pstr+j)>0)应改为if(strcmp(*(pstr+i),*(pstr+j))>0)第3处:*(pstr+i)=pstr+j;应改为*(pstr+i)=*(pstr+j);第57题答案第1处:while(i>j)应改为while(i<j)或while(j>i)第2处:c=0;应改为*c='\0';或*c=0; 第58题答案第1处:for(i=0;i<=s1;i++)应改为for(i=0;i<s1;i++)第2处:t[s1]='\0';应改为t[2*s1]='\0'; 第59题答案第1处:void fun(char*s,int num[5]);应改为void fun(char*s,int num[5]) 第2处:num[i]=0;应改为num[k]=0; 第3处:switch(s)应改为switch(*s) 第60题答案第1处:if(i%k!=0)应改为if(i%k==0)第2处:if(k<i)应改为if(k>=i)第61题答案第1处:fun(int m)应改为double fun(int m)第2处:for(i=100,i<=m,i+=100)应改为for(i=100;i<=m;i+=100)第62题答案第1处:break应改为break;第63题答案第1处:i=1;应改为i=0;第2处:while(i<3||*p)应改为while(i<3&&*p)第3处:b[k]='';应改为b[k++]='';第64题答案第1处:c=c-32;应改为c=c+32;第2处:c=c-5;应改为c=c+5;第65题答案第1处:void fun(long s,long t)应改为void fun(long s,long*t)第2处:s1=s1*100;应改为s1=s1*10;第66题答案第1处:fun(int n)应改为doublefun(int n)第2处:b+=c;应改为b=c;第67题答案第1处:fun(double a,double x0)应改为double fun(double a,double x0)第2处:if(abs(x1-x0)>=1e-6)应改为if(fabs(x1-x0)>=1e-6)第68题答案第1处:return 1;应改为return 3;第2处:return 3;应改为return 1;第69题答案第1处:void upfst(char p)应改为void upfst(char*p)第70题答案第1处:int fun(int*b);应改为intfun(int*b)第2处:for(k=10;k<=55;k++)应改为for(k=1;k<55;k++)第3处:return k;应改为return i;第71题答案第1处:if k>1应改为if(k>1)第72题答案第1处:int fun(char*str,*substr)应改为int fun(char*str,char*substr)第2处:for(i=0,str[i],i++)应改为for(i=0;str[i];i++)第73题答案第1处:t=1.0-1/i;应改为t-=1.0/i;或t=t-1.0/i;或t-=(double)1/i;第2处:应填return t;第74题答案第1处:c=aa[i];应改为ch=aa[i];第75题答案第1处:int fun(int m,int xx[][])应改为int fun(int m,int xx[][M])第2处:printf("%4f",xx[i][j]);应改为printf("%4d",xx[i][j]);第76题答案第1处:long s1=0;应改为long s1=1;第2处:s\=10;应改为s/=10;第77题答案第1处:void fun(char a)应改为voidfun(char*a)第78题答案第1处:k++应改为k++;第2处:if(m=k)应改为if(m==k)第79题答案第1处:c[t]="\0";应改为c[t]='\0';第80题答案第1处:fun(int n)应改为doublefun(int n)第2处:s=s+(Double)a/b;应改为s=s+(double)a/b;第81题答案第1处:fun(int n)应改为doublefun(int n)第2处:for(i=2;i<n;i++)应改为for(i=2;i<=n;i++)第82题答案第1处:result*=--n;应改为result*=n--;第2处:应填return result;第83题答案第1处:void fun(int x,int y)应改为void fun(int*x,int*y)第2处:t=x;x=y;y=t;应改为t=*x;*x=*y;*y=t;第84题答案第1处:void fun(int m,int k);应改为void fun(int m,int k)第2处:aa[i]=m/k;应改为aa[i]=m%k;第3处:printf("%d",aa[i]);应改为printf("%d",aa[i-1]);第85题答案第1处:s[j]=s[i];应改为s[j++]=s[i];第2处:s[i]='\0';应改为s[j]='\0';第86题答案第1处:float*k;应改为float k;第2处:if(*s<*p)应改为if(*s>*p)第87题答案第1处:void fun(int a)应改为voidfun(int a[M])或void fun(int a[])或void fun(int*a)第2处:a[j]=a[j+1];应改为a[j]=a[j-1];第88题答案第1处:for(i=0;i<=3;i++)应改为for(i=1;i<=3;i++)第2处:if(k>=1&&k<=6)应改为if(k>=0&&k<=6)5/13第89题答案第1处:for(i=1;i<y;i++)应改为for(i=1;i<=y;i++)第2处:t=t/1000;应改为t=t%1000; 第90题答案第1处:d=0;应改为d=1;第2处:s=1;应改为s=0;第3处:s=s/10;应改为d=d/10;第91题答案第1处:for(i=strlen(t);i;i--)应改为for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)第2处:if(t[j]<t[j+1])应改为if(t[j]>t[j+1])第92题答案第1处:long s=0,t=1;应改为long s=0,t=0;第2处:for(j=0;j<=n;j++)应改为for(j=0;j<n;j++)第3处:t=t%10;应改为t=t/10;第93题答案第1处:while(t>=num)应改为while(fabs(t)>=num)第2处:t=s%n;应改为t=s/n;第94题答案第1处:int sum=0.0;应改为double sum=0.0;第2处:sum\=c;应改为sum/=c;第95题答案第1处:s=s+(n+1)/n;应改为s=s+(double)(n+1)/n;第2处:return s;应改为return t;第96题答案第1处:fun(int k)应改为double fun(int k)第2处:return s应改为return s;第97题答案第1处:f(double x)应改为double f(double x)第2处:return s应改为return s;第98题答案第1处:#define FU(m,n)(m/n)应改为#define FU(m,n)(m)/(n)第2处:Return(value);应改为return(value);第99题答案第1处:int i,j,k,sum;应改为int i,j=0,k,sum;第2处:if(sum%4=2)应改为if(sum%4==2)第100题答案第1处:if(t=0)应改为if(t==0)第2处:zero=count;应改为*zero=count; 编程题答案第1题答案int fun(int score[],int m,int below[]){int i,k=0,aver=0;for(i=0;i<m;i++)aver+=score[i];aver/=m;for(i=0;i<m;i++)if(score[i]<aver){below[k]=score[i];k++;}return k;}第2题答案void fun(int*a,int*n){int i,j=0;for(i=2;i<1000;i++)if((i%7==0||i%11==0)&&i%77!=0)a[j++]=i;*n=j;}第3题答案void fun(int x,int pp[],int*n){int i=1,j=0,k=0,*t=pp;for(i=0;i<=x;i++)if(i%2!=0){t[j]=i;j++;}for(i=0;i<j;i++)if(x%t[i]==0){pp[k]=t[i];k++;}*n=k;}第4题答案void fun(char*tt,int pp[]){int i;for(i=0;i<26;i++)pp[i]=0;while(*tt){switch(*tt){case'a':pp[0]++;break;case'b':pp[1]++;break;case'c':pp[2]++;break;case'd':pp[3]++;break;case'e':pp[4]++;break;case'f':pp[5]++;break;case'g':pp[6]++;break;case'h':pp[7]++;break;case'i':pp[8]++;break;case'j':pp[9]++;break;case'k':pp[10]++;break;case'l':pp[11]++;break;case'm':pp[12]++;break;case'n':pp[13]++;break;case'o':pp[14]++;break;case'p':pp[15]++;break;case'q':pp[16]++;break;case'r':pp[17]++;break;case's':pp[18]++;break;case't':pp[19]++;break;case'u':pp[20]++;break;case'v':pp[21]++;break;case'w':pp[22]++;break;case'x':pp[23]++;break;case'y':pp[24]++;break;case'z':pp[25]++;break;}tt++;}}第5题答案void fun(int m,int k,int xx[]){int g=0,i,j,flag=1;for(i=m+1;i<m*m;i++){for(j=2;j<i;j++){if(i%j!=0)flag=1;else{flag=0;break;}}if(flag==1&&j>=i){if(k>=0){xx[g++]=i;k--;}elsebreak;}}}第6题答案void fun(char a[],char b[],int n){int i,j=0;for(i=0;i<LEN;i++)if(i!=n){b[j]=a[i];j++;}b[j]='\0';}第7题答案void fun(int*s,int t,int*k){int i,max;max=s[0];for (i=0;i<t;i++)if (s[i]>max){max=s[i];*k=i;}}第8题答案float fun(int n){int i;float s=1.0,t=1.0;for(i=2;i<=n;i++){t=t+i;s=s+1/t;}return s;}第9题答案float fun(int m,int n){float p,t=1.0;int i;for(i=1; i<=m; i++)t=t*i;p=t;for(t=1.0,i=1; i<=n; i++)t=t*i;p=p/t;for(t=1.0,i=1; i<=m-n; i++)t=t*i;p=p/t;return p;}第10题答案float fun(){float x1=0.0,x0;do{x0=x1;x1=cos(x0);}while(fabs(x0-x1)>=1e-6);return x1;}第11题答案int fun(int a[][N]){int i,j;for(i=0; i<N; i++)for(j=0; j<=i; j++)a[i][j]=0;}第12题答案double fun(int w[][N]){int i,j,k=0;double s=0.0;for(j=0; j<N; j++){s+=w[0][j];k++;}for(j=0; j<N; j++){s+=w[N-1][j];k++;}for(i=1; i<=N-2; i++){s+=w[i][0];k++;}for(i=1; i<=N-2; i++){s+=w[i][N-1];k++;}return s/=k;}第13题答案void fun(int tt[M][N],int pp[N]){int i,j,min;for(j=0; j<N; j++){min=tt[0][j];for(i=0; i<M; i++){if(tt[i][j]<min)min=tt[i][j];}pp[j]=min;}}第14题答案int fun(int a[M][N]){int i,j,s=0;for(j=0; j<N; j++){s+=a[0][j];s+=a[M-1][j];}for(i=1; i<=M-2; i++){s+=a[i][0];s+=a[i][N-1];}return s;}第15题答案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;}第16题答案float fun(float h){long t;float s;h=h*1000;t=(h+5)/10;s=(float)t/100.0;return s;}第17题答案void fun(char*s){char ch;int i,m,n;i=0;m=n=strlen(s)-1;while(i<(n+1)/2){ch=s[i];s[i]=s[m];s[m]=ch;i++;m--;}}第18题答案void fun(int array[3][3]){int i,j,temp;for(i=0; i<3; i++)for(j=0; j<i;j++){temp=array[i][j];array[i][j]=array[j][i];array[j][i]=temp;}}第19题答案void fun(char s[],int c){int i=0;char*p;p=s;while(*p){if(*p!=c){s[i]=*p;i++;}p++;}s[i]='\0';}第20题答案int fun(int lim,int aa[MAX]){int k=0,i,j;for(i=lim; i>1; i--){for(j=2; j<i; j++)if(i%j==0)break;elsecontinue;if(j>=i){aa[k]=i;k++;}}return k++;}第21题答案void fun(char*s,int num){char t;int i,j;for(i=1; i<num-2; i++)for(j=i+1; j<num-1; j++)if(s[i]<s[j]){t=s[i];s[i]=s[j];s[j]=t;}7/13}第22题答案double fun(STREC*h){double max;STREC*q=h;max=h->s;do{if(q->s>max)max=q->s;q=q->next;}while(q!=0);return max;}第23题答案int fun(char*str){int i,n=0,fg=1;char*p=str;while(*p){n++;p++;}for(i=0; i<n/2; i++)if(str[i]==str[n-1-i]);else{fg=0;break;}return fg;}第24题答案long fun(char*p){long s=0,t;int i=0,j,n=strlen(p),k,s1;if(p[0]=='-')i++;for(j=i; j<=n-1; j++){t=p[j]-'0';s1=10;for(k=j; k<n-1; k++)t*=s1;s+=t;}if(p[0]=='-')return-s;elsereturn s;}第25题答案char*fun(char*s,char*t) {char*p,*t1=t,*s1=s;int n=0,m=0;while(*s1){n++;s1++;}while(*t1){m++;t1++;}if(n>=m)p=s;elsep=t;return p;}第26题答案double fun(double eps){double s;float n,t,pi;t=1; pi=0; n=1.0; s=1.0;while((fabs(s))>=eps){pi+=s;t=n/(2*n+1);s*=t;n++;}pi=pi*2;return pi;}第27题答案void fun(int m,int*a,int*n){int i,j=0; *n=0;for(i=1; i<=m; i++)if(i%7==0||i%11==0){a[j]=i;j++;}*n=j;}第28题答案void fun(int a[],int n,int*max,int*d){int i;*max=a[0];*d=0;for(i=0; i<n; i++)if(a[i]>*max){*max=a[i];*d=i;}}第29题答案void fun(char*ss){int i,n;n=strlen(ss);for(i=1; i<n; i+=2)if(ss[i]>='a'&&ss[i]<='z')ss[i]=ss[i]-32;}第30题答案int fun(int a[][M]){int i,j,max;max=a[0][0];for(i=0; i<2; i++)for(j=0; j<M; j++)if(a[i][j]>max)max=a[i][j];return max;}第31题答案void fun(char*s,char t[]){int i,j=0,n;n=strlen(s);for(i=0; i<n; i++)if(i%2==0&&s[i]%2==0){t[j]=s[i];j++;}t[j]='\0';}第32题答案void fun(char*s,char t[]){int i,j=0,n;n=strlen(s);for(i=0; i<n; i++)if(i%2!=0&&s[i]%2!=0){t[j]=s[i];j++;}t[j]='\0';}第33题答案void fun(char*a,int n){int i=0,k=0;char*p,*t;p=t=a;while(*t)t++;t--;while(*t=='*'){k++;t--;}t++;if(k>n){while(*p&&p<t+n){a[i]=*p;i++;p++;}a[i]='\0';}}第34题答案int fun(STREC*a,STREC*b){int i,j=0,n=0,max;max=a[0].s;for(i=0; i<N; i++)if(a[i].s>max)max=a[i].s;for(i=0; i<N;i++)if(a[i].s==max){*(b+j)=a[i];j++;n++;}return n;}第35题答案void fun(char*str){int i=0;char*p=str;while(*p){if(*p!=''){str[i]=*p;i++;}p++;}str[i]='\0';}第36题答案void fun(char*a){int i=0,n=0;char*p;p=a;while(*p=='*'){n++;p++;}while(*p){a[i]=*p;i++;p++;}while(n!=0){a[i]='*';i++;n--;}a[i]='\0';}第37题答案void fun(STREC*p) {double av=0.0;int i;for(i=0; i<N; i++)av+=p->s[i];av/=N;p->ave=av;}第38题答案int fun(char*ss,char c) {int n=0;while(*ss){if(*ss==c)n++;ss++;}return n;}第39题答案void fun(int*w,int p,int n) {int b[N],i,j=0;for(i=0; i<=p; i++)b[i]=w[i];for(i=p+1; i<n; i++){w[j]=w[i];j++;}for(i=0; i<=p; i++){w[j]=b[i];j++;}}第40题答案void fun(char*w,int m){char b[N];int i,j=0;for(i=0; i<m; i++){b[j]=w[i];j++;}for(i=0; i<strlen(w)-m; i++)w[i]=w[i+m];for(j=0; j<m; j++){w[i]=b[j];i++;}w[i]='\0';}第41题答案void fun(char(*s)[N],char*b){int i,j,k=0;for(j=0; j<N; j++)for(i=0; i<M; i++){b[k]=*(*(s+i)+j);k++;}b[k]='\0';}第42题答案void fun(int a[][N],int m){int i,j;for(j=0; j<N; j++)for(i=0; i<=j; i++)a[i][j]=a[i][j]*m;}第43题答案char*fun(char(*a)[81],int num){int i;char*max;max=a[0];for(i=0; i<num; i++)if(strlen(max)<strlen(a[i]))max=a[i];return max;}第44题答案int fun(char*str,char*substr){int n;char*p,*r;n=0;while(*str){p=str;r=substr;while(*r)if(*r==*p){r++;p++;}elsebreak;if(*r=='\0')n++;str++;}return n;}第45题答案void fun(char*a,int n,int h,int e){int i=0;char*p;for(p=a+h; p<a+n-e; p++){*(a+i)=*p;i++;}*(a+i)='\0';}第46题答案void fun(STREC a[]){int i,j;STREC t;for(i=0; i<N-1; i++)for(j=i; j<N; j++)if(a[i].s<a[j].s){t=a[i];a[i]=a[j];a[j]=t;}}第47题答案void fun(char*ss){int i,n=0;char*p=ss;while(*p){n++;p++;}for(i=0; i<n; i++)if((ss[i]>='a'&&ss[i]<='z')&&i%2!=0)ss[i]=ss[i]-32;ss[i]='\0';}第48题答案void fun(int a,int b,long*c){*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10;}第49题答案void fun(char*s,char t[]){int i,j=0,n=strlen(s);for(i=0; i<n; i++)if(i%2==0&&s[i]%2!=0);9/13else{t[j]=s[i];j++;}t[j]='\0';}第50题答案void fun(STU a[],STU*s){int i,max;max=a[0].s;for(i=0; i<N; i++)if(a[i].s>max){max=a[i].s;*s=a[i];}}第51题答案void fun(int m,int*k,int xx[]){int i,j;int t=0;for(i=2; i<m; i++){j=2;while(j<i){if(i%j==0){xx[t]=i;t++;break;}j++;}*k=t;}}第52题答案void fun(char p1[],char p2[]){int i=0,n=0;char*p=p1,*q=p2;while(*p){p++;n++;}i=n;while(*q){p1[i]=*q;q++;i++;}p1[i]='\0';}第53题答案void fun(int a[3][3],int b[3][3]){int i,j,at[3][3];for(i=0; i<=2; i++)for(j=0; j<=2; j++)at[i][j]=a[j][i];for(i=0; i<3; i++)for(j=0; j<3; j++)b[i][j]=a[i][j]+at[i][j]; }第54题答案double fun(STREC*a,STREC*b,int*n){double aver=0.0;int i,j=0;*n=0;for(i=0; i<N; i++)aver+=a[i].s;aver/=N;for(i=0; i<N; i++)if(a[i].s<aver){b[j]=a[i];(*n)++;j++;}return aver;}第55题答案void fun(int(*s)[10],int*b,int*n,int mm,intnn){int i,j;for(i=0; i<mm; i++)for(j=0; j<nn; j++){b[*n]=*(*(s+i)+j);*n=*n+1;}}第56题答案void fun(char*a,char*p){int i=0;char*q=a;while(q<=p){if(*q!='*'){a[i]=*q;i++;}q++;}while(*q){a[i]=*q;i++;q++;}a[i]='\0';}第57题答案int fun(STREC*a,STREC*b,int l,int h){int i,j=0;for(i=0; i<N; i++)if(a[i].s>=l&&a[i].s<=h){b[j]=a[i];j++;}return j;}第58题答案double fun(int n){double s=0.0;int i;for(i=1; i<n; i++)if(i%3==0&&i%7==0)s=s+i;s=sqrt(s);return s;}第59题答案void fun(char a[M][N],char*b){int i,j,k=0;for(i=0; i<M; i++){for(j=0; j<N; j++)if(*(*(a+i)+j)){b[k]=*(*(a+i)+j);k++;}elsebreak;b[k]='\0';}}第60题答案int fun(int a[],int n){int i,t,j=0,*p=a;t=p[0];for(i=0; i<=n; i++)if(t==p[i]);else{a[j]=t;t=p[i];j++;}if(i>=n)a[j]=t;return j;}第61题答案void fun(int*a,int*b){int i,j;for(j=0; j<M; j++)b[j]=0;for(i=0; i<N; i++)if(a[i]>=0&&a[i]<=9)b[0]+=1;else if(a[i]>=10&&a[i]<=19)b[1]+=1;else if(a[i]>=20&&a[i]<=29)b[2]+=1;else if(a[i]>=30&&a[i]<=39)b[3]+=1;else if(a[i]>=40&&a[i]<=49)b[4]+=1;else if(a[i]>=50&&a[i]<=59)b[5]+=1;else if(a[i]>=60&&a[i]<=69)b[6]+=1;else if(a[i]>=70&&a[i]<=79)b[7]+=1;else if(a[i]>=80&&a[i]<=89)b[8]+=1;else if(a[i]>=90&&a[i]<=99)b[9]+=1;elseb[10]+=1;。
计算机二级C语言上机南开100题
aver+=score[i];
aver/=m;
for(i=0;i<m;i++)
if(score[i]<aver)
{
below[k]=score[i];
k++;
}
return k;
}
2: 第2题 请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。
答案:
float fun(float h)
{
long t;
float s;
h=h*1000;
t=(h+5)/10;
s=(float)t/100.0;
return s;
}
17: 第17题 请编写一个函数fun(char *s),该函数的功能使把字符串中的内容拟置。
答案:
}
11: 第11题 下列程序定义了n×n的二维数组,并在主函数中自动赋值。请编写函数 fun(int a[][n]),该函数的功能是:使数组左下半三角元素中的值全部置成0。
答案:
int fun(int a[][N])
{
int I,j;
for(i=0;i<N;i++)
for(j=0;j<=I;j++)
k++;
}
*n=k;
}
4: 第4题 请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。
全国计算机考试二级C语言南开100题答案(Word版)
全国计算机考试二级C语言南开100题答案(Word版)1、B:STYPE FILE fp M:for(i = 0 ; i < sl ; i++) t[2*sl] = 0; P: *c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10);2、B: *fw str str M: long *t sl = sl*10; P: *c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);3、B: fp fclose(fp) fname M: i<n p=i P: *c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10);4、B: “r”ft fs M:(d%2==0) s /= 10; P: *c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10);5、B: x p s M:long k=1; num/=10 ;P: int i; float ave=0.0; for(i=0; i<n; i++) ave=ave+a[i] ; ave=ave/n; return ave;6、B: next t->data t M:fun (char *a) printf("%c", *a) ; P: int i; char *p=s, *q=t; for(i=0;*p && *q; i++) {p++; q++; } if(*p == 0 && *q == 0) return s ; if(*p) return s ; else return t ;7、B: q next next M: p = j; p=i; P: int i ; *n=0 ; for(i=7 ; i<=m; i++) if((i % 7 == 0) || (i % 11 == 0)) a[(*n)++]=i ;8、B: NULL n head,ch M: for c[t]='\0'; P: int i ; for(i = 1 ; i < strlen(*ss) ; i+=2) { if(ss[i] >= 'a' && ss[i] <= 'z') ss[i] -= 32 ;9、B: *n next head M: a = NULL; *r == *p P: int i, j = 0 ; for(i = 0 ; i < strlen(s) ; i += 2) if(s[i] % 2 == 0) t[j++] = s[i] ; t[j] = 0 ;10、B: data next head M: *r r++; P: int i, j = 0 ; for(i = 1 ; i < strlen(s); i+=2) t[j++] = s[i] ; t[j] = 0 ;11、B: STU std[i].num std[i] M: p++; *r==‟\0‟ ;P: int i, j = 0 ; for(i = 0 ; i < strlen(s); i++) if(s[i] % 2) t[j++] = s[i] ; t[j] = 0 ;12、B: std[i].year std[i] n M:分号去掉if (!( n%i ))P: int i, max = a[0].s, j = 0; for(i = 1 ; i < N ; i++) if(max < a[i].s) { j = i ; max = a[i].s ; } *s = a[j] ;13、B: STU score[i] &std M:( ) k= =0 P: int i, j; for(i = 0 ; i < N ; i++) for(j = 0 ; j <= i; j++) a[i][j] *= n ;14、B: *std PERSON std M:int str[k][i] P: int i, j; for(i = 0 ; i < N ; i++) for(j = 0 ; j <= i; j++) a[i][j] =0;15、B: *std std[i].age M: int *b t = *b; *b = *a ; *a = t; P: int i,j, min, k ; for(i= 0 ; i < N ; i++) { min = tt[0][i] ; k = 0 ; for(j = 1 ; j < M ; j++) if(min > tt[j][i]) { min=tt[j][i] ; k = j ; } pp[i] = tt[k][i] ; }16、B: tt tt.score[i]std M: m=i m=kP: if(w>10000) w %= 10000 ; else if(w>1000) w %= 1000 ; else if(w>100) w %= 100 ; else if(w>10) w %=10 ; return w ;17、B: i+1 k=j t M: char *str != 0P: char b[N] ; int i = 0, j ; for(j = strlen(s) - 1 ; j >= 0 ; j--) b[i++] = s[j] ; b[i]=0; strcpy(s, b) ;18、B: k len ss[i][j] M:n-- result P: char *p = s ; int i = 0 ; while(*p) { if(*p != c) s[i++] = *p ; p++ ; } s[i] = 0 ;19、B:ss[i] n+j 1 M: *p ; P: char ch ; int i, j ; for(i = 1 ; i < 6 ; i++)for(j = i + 1 ; j < 6 ; j++) { if(*(s + i) < *(s + j)) { ch = *(s + j) ; *(s + j) = *(s +i) ; *(s + i) = ch ; } }20、B: [N] len *n=len M:t += 1.0/i; return t; P: int cnt = 0 ; char *p = str, *q ;while(*p) {q = strstr(p, substr) ; if(q == NULL) break; p = q + strlen(substr) ; cnt++ ; } return cnt ;strstr:在前串中找出后串第一次出现的位置,若找到返回地址否则返回NULL21、B: M < k M: && tt[i] -= 32;P: int i,j;*k=0;for(i=2;i<m;i++){for(j=2;j<=i/2;j++)if(i%j==0) break; if(j<=i/2) {xx[*k]=i;(*k)++;}}22、B: j++ s[i]=t1[i] j M:; ; *(pstr + j) P: int cnt = 0 ; char *p = ss ; while(*p) { if(*p == c) cnt++ ; p++ ;}23、B: && 0 s[j] M: <= 1.0P: 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、B: s[i] …9‟*t=n;M: t = *x ; *x = y ; return(t) ;P: int i ; *n = 0 ; for(i = 7 ; i < 1000 ; i++) if(((i % 7) == 0 || (i % 11) == 0) && (i % 77) != 0) a[(*n)++] = i ;25、B: n-1 s[k] c M:t=0 t=t/10P: char *p = tt ; int i ; for(i = 0 ; i < 26 ; i++) pp[i] = 0 ; while(*p) { if(*p >= 'a' && *p <= 'z') pp[*p - 'a'] += 1 ; p++ ; }26、B: t=i; i 0 M:(fabs(t)) s/n P: strncpy(b, a, n) ; b[n] = 0 ; strcat(b, a + n + 1) ;27、B: 0 0 c M:double/= P: int i,j,t; float s=0; for(i=1;i<=n;i++) { t+=j;s=s+1./t; } return s;28、B:i++ m m M:) ; P: float x0, x1=0.0; do{ x0=x1; x1=cos(x0); } while(fabs(x0-x1)>0.000001); return x1;29、B: N N-1 0 M: s=s+(n+1.)/n; return t; P: int f0 = 0, f1 = 1, f ; do { f = f0 + f1 ; f0 = f1 ; f1 = f ; } while(f < t) ; return f ;30、B: 0 j-- j M: double ; P: double s = 0.0 ; int i ; for(i = 1 ; i <= m ; i++) s += log(1.0 * i) ; s = sqrt(s) ; return s ;31、B: [N] t[i][j] t[j][i] M: ((m)/(n)) return (value);P: int j=0; char *p = a ; while(*p == '*') p++ ; while(*p) a[j++] = *p++; a[j]=0 ;32、B: t[ ][N]i=0;i<n; s M: fun(int a[],int m) ifP: char *q=a; int j=0; while(*q && q<p) { if(*q != '*') a[j++] = *q ;q++ ; } while(*p) a[j++]=*p++; a[j]=0;33、B: sum=0; t[i][i] 1M:double r; > P: int j=0; char *q=a; while(*q && q < h) a[j++]= *q++ ;while(*h&&*p &&h < p) { if(*h != '*') a[j++] = *h ; h++; } while(*p) a[j++] = *p++ ; a[j] = 0 ;34、B: 1 j++ j M:t=b; return (b); P: int j =0 ; char *p=a; while(*p) {if(*p != '*') a[j++]=*p ; p++ ; } a[j]=0;35、B: a[i]%2 a[j] j M:int n n==1P: char *p=a ; int j=0; while(*p) p++; p--; while(*p == '*') p--; p++; while(j<n && *p) { p++ ; j++; } *p = 0 ;36、B: a[i] a[j] a[j]M:分号去掉case 1;分号改冒号P: int i ; for(i =0 ; i < N ; i++) a->ave += a->s[i] ; a->ave /= N ;37、B: *a 2 i+1M:sum=0.0; if((i+1)%5==0) P: int i ; double ave = 0.0 ; *n = 0 ; for(i = 0 ; i < N ; i++) ave = ave + a[i].s ; ave /= N ;for(i = 0 ; i < N ; i++) if(a[i].s < ave) { b[*n]=a[i] ; (*n)++; } return ave ;38、B: 1 i a[p+i] M:k <P: int i, max = a[0].s, n=0; for(i = 1; i < N; i++) if(max < a[i].s) max = a[i].s ;for(i = 0; i < N; i++) if(max==a[i].s) b[n++] = a[i] ; return n;39、B: n/2 i a[n-1-i] M:*P→*p …o‟→…0‟P: STREC c ; int i ; c.num[0] = '\0' ;c.s = -1 ;for(i = 0 ; i < N ; i++) if(strcmp(a[i].num, b)==0) { strcpy(c.num, a[i].num);c.s=a[i].s;break ; } return c ;40、B: char ch<='9' …0‟M:*p ……(空格字符)P: STREC *p=h->next; double av=0.0; int n = 0 ;while(p!=NULL) {av+= p->s ; p=p->next; n++; } return (av / n) ;41、B: && 'A' ch M: int *a a[j]=a[j-1]; P: int s = 0, i ; for(i = 2 ; i < n ; i++) if(n % i == 0) s +=i ; return s ;42、B: 1 -1 t M: for(i=1; i<=3; i++) k>=0 && k<=6(K变小写)P: double s=1 ; long t=1; int i; for(i=1; i<=n; i++) { t=t*i; s+=1./t; } return s;43、B: x n fabs(t) M: <= %P: int n=1; double sn=1, xn=1; while(fabs(xn)>=0.000001) { xn=xn*x*(0.5-n+1)/n; n+=1;sn+=xn; } return(sn);44、B: 1 1 i M:k=i; c=k%10; P: int i; double avg=0.0, sum=0.0, abs=0.0, fc; for(i=0;i<10;i++) sum+=x[i]; avg=sum/10; for (i=0;i<10;i++) abs+=(x[i]-avg)*(x[i]-avg); fc=sqrt(abs/10) ; return fc;45、B: x n t M: d=1 d=d/10; P: int i ; double avg=0.0,sum=0.0;for(i=0;i<8;i++){avg=(x[i]+x[i+1])/2;sum+=sqrt(avg);}return sum;46、B: j=2 i j M: sum=0;j=0; = =P: int i; double sum=0.0; if (n>1 && n<=100) { for(i=1; i<=n; i++) sum+=1.0/(2*i-1)-1.0/(2*i); } return sum;47、B: n%10 break break M: t==0 *zeroP: double s=0, t=1; int i ; for(i=1; i<=n; i++) {t *= i; s+= 1./t;} return s;48、B: a[i] a[i] 0 M:y=1; d=a-i;P: int i; double sum=0.0; for(i=1; i<=n; i++) if(i%5 == 0 || i%9 == 0) sum+=1.0/i; return sum;49、B: i t++ count M:int return 1;P: int i,j=0; double s=0; for (i=3; i<=n; i++) { for (j=2; j<i; j++)if (i%j == 0) break; if (j == i) s=s+sqrt(i); } return s;50、B: b a b M:c=c+32; c=c+5; P: int i; double fac=1.0; double sum=1.0;for(i=2;i<=n;i++) { fac+=sqrt(i); sum+=fac; } return sum;51、B: 0 x t++ M:int i,sl; t[i] = s[sl-i-1];P: *c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);52、B: 999 t/10 x M:long *t s>0P: STREC tmp; int i,j; for(i = 0; i < N; i++)for(j = i+1; j < N; j++) if(a[i].s < a[j].s) {tmp = a[i]; a[i] = a[j]; a[j] = tmp; }53、B: 1 s i*10 M: xx[][M] %d P: *c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);54、B: 0 x*10 n/10 M:*t != P: char *p=p1; while(*p)p++; while(*p2)*p++=*p2++; *p=0;55、B: 10 0 x M: (n == 0) 少分号P: while(*p) x = x*10-48+(*p++);56、B: 0 n (t*t) M:; ; if P: double s=1,t=1./3; int n=1;while(t>=eps){ s+=t; n++; t=t*n/(2.0*n+1); } return (s*2.0);57、B: 1 2*i (-1) M:; = =P: int i ; *max=a[0];*d = 0 ; for(i= 1; i < n; i++) if(*max < a[i]) {*max=a[i]; *d = i ; }58、B: 3.0 > 2*i+1 M: double doubleP: int i, j, max=a[0][0]; for(i=0; i<2; i++) for(j=0; j<M; j++) if(max<a[i][j]) max=a[i][j]; return max;59、B: 0 i++ 2.0*i M:(char *s, char *t) t[2*d] = '\0';P: int i, j = 0 ; for(i = 1 ; i < strlen(s) ; i += 2) if(s[i] % 2) t[j++] = s[i] ; t[j] = 0 ;60、B: s[i] k 0 M: *w ifP: int i, j = 0 ; for(i = 0 ; i < strlen(s); i++) if(s[i] % 2==0) t[j++] = s[i] ; t[j] = 0 ;61、B:j k p M:< ifP: int i, j = 0 ; for(i = 0 ; i < strlen(s) ; i++) if(!((i % 2) ==0 && (s[i] % 2))) t[j++] = s[i] ;t[j] = 0 ;62、B: 0 x[i]/N j++ M:double ; ; P: int i, min = a[0].s, j = 0; for(i = 1 ; i < N ; i++)if(min > a[i].s) { j = i ; min = a[i].s ; } *s = a[j] ;63、B: *av i x[j] M:float <=n P: int i, j; for(i = 0 ; i < N ; i++) for(j= i ; j< N ; j++) a[i][j] *= m ;64、B:s/N j++ -1 M:#include *pP: int i, n=0; double sum=0; for ( i =0; i<N; i++ ) { sum+=w[0][i]+w[N-1][i]; n+=2; }for(i =1; i<N-1; i++) { sum +=w[i][0]+w[i][N-1]; n+=2; } return sum/n; 65、B: x[i]/N j++ i++M:num[k]=0; *sP: int i,sum=0; for(i=0;i<N;i++) sum+=a[0][i]+a[M-1][i]; for(i=1;i<M-1;i++) sum+=a[i][0]+a[i][N-1]; return sum;66、B: '0' s++ ctod(a)+ctod(b) M:*a *b *a *bP: long w ; w = h * 100 + 0.5 ; return (float) w / 100;67、B: N break n M:sum=0; &a[i][j]P: int i,j;int arr[3][3];for(i=0;i<3;i++) for(j=0;j<3;j++) arr[i][j]=array[i][j];for(i=0;i<3;i++) for(j=0;j<3;j++) array[i][j]=arr[j][i];68、B: a[0][i] < x,y M:int *x,int *y t=*x;*x=*y;*y=t;P: for(j = 2 ; j <= (i/2) ; j++) if(i % j == 0) break; if(j > (i/2)) aa[k++] = i;69、B: [N] I i+1 M:m%k aa[ i-1 ] P: if(strlen(a[i]) > maxlen) { maxlen = strlen(a[i]) ;k= i ; }70、B: 0 || 1 M:t = t-1.0/i; return t; P: char *p = str ; int i = 0 ;while(*p) { if(*p != ' ') str[i++] = *p ; p++ ; } str[i] = 0 ;71、B: k N a[k][i] M:strlen( t )-1 > P: int i; for(i=1;i<strlen(ss);i+=2) if(ss[i]<='z'&&ss[i]>='a') ss[i]-=32;72、B: k N-1 temp M:int a[][M] (k+1)*(j+1) P: *c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/10);73、B: j 0 i++ M:i <= m y -= 1.0/(i * i) ;P: float av=0.0 ; int i, j=0 ; for(i=0; i<m; i++) av += score[i] ; av /= m;for(i=0; i<m; i++) if(av>score[i]) below[j++]=score[i]; return j;74、B: t,s s[i] 0 M:= = > = P: int i; *n=0; for(i=1; i <= x; i++) if((x % i== 0) && (i % 2)) pp[(*n)++]=i;75、B: s -- return 0 M:double b=c P: for(i = 2 ; i < t; i++) if(t % i==0) break; if(i==t) { xx[j-1] = i; j++; } t++;76、B: n++ 0 s++ M:t += s[k] ave P: int i, pos = 0, max = *s ; for(i = 1 ; i < t ; i++) {if(max < *(s + i)) { max = *(s + i) ; pos = i ; } } *k = pos ;77、B: *s s++ n M:c=0; >= P: float p,a=1,b=1,c=1; int i; for(i=1;i<=m;i++)a=a*i;for(i=1;i<=n;i++) b=b*i; for(i=1;i<=m-n;i++) c=c*i; p=a/(b*c); return p;78、B: 48 s++ sum M: = = = = }P: double sum=0.0; int i; for(i=21; i<=n; i++) if((i%3==0)&&(i%7==0))sum+=i; return sqrt(sum) ;79、B: *s 1 k[n] M:double ; P: double s = 0.0 ; int i ; for(i = 1 ; i <= n ; i++) s = s + 1.0 / (i * (i + 1)) ; return s ;80、B: i ps[j] tp M:double ; P: double s=1.0,t=1.0; int i; for(i=1;i<=n;i++){ t*=x/i; s+=t; } return s;81、B: N i -1 M:a2=k/10; return i; P: char *p = a ; while(*p) p++ ; p-- ; while(*p == '*') p-- ; p++ ; *p = 0 ;82、B: N k ss[i] M: k=0 || P: if(a[i] != '*') a[k++]=a[i]; i++;83、B: N substr 0 M: int y, int z return j;P: char *p=a ; int j=0,len=0; while(*p) {p++; len++;} while(j<len-h-e) { a[j]=a[h+j]; j++; } a[j]=0;84、B: [M] N 0 M: t=1; 2*s P: for(; a[j] !=0 ; j++) a[i++]=a[j]; a[i] = 0;85、B: a score[i] M:s[j++]=s[i]; s[j]='\0'; P: while(*p) *q++=*p++;86、B: b->sno b->name &t M:double x0 (x1-x0) P: double t=0 ; int i ; *n = 0 ; for(i = 0 ; i < N ; i++)t = t + a[i].s ; t = t / N ; for(i = 0 ; i < N ; i++) if(a[i].s > t) b[(*n)++] = a[i] ; return t ;87、B: struct student a.score[i] M:P改小写a[i]=a[i+1]; P: int i,n=0,min=a[0].s;for(i=1;i<N;i++) if(min>a[i].s) min=a[i].s; for(i=0;i<N;i++) if(a[i].s==min) b[n++]=a[i];return n;88、B: struct student * a->score[i] a M:char * sp P: *c =(b%10)*1000+(a/10)*100+(b/10)*10+a%10;89、B: struct student t; n-1 a[i].name,a[j].name M: ; whileP: int i,j = 0 ; for(i = 0 ; i < N ; i++) if(a[i].s >= l && a[i].s <= h) b[j++] = a[i] ; return j ;90、B: fp== fp M:n=strlen( aa ); ch=aa[i]; P:double max=h->s; STREC *p;p=h->next;while(p) { if(p->s>max ) max=p->s; p=p->next; } return max;91、B: double f1 f2 M: p=h->next; p=p->next;P: int i=0,j=strlen(str)-1; while(str[i++]==str[j--]);if(i>=j) return 1;return 0;92、B: h->next p->next >= M:p=h->next; p=p->nextP: int i,j; *n=0; for(i=0;i<mm;i++) for(j=0;j<nn;j++) b[(*n)++]=s[i][j];93、B: NODE next r M:|| t[j]=0;P: for(i = 0 ; i < nn ; i++) for(j = 0 ; j < mm ; j++) { b[np] = s[j][i] ; np = i * mm + j + 1; }94、B: next 0 r M:r=t; *r== 0 P: for(i = 0 ; i < M ; i++) strcat(b, a[i]) ;95、B: p->next q p->next M:while(*s) s++P: int i, j = 0, b[N] ; for(i = p + 1 ; i < n ; i++) b[j++] = w[i] ;for(i = 0 ; i <= p ; i++) b[j++] = w[i] ; for(i = 0 ; i < n ; i++) w[i]= b[i] ;96、B: double f1 f2M:char *fun ss++; tt++;P: int i; for(i = 0 ; i < m ; i++) fun1(w);97、B: h->next p->next >= M:p=h->next; p=p->nextP: int i,j; *n=0; for(i=0;i<mm;i++) for(j=0;j<nn;j++) b[(*n)++]=s[i][j];98、B: FILE * fclose(fp) fp M:; t[k]=b[j];P: 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 ;99、B: "rb" > fwrite M:p=s; ; P: int i, j ; for(i = 0 ; i < M ; i++) b[i] = 0 ; for(i = 0 ; i < N ; i++) { j = a[i] / 10 ;if(j > 10) b[M - 1]++ ; else b[j]++ ; }100、B: filename fp fp M:NODE * return h P: int k = 1 ; while(*s) { if(*s == ' ') k++ ; s++ ; } return k ;。
国家计算机等级考试二级c语言-南开100套题(C语言)
1 第一套给定程序的功能是:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为:S rπ=2,在程序中定义的变量名要与公式的变量相同)。
例如,输入圆的半径值:19.527,输出为:s=598.949991。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。
试题程序:#include <stdio.h>double fun( double r){return 3.14159*【1】/2.0;}void main(){double x;printf("Enter x: ");scanf("%lf",【2】);printf("s=%lf\n",fun(【3】));}【参考答案】(1)r*r (2)&x (3)x 【考点分析】本题考查:圆面积计算公式Sπ=*r*r;scanf( )函数的形式,其一般形式为"scanf("格式控制字符串",地址表列);",注意地址是由地址运算符"&"后跟变量名组成的;printf( )函数的形式,其一般形式为"printf("格式控制字符串",输出表列);";函数实参调用,函数作为另一个函数调用的实际参数出现。
【解题思路】填空1:计算圆的面积,公式为:s rπ=*r。
填空2:scanf( )函数一般形式为scanf(格式控制,地址表列),因此填入&x。
填空3:函数的实际参数是圆的半径x。
下列给定程序中,函数fun的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。
例如,当n为5时,函数值应为10.407143。
f(x)函数定义如下:f(x)=(1)(2)0002(1)(2)0x x xx xx x x⎧+/->⎪==⎨⎪-/-<⎩或请改正程序中的错误,使它能得出正确的结果。
南开100题WORD加答案(二级C语言考试)
1:下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx。
请编写函数num(int m,int k,int xx[])实现函数的要求 ,最后调用函数readwriteDAT()把结果输出到文件中。
例如:若输入17,5,则应输出:19,23,29,31,37。
注意:部分源程序已给出。
请勿改动主函数main()和函数readwriteDAT()的内容。
---------类型:素数。
void num(int m,int k,int xx[]) /*标准答案*/{int data=m+1;int half,n=0,I;while(1){half=data/2;for(I=2;I<=half;I++)if(data%I==0)break;if(I>half){xx[n]=data;n++;}if(n>=k)break;data++;} }或者:void num(int m,int k,int xx[]){int i,j,s=0;for(i=m+1;k>0;i++){for(j=2;j<i;j++)if(i%j==0) break; /*注:素数为只能被自己和1整除的数.如果i%j等于0,说明i不是素数,跳出本层循环*/if(i==j){xx[s++]=i;k--;}} }或者:void num(int m, int k, int xx[]){ int i=0;for(m=m+1;k>0;m++)if(isP(m)){ xx[i++]=m;k--; } }原程序如下:#include <>#include <>void readwriteDAT() ;int isP(int m){ int i ;for(i = 2 ; i < m ; i++)if(m % i == 0) return 0 ;return 1 ;}void num(int m,int k,int xx[]){}main(){ int m, n, xx[1000] ;clrscr() ;printf("\nPlease enter two integers:") ;scanf("%d,%d", &m, &n ) ;num(m, n, xx) ; for(m = 0 ; m < n ; m++)printf("%d ", xx[m]) ;printf("\n") ;readwriteDAT() ;system("pause");}void readwriteDAT(){ int m, n, xx[1000], i ;FILE *rf, *wf ;rf = fopen("", "r") ;wf = fopen("", "w") ;for(i = 0 ; i < 10 ; i++) {fscanf(rf, "%d %d", &m, &n) ;num(m, n, xx) ;for(m = 0 ; m < n ; m++) fprintf(wf, "%d ",xx[m]) ;fprintf(wf, "\n") ;}fclose(rf) ;fclose(wf) ;}2:已知数据文件中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是: 如果四位数各位上的数字均是0或2或4或6或8, 则统计出满足此条件的个数cnt, 并把这些四位数按从大到小的顺序存入数组b中。
二级C语言上机题南开100题超精简整理—字符串类
字符串1.while(p!=0)if(p->data==ch)return n;k=fun(head,ch);2./**found**/for(i=0,t=0;p[i];i++)/**found**/c[t]=‟\0‟;3. 程序设计将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
void fun(char *ss){int i;for(i=1;i<strlen(ss);i+=2){if(ss[i]>=‟a‟&&ss[i]<=‟z‟)ss[i]-=32;}}1.t[j]=s[i];j++;for(i=0;i<k;i++)t[j+i]=p[i];t[j+k]=0;2./**found**/while(*w)/**found**/if(*r==*p)3. 程序设计将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指定的数组中。
void fun(char *s,char t[]){ int i,j=0;for(i=0;i<strlen(s);i++)if(s[i]%2==0)t[j++]=s[i];t[j]=0;}1.第一处if(n%2==0) k=n-1;第二处c=s[k];第三处s[1]=c;2./**found**/long s=0,t=0;/**found**/t=t/10;3. 程序设计void fun(char*tt,int pp[ ]),统计在tt所指字符串中‘a’至‘z’26个小写字母各自出现在的次数,并依次放在pp 数组中。
void fun(char*tt, int pp[ ]) {char *p=tt;int i;for(i=0;i<26;i++) pp[i]=0;while(*p){if(*p>=‟a‟&&*p<=‟z‟)pp[*p-…a‟]+=1;p++;}}1.第1处STU fun(STU *std,char *num)第2处if(strcmp (std[i].num,num)= =0)第3处return (std[i]);2./**found**/r++; p++;/**found**/if(*r= =0)3. 程序设计将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指数组中。
全国计算机等级考试三级网络技术南开上机100题
题目1:下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx。
请编写函数num(int m,int k,int xx[])实现函数的要求,最后调用函数readwriteDAT()把结果输出到文件out.dat中。
标准答案*/{int data=m+1;int half,n=0,I;while(1){half=data/2;for(I=2;I<=half;I++)if(data%I==0)break;if(I>half){xx[n]=data;n++;}if(n>=k)break;data++;} }题目2:已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是: 如果四位数各位上的数字均是0或2或4或6或8, 则统计出满足此条件的个数cnt, 并把这些四位数按从大到小的顺序存入数组b中。
最后main()函数调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
void jsVal() /*标准答案*/{int bb[4];int I,j,k,flag;for (I=0;I<200;I++){bb[0]=a[I]/1000; bb[1]=a[I]%1000/100;bb[2]=a[I]%100/10; bb[3]=a[I]%10;for (j=0;j<4;j++){if (bb[j]%2==0)flag=1;else{flag=0;break;}}if (flag==1){ b[cnt]=a[I];cnt++;} }for(I=0;I for(j=I+1;j if (b[I] {k=b[I];b[I]=b[j];b[j]=k;}}题目3:函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编制函数STROR(),其函数功能是:以行为单位把字符串中的所有小写字母O左边的字符串内容移到该串的右边存放,然后并把小写字母O删除,余下的字符串内容移到已处理字符串的左边存放.最后把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT.DAT中. void StrOR(void) /*标准答案*/{int I,j,k,index,strl;char ch;for(I=0;I {strl=strlen(xx[I]);index=strl;for(j=0;j if(xx[I][j]=='o'){for(k=j;kxx[I][k]=xx[I][k+1];xx[I][strl-1]= ' ';index=j;}for(j=strl-1;j>=index;j--){ch=xx[I][strl-1];for(k=strl-1;k>0;k--)xx[I][k]=xx[I][k-1];xx[I][0]=ch;}}}题目4:函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中; 请编制函数StrOL( ), 其函数的功能是: 以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排,同时去除标点符号,之后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中。
南开100题(2011版 上机) 题型及思路总结 c语言
一、数的处理1.四舍五入(编程:16)算法:若预保留的位数的个数为n,则先把实数乘以10n+1(将涉及运算的的小数移到整数位上);然后对此数加5再除以10(+5:若个位大于5则进位;÷10:舍弃个位);最后把所得的整数强制转换成float型再除以10n就得到最后的结果程序代码:保留两位小数(注意各个变量的数据类型)float fun (float h){long t;float s;h=h*1000;t=(h+5)/10;s=(float)t/100.0;return s;}2.与位数有关的①挑出奇(偶)数位(改错19,65)程序代码:(挑出偶数位,高低位顺序不变)void fun(long s,long *t){long s1=10;s/=10; (若要求挑出奇数位的,则要删掉此句)*t=s%10; (将第一个奇数/偶数,放在t所指的存储单元中)while(s>0){s=s/100; (移动到下一个奇数/偶数位)*t=s%10*s1+*t; (将得到的数字放在t所指的存储单元中)s1=s1*10; (以便于下一次取出的数字放在*t的最高位)}}②挑出每位的奇(偶)数(改错34,76)程序代码:(挑出奇数,高低位顺序不变)void fun(long s,long *t){int d;long s1=1;*t=0;while(s>0){d=s%10; (取得整数s当前值的最低位,放入变量d中)if (d%2!=0) (判断d的奇偶性。
若题意要求找出偶数,则为:if(d%2==0)){*t=d*s1+*t; (将得到的数字放在t所指的存储单元中)s1*=10; (以便于下一次取出的数字放在*t的最高位)}s/=10; (移动到下一位)}}③数字某位的积(或和)(改错30,90)程序代码:{long k=1; (当求积时,设变量k=1;当求和时,设变量k=0)do{k*=num%10; (若求和,则为k+=num%10)num/=10;}while(num);return(k);}④某数的低(高)n位值(改错89;编程15)程序代码:⑪求w的后n-1位unsigned fun ( unsigned w ){unsigned t,s=0,s1=1,p=0;t=w;while(t>10) (确定w至少为两位数){if(t/10) (确定w至少为两位数)p=t%10;(将数w的最后一位数赋值于p)s=s+p*s1;(将要得出的结果放在s上,且符合位数)s1=s1*10;(位数是用s1调整的,所以循环即将结束后s1*10,挪到下一位上)t=t/10;(将w的最后一位数删除,开始新的循环)}return s;}⑫求低三位值long fun(int x,int y,long *p){int i;long t=1;for(i=1;i<=y;i++)t=t*x; (按照题意求得X y)*p=t; (指针所指地址的值为t,保留了原t的值)t=t%100; (求第三位,故求余)return t;}3.合并、组合(编程48,65,71,77,81,84,87,91)整数按位分离合并算法::(1)按位拆分正整数a 和b,算法是:对于两位数的正整数与10 整除(/)求其高位(十位),与10 取模(%)求其低位(个位)。
南开100
06年南开上机题1: 第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。
答案:int fun(int score[],int m,int below[]){int i,k=0,aver=0;for(i=0;i<m;i++)aver+=score[i];aver/=m;for(i=0;i<m;i++)if(score[i]<aver){below[k]=score[i];k++;}return k;}2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。
答案:void fun(int *a, int *n){int i,j=0;for(i=2;i<1000;i++)if ((i%7==0 || i%11==0) && i%77!=0)a[j++]=i;*n=j;}3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
答案:void fun(int x, int pp[ ], int *n){int i=1,j=0;k=0,*t=pp;for(i=0;i<=x;i++)if(i%2!=0){t[j]=I;j++;}for(i=0;i<j;i++)if(x%t[i]==0){pp[k]=t[i];k++;}*n=k;}4: 第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。
答案:void fun(char *tt, int pp[]){int i;for (i=0;i<26;i++)pp[i]=0;while (*tt){switch (*tt){case ‘a’: pp[0]++;break;case ‘z’: pp[25]++;break;}tt++;}}5: 第5题请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。
计算机等级考试 南开上机题库100题
南开上机题库100题1: 第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。
答案:int fun(int score[],int m,int below[]){int i,k=0,aver=0;for(i=0;i<m;i++)aver+=score[i];aver/=m;for(i=0;i<m;i++)if(score[i]<aver){below[k]=score[i];k++;}return k;}2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。
答案:void fun(int *a, int *n){int i,j=0;for(i=2;i<1000;i++)if ((i%7==0 || i%11==0) && i%77!=0)a[j++]=i;*n=j;}3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
答案:void fun(int x, int pp[ ], int *n){int i=1,j=0;k=0,*t=pp;for(i=0;i<=x;i++)if(i%2!=0){t[j]=I;j++;}for(i=0;i<j;i++)if(x%t[i]==0)pp[k]=t[i];k++;}*n=k;}4: 第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。
答案:void fun(char *tt, int pp[]){int i;for (i=0;i<26;i++)pp[i]=0;while (*tt){switch (*tt){case ‘a’: pp*0+++;break;case ‘b’: pp*1+++;break;case ‘c’: pp[2]++;break;case ‘d’: pp*3+++;break;case ‘e’: pp*4+++;break;case ‘f’: pp*5+++;break;case ‘g’: pp*6+++;break;case ‘h’: pp*7+++;break;case ‘i’: pp*8+++;break;case ‘j’: pp*9+++;break;case ‘k’: pp*10+++;break;case ‘l’: pp*11+++;break;case ‘m’: pp*12]++;break;case ‘n’: pp*12+++;break;case ‘o’: pp*14+++;break;case ‘p’: pp*15+++;break;case ‘q’: pp*16+++;break;case ‘r’: pp*17+++;break;case ‘s’: pp*18+++;break;case ‘t’: pp*19+++;break;case ‘u’: pp*20+++;break;case ‘v’: pp*21+++;break;case ‘w’: pp[22]++;break;case ‘x’: pp*23+++;break;case ‘y’: pp*24+++;break;case ‘z’: pp*25+++;break;tt++;}}5: 第5题请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。
全国计算机等级考试南开100题分类
一、素数: 1 34 55 64 66 821: 将大于整数m且紧靠m的k个素数存入数组xx传回34:选出100以上1000之内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数55:求出300个四位数是素数的个数,并从小到大进行排序64:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(I+10也在100以内)的个数以及这些I之和66:计算500-800内素数的个数,按从大到小顺序计算其间隔加、减之和82:求出300个四位数是素数的个数,再求出所有满足此条件的四位数平均值pjz1以及不满足此条件的四位数平均值pjz2二、结构体操作: 7 13 38 12 32 42 31 47 61 99 60 7560: 有200组数据,每组有3个数,每个数均是三位数,找出条件为每组中第二个数大于第一个数加第三个数的之和,存入结构数组bb 中,再对bb中的数据按照每组数据的第二个数加第三个之和的大小进行降序排列75: 有200组数据,每组有3个数,每个数均是三位数,找出条件为每组中第一个数大于第二个数加第三个数的和,存入结构数组bb中,再对bb中的数据按照每组数据的第一个数加第三个之和的大小进行升序排列if(aa[i].x1>(aa[i].x2+aa[i].x3)) bb[cnt++]=aa[i];if(bb[i].x1+bb[i].x3>bb[j].x1+bb[j].x3){ xy=bb[i]; bb[i]=bb[j]; bb[j]=xy;}三、字符替换与移位:8 36 56 62 98 95 96 18 37 97 10 73 11 63 16 100 74 178: f(p)值小于等于32或大于130,则该字符不变36:f(p)值小于等于32或f(p)对应的字符是数字0至9,则该字符不变56:f(p)值小于等于32或f(p)对应的字符是小写字母,则该字符不变62:f(p)值小于等于32或其ASCII值是偶数,则该字符不变98:f(p)值小于等于32或其ASCII值是奇数,则该字符不变95:f(p)值小于等于32或f(p)对应的字符是大写字母,则该字符不变96:f(p)值小于等于32或f(p)对应的字符是小写字母,则该字符不变18:原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变37:原字符是大写字母或计算后f(p)值小于等于32,则该字符不变97:原字符是数字字符0至9或计算后f(p)值小于等于32,则该字符不变10:把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a73:把字符串中的所有小写字母改写成该字母的上一个字母,如果是字母a,则改写成字母z11:把s字符串中的所有字母改写成该字母的下一个字母,字母z改写成字母a (指针)63:把s字符串中的所有字符左移一个位置,串中的第一个字符移到最后 (指针)16:把字符串中所有字符的ASCII值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCII值74:把字符串中所有字符的ASCII值左移4位,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符ASCII值,得到新的字符100:把字符串中的最后一个字符的ASCII值右移4位后加最后第二个字符的ASCII值,得到最后一个新的字符,第一个字符的ASCII值加原最后一个字符的ASCII值,得到第一个新的字符17:第一个字符加第二个字符=新字符,最后逆排序 strrev(xx[i]);四、字符串位置倒置: 33:把字符串中所有小写字母o左边的字符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放五、字符串单词倒置: 44:对行中以空格或标点符号为分隔的所有单词进行倒排.最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中六、字符串左右排序交换: 44 50 7144: 从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换,如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上50: 从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换,如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上71:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序,如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上七、字符串排序: 9 88 439: 对字符按从大到小的顺序进行排序88:对字符按从小到大的顺序进行排序43:对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序八、单词个数统计: 1919:统计一个长度为2的子字符串在另一个字符串中出现的次数九、Fibonacci数列: 2020: 求Fibonacci数列中大于t的最小的一个数 while(fn<=t) {...} return fn;十、迭代方法求方程: 21 do{...}while(fabs(x0-x1)>=0.000001); 十一、平方根: 2222: 求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s return sqrt(s);十二、实数运算: 2323: 求出N个实数的平均值aver,以及实数的整数部分之和sumint以及小数部分之和sumdec十三、完全平方数: 2424: 100至999中寻找符合条件的整数并依次从小到大存入数组中,它既是完全平方数,又是两位数字相同for(j=10;j*j<=i;j++)if(i==j*j&&(bw==sw||sw==gw||gw==bw)) bb[cnt++]=i; returncnt;十四、回文数: 25 ltoa(n,xy,10);25: 寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数十五、整数排序: 2 5 6 14 30 45 46 902: 把四位数各位上均是0或2或4或6或8的数从大到小的顺序存入数组b中5: 按每个数的后三位的大小进行升序排列,如果后三位的数值相等,按原先的数值进行降序排列6: 降序, 升序14: 如果该四位数连续大于该四位数以后的五个数且该数是奇数,把这些四位数按从小到大的顺序存入数组b中 for(j=i+1;j<=i+5;j++)if(a[i]>a[j]&&a[i]%2) flag=1; else {flag=0;break;}30: 小于偶数, 从小到大45: 大于该四位数以前偶数,从大到小46: 大于奇数,且该数必须能被7整除,把这些四位数按从大到小的顺序存入数组b中for(j=i-5;ja[j]&&a[i]%2&&a[i]%7==0) flag=1; else { flag=0;break;}90: 将一正整数序列{K1,K2,...,K9}重新排列成一个新的序列.新序列中,比K1小的数都在K1的前面,比K1大的数都在K1的后面十六、整数统计运算: 26 70 40 65 91 94 92 7926: 求出正整数totNum个数以及这些数右移1位后产生的新数是偶数的数的个数totCnt和满足此条件的这些数(右移前的值)的算术平均值totPjz70: 求出正整数totNum个数以及这些数右移1位后产生的新数是奇数的数的个数totCnt和满足此条件的这些数(右移前的值)的算术平均值totPjz40: 求出正整数totNum个数以及这些数各位数字之和是偶数的数的个数totCnt和满足此条件的这些数的算术平均值totPjz65: 求出正整数totNum个数以及这些数各位数字之和是奇数的数的个数totCnt和满足此条件的这些数的算术平均值totPjz91: 200个整数,求出奇数的个数cnt1和偶数的个数cnt2以及数组下标为偶数的元素值的算术平均值pj(保留2位小数)94: 200个整数,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx中值为偶数的算术平均值pj(保留2位小数)92: 200个整数,求出最大数max及最大数的个数cnt和数组xx中能被3整除或能被7整除的算术平均值pj(保留2位小数)79: 求出1到1000之内能被7或11整除但不能同时被7或11整除的所有整数放在数组a中,并通过n返回这些数的个数(指针) if(i%7==0&&i%11||i%7&&i%11==0) a[(*n)++]=i;十七、整数各位数字运算:68 15 78 69 85 77 89 27 53 48 54 49 80 81 87 6768: 200个四位数,如果四位数各位上的数字均是奇数,则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b中if(thou&&thou%2&&hun%2&&ten%2&&data%2)15: 200个四位数,若一个四位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,以及十位数字上的值小于等于个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b 中78: 200个四位数,若一个四位数的千位数字上的值大于等于百位数字上的值,百位数字上的值大于等于十位数字上的值,以及十位数字上的值大于等于个位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b 中69: 200个四位数,把一个四位数的千位数字上的值减去百位数字上的值再减去十位数字上的值最后减去个位数字上的值,如果得出的值大于等于零且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中if(thou-hun-ten-data>=0& &a[i]%2) b[cnt++]=a[i];85: 200个四位数,把一个四位数的个位数字上的值减去千位数字上的值再减去百位数字上的值最后减去十位数字上的值,如果得出的值大于等于零且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中if(data-thou-hun-ten>=0& &a[i]%2==0) b[cnt++]=a[i];77: 200个四位数,把一个四位数的千位数字上的值加上十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中if((thou+ten==hun+data)&&a[i]%2==0) b[cnt++]=a[i];89: 200个四位数,把一个四位数的千位数字上的值加上个位数字上的值恰好等于百位数字上的值加上十位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中if((qw+gw)==(sw+bw)&&a[i]%2) b[cnt++]=a[i];27: 300个四位数,求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序53: 300个四位数,求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序48: 300个四位数,求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序54: 300个四位数,求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序49: 300个四位数,求出千位数上的数减百位数减十位数上的数减个位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz280: 300个四位数,求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz281: 300个四位数,求出千位数上的数加百位数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz287: 300个四位数,求出千位数上的数加个位数等于百位数上的数加十位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz267: 5000以内,千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍.计算并输出这些四位自然数的个数cnt以及这些数的和sum十八、整数各位打散组合运算: 28 29 51 52 72 76 59 8628: 200个四位数,把千位数字和十位数字重新组成一个新的十位数ab,以及把个位数字和百位数字组成另一个新的十位数cd,如果新组成的两个十位数ab- cd>=0且ab-cd<=10且两个数均是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中, 并要计算满足上述条件的四位数的个数cnt if((ab-cd)>=0&&(ab-cd)<=10&&ab%2==1&&cd%2==1&&ab>=10&&cd>=10)29: 200个四位数,把千位数字和十位数字重新组成一个新的十位数ab,以及把个位数字和百位数字组成另一个新的十位数cd,如果新组成的两个十位数ab- cd>=10且ab-cd<=20且两个数均是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组 b 中,并要计算满足上述条件的四位数的个数cnt if(ab-cd>=10&&ab-cd<=20&&ab%2==0&&cd%2==0&&qw!=0&&gw!=0)51: 200个四位数,把千位数字和十位数字重新组成一个新的十位数,以及把个位数字和百位数字组成另一个新的十位数,如果新组成的两个十位数均是素数且新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt52: 200个四位数,把千位数字和个位数字重新组成一个新的十位数,以及把百位数字和十位数字组成另一个新的十位数,如果新组成的两个十位数均是奇数并且两个十位数中至少有一个数能被5整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt if(ab%2&&cd%2&&(ab%5==0||cd%5==0)&&ab>=10&&cd>=10)72: 200个四位数,把个位数字和千位数字重新组成一个新的十位数,以及把百位数字和十位数字组成另一个新的十位数,如果新组成的两个十位数均是偶数并且两个十位数中至少有一个数能被9整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt if((ab%9==0||cd%9==0)&&ab%2==0&&cd%2==0&&hun!=0&&data!=0)76: 200个四位数,把个位数字和千位数字重新组成一个新的十位数,以及把百位数字和十位数字组成另一个新的十位数,如果新组成的两个十位数必须是一个奇数, 另一个为偶数并且两个十位数中至少有一个数能被17整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的cntif((ab%2!=cd%2)&&((ab%17==0||cd%17==0)&&ab>=10&&cd>=10))59: 200个四位数,把千位数字和十位数字重新组成一个新的十位数ab,以及把个位数字和百位数字组成另一个新的十位数cd,如果新组成的两个十位数ab<0&&ab%2="=1&&ab%5!=0)&&cd%2!=1&&ab" 中,并要计算满足上述条件的四位数的个数cnt >=10&&cd>=10)86: 200个四位数,把千位数字和十位数字重新组成一个新的十位数ab,以及把个位数字和百位数字组成另一个新的十位数cd,如果新组成的两个十位数 ab>cd,ab必须是偶数且能被5整除,cd必须是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组 b 中,并要计算满足上述条件的四位数的个数cntif((ab-cd)>0&&(ab%2!=1&&ab%5==0)&&cd%2==1&&ab>=10&&cd>=10) 十九、方差运算: 33 83 9333: 计算出xx中偶数的个数even,奇数的平均值ave1,偶数的平均值ave2以及方差totfc的值83: 计算出xx中奇数的个数odd,奇数的平均值ave1,偶数的平均值ave2以及所有奇数的方差totfc的值93: 分别计算出xx中奇数的个数odd,偶数的个数even,平均值aver 以及方差totfc的值for(i=0;i二十、级数运算: 3535: Sn=M,这里Sn=A1+A2+...+An,并依次把n值存入数组单元b[0],b[1]和b[2]中。
计算机三(和谐)级上机C语言南开100题答案
}
}
第5题答案
void jsSort()
{
int i, j, data;
/*对数组aa的所有200个数进行选择排序 */
for (i=0; i<199; i++)
for (j=i+1; j<200; j++)
{
/*按每个数后三位的大小进行升序排列 */
}
}
第4题答案
void StrOL(void)
{
int i, j, k, strl, l;
/*循环遍历英文文章的全部字符,将既不是字母也不是空格的字符替换成空格 */
for (i=0; i<maxline; i++)
for (j=0; j<(int)strlen(xx[i]); j++)
strcpy(buf, &xx[i][j+1]);/*将后半截字符串复制到缓存行buf中 */
/*从第1个字符开始循环遍历前半截字符串 */
k = j = 0;
while (xx[i][j])
{
/*循环往后遍历,找出第1个小写字母'o'的位置或到达字符串末尾 */
while (xx[i][j]!='o' && xx[i][j])
{
int i,j,k;
char buf[80];
for (i=0; i<maxline; i++)/*循环以遍历英文文章的每一行 */
{
j = strlen(xx[i])-1;/*求出当前行最后一个字符的位置 */
2012年3月全国计算机二级C语言上机题库(南开100题)
第一套1.程序填空程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。
函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
第一处struct student t;第二处for(i=0;i<n-1;i++)第三处if(strcmp(a[i].name,a[j].name)>0)2程序修改给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向上顺序移动。
/**found**/q=p+i;/**found**/while(q>p)3程序设计学生的记录由学号和成绩组成,N 名学生的数据已在主函数中放入结构体数组s中,请编写了函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
int fun(STREC *a,STREC *b,int l,int h) {int i,j=0;for(i=0;i<N;i++)if((a[i].s>=1&&a[i].s<=h)b[j++]=a[i];return j;}第二套1.程序填空给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。
函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。
第一处free(q);第二处q=p->next;第三处q=q->next;2. 程序修改给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n各元素按从小到大的顺序进行排序。
/**found**/p=j;/**found**/p=i;3. 程序设计请编写一个fun函数,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机等级考试南开百题—字符串左右排序和比较类试题南开百题—字符串左右排序和比较2题函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx 中(第行字符串长度均小于80)。
请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx 中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。
条件:从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。
如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。
例如:位置 0 1 2 3 4 5 6 7 8源字符串 d c b a h g f e4 3 2 1 9 8 7 6 5则处理后字符串 h g f e a b c d8 7 6 5 9 1 2 3 4部分源程序已给出。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
#include<stdio.h>#include<string.h>#include<conio.h>char xx[20][80];void jsSort(){}void main(){readDat();jsSort();writeDat();}readDat(){FILE *in;int i=0;char *p;in=fopen("in.dat","r");while(i<20&&fgets(xx[i],80,in)!=NULL){p=strchr(xx[i],'\n'); if(p)*p=0;i++;}fclose(in);}writeDat(){FILE *out();int i;clrscr();out=fopen("out.dat","w"); for(i=0;i<20;i++){printf(\"%s\n",xx[i]); fprintf(out,"%s\n",xx[i]); }fclose(out);}注:先采用冒泡法对左边部分进行升序排序,然后将排序后的左半与右半按对应位进行调换。
void jsSort(){int i,strl,half,j,k; char ch;for(i=0;i<20;i++) /*行循环*/{strl=strlen(xx[i]); /*每行长度*/ half=strl/2;for(j=0;j<half-1;j++) /*每行的第j个位置*/ for(k=j+1;k<half;k++) if(xx[i][j]>xx[i][k]) {ch=xx[i][j]; /*每次将最小数赋给xx[i][j]*/ xx[i][j]=xx[i][k];xx[i][k]=ch;}for(j=half-1,k=strl-1;j>=0;j--,k--){ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}}}void jsSort(){int i,j,k,strl;char ch;for(i=0;i<20;i++){strl=strlen(xx[i]);for(j=0;j<strl/2;j++)for(k=j+1;k<strl/2;k++)if(xx[i][j]>xx[i][k]){ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}for(j=0;j<strl/2;j++){ch=xx[i][j];xx[i][j]=xx[i][(strl+1)/2+j]; xx[i][(strl+1)/2+j]=ch;}}4题函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx 中(第行字符串长度均小于80)。
请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx 中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。
条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。
如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。
例如:位置 0 1 2 3 4 5 6 7 8源字符串 a b c d h g f e1 2 3 4 9 8 7 6 5则处理后字符串 h g f e d c b a8 7 6 5 9 4 3 2 1部分源程序已给出。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat() 的内容。
#include<stdio.h> #include<string.h> #include<conio.h> charxx[20][80]; void jsSort(){}void main(){readDat();jsSort();writeDat();}readDat(){FILE *in;int i=0;char *p;in=fopen("in.dat","r"); while(i<20&&fgets(xx[i],80,in)!=NULL){p=strchr(xx[i],'\n'); if(p)*p=0;i++;}fclose(in);}writeDat(){FILE *out();int i;clrscr();out=fopen("out.dat","w");for(i=0;i<20;i++){ printf("%s\n",xx[i]); fprintf(out,"%s\n",xx[i]); }fclose(out);}注:该题采用插入法实行降序排序,其它与题2相似。
void jsSort(){int i,strl,half,j,k; char ch;for(i=0;i<20;i++) {strl=strlen(xx[i]); half=strl/2;for(j=1;j<half;j++) {ch=x[i][j];k=j-1;while((k>=0)&&(ch>xx[i][k])){xx[i][k+1]=xx[i][k]; k--;}xx[i][k+1]=ch;}for(j=half-1,k=strl-1;j>=0;j--,k--){ch=xx[i][j];xx[i][j]=xx[i][k]; xx[i][k]=ch;}}}void jsSort(){int i,j,k,strl;char ch;for(i=0;i<20;i++) {strl=strlen(xx[i]); for(j=0;j<strl/2;j++) for(k=j+1;k<strl/2;k++) if(xx[i][j]<xx[i][k]) {ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}for(j=0;j<strl/2;j++){ch=xx[i][j];xx[i][j]=xx[i][(strl+1)/2+j]; xx[i][(strl+1)/2+j]=ch;}}t中读取20行数据存放到字符串数组xx6题函数ReadDat()实现从文件in.da 中(第行字符串长度均小于80)。
请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。
条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序。
如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。
例如:位置 0 1 2 3 4 5 6 7 8源字符串 a b c d h g f e1 2 3 4 9 8 7 6 5则处理后字符串 d c b a e f g h4 3 2 1 9567 8部分源程序已给出。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include<stdio.h>#include<string.h>#include<conio.h>char xx[20][80];void jsSort(){}void main(){readDat();jsSort();writeDat();}readDat(){FILE *in;int i=0;char *p;in=fopen("in.dat","r"); while(i<20&&fgets(xx[i],80,in)!=NULL){ p=strchr(xx[i],'\n'); if(p)*p=0;i++;}fclose(in);}writeDat(){FILE *out();int i;clrscr();out=fopen("out.dat","w"); for(i=0;i<20;i++){ printf("%s\n",xx[i]); fprintf(out,"%s\n",xx[i]); }fclose(out);}注:要注意当要进行右半部分排序时,一定要判断原字符串个数是否为奇数,若是则要half加1,本题对右半部分采用选择法对其进行升序排序。
void jsSort() {int i,strl,half,j,k,p; char ch;for(i=0;i<20;i++){strl=strlen(xx[i]); half=strl/2;for(j=0;j<half-1;j++)for(k=j+1;k<half;k++) if(xx[i][j]<xx[i][k]) {ch=xx[i][j];xx[i][j]=xx[i][k]; xx[i][k]=ch;}if(strl%2) half++; /* Must to note the order line! */for(j=half;j<strl;j++) {p=j;for(k=j;k<str;k++) if(xx[i][k]<xx[i][p]) p=k;ch=xx[i][j];xx[i][j]=xx[i][p];xx[i][p]=ch;}}void jsSort(){int i,j,k,strl;char ch;for(i=0;i<20;i++) {strl=strlen(xx[i]); for(j=0;j<strl/2;j++) for(k=j+1;k<strl/2;k++) if(xx[i][j]<xx[i][k]) {ch=xx[i][j];xx[i][j]=xx[i][k]; xx[i][k]=ch;}for(j=(strl+1)/2;j<strl;j++)for(k=j+1;k<strl;k++) if(xx[i][j]>xx[i][k]) {ch=xx[i][j];xx[i][j]=xx[i][k]; xx[i][k]=ch;。