收藏 分销(赏)

C语言计算机二级.doc

上传人:xrp****65 文档编号:7012491 上传时间:2024-12-24 格式:DOC 页数:6 大小:154.50KB
下载 相关 举报
C语言计算机二级.doc_第1页
第1页 / 共6页
C语言计算机二级.doc_第2页
第2页 / 共6页
点击查看更多>>
资源描述
类型一:调整一个数的个、十、百、千位 1.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12,调用该函数后c=4152。 *c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10); STYPE FILE Fp for( i=0; i<=sl; i ++) t[2*sl] = '\0'; 2.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。例如,当a=45,b=12,调用该函数后c=1524。 *c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10); *fw str str void fun(long s,long *t) sl=sl*10; 3.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12,调用该函数后c=2514。 *c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10); fp fclose(fp) fname for ( i=j+1; i<=n-1 ; i++ ) p=i; 4.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12,调用该函数后c=5142。 *c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10); *n next head a=NULL; if(*r==*p) 6.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12,调用该函数后c=2415。 *c = (b%10)*1000+(a/10)*100+(b/10)*10+a%10; struct student * a->score[i] a char *fun(char (*sq)[M]) return sp; 类型二:与*号有关的操作 13.请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。 删除串尾*号 char *p = a ; while(*p) p++ ; p-- ; while(*p == '*') p-- ; p++ ; *p = 0 ; N i -1 a2=k/10; return i; 14.请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。 除前导*外其他删除* if(a[i] != '*') a[k++]=a[i]; i++; N k ss[i] int k=0; while( *p || *q ) 15.请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。 删除前导和尾部* 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; N substr 0 fun(int x,int y, int z) return j; 17.请编写函数fun,它的功能是:使字符串的前导*号不得多于n个 前导*不多于n个 for(; a[j] !=0 ; j++) a[i++]=a[j]; a[i] = 0; M N 0 t=1; return(2*s); 18.请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。 串前*移至串尾 while(*p) { *q=*p; p++;q++; } a b.name score[i] s[j++]=s[i]; s[j]=0; 19.编写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址 (用****作为结束输入的标志)。 if(strlen(a[i]) > maxlen) { maxlen = strlen(a[i]) ; k = i ; } [N] i i+1 aa[i]=m%k; printf("%d",aa[i-1]); 类型三:与下标或ASCII码有关 21.请编写—个函数void fun(char *ss),其功能是:将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 下标奇数位置子母改大写 char *p = ss ; int i = 0 ; while(*p) { if((i % 2) && (*p >= 'a' && *p <= 'z')) *p -= 32 ; p++ ; i++ ; } return ss ; NULL n head,ch for (i = 0,t = 0; p[i] ; i++) c[t]= '\0'; 22.请编写函数fun,其功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。 下标为偶数字符删除 int i, j = 0 ; for(i=1; i<strlen(s); i+=2) t[j++]=s[i] ; t[j] = 0 ; data next head while(*r) *a = *r; a++; r++; 23.编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。 除首尾外其余ASCII码降序 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 ; } } ss[i] n+j 1 if(* p == ' ' ) *(p-1) = toupper( *( p - 1 ) ); 24.请编写函数fun,其功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。 ASCII码值为偶数删除 int i, j = 0 ; for(i = 0 ; i < strlen(s); i++) if(s[i] % 2) t[j++] = s[i] ; t[j] = 0 ; STU std[i].num std[i] r++; p++; if(*r==0) 26.请编写函数fun,其功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除 除下标偶数同时ASCII码值偶数之外其余全部删除 int i, j = 0 ; for(i = 0 ; i < strlen(s) ; i += 2) if(s[i] % 2 == 0) t[j++] = s[i] ; t[j] = 0 ; "r" fs ft if (d%2==0) s /= 10; 28.请编写函数fun,其功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。 将下标为偶数同时ASCII码为奇数删除 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 ; j k p while(i<j) if (*a) 类型四:数组和矩阵操作 33.请编写函数fun(inta[][N],int n),该函数的功能是:使数组左下半三角元素中的值乘以n。 左下三角元素乘n int i, j; for(i = 0 ; i < N ; i++) for(j = 0 ; j <= i; j++) a[i][j] *= n ; STU score[i] &std if(k>0) else if(k==0) 34.请编写函数fun(int a[][N],int n),该函数的功能是:使数组右上半三角元素中的值乘以m。 右上三角元素同乘m int i, j; for(i = 0 ; i < N ; i++) for(j = i ; j < N ; j++) a[i][j] *= m ; *av i x[j] float fun(int n) for (i=2; i<=n; i++) 35.请编写函数fun(int a[][N]),该函数的功能是:使数组左下半三角元素中的值全部置成0。 左下三角元素置0 int i, j; for(i = 0 ; i < N ; i++) for(j = 0 ; j <= i; j++) a[i][j] = 0 ; *std PERSON std int k,q,i; pt[i] = str[k][i] ; 36.请编一个函数求出二维数组每列中最小元素,并依次放入pp所指一维数组中。 二维数组每列最小元素 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] ; } *std std[i].age max.name void fun ( int*a, int*b ) t=*b;*b=*a;*a=t; 38.编写程序,实现矩阵(3行3列)的转置(即行列互换)。 矩阵转置 int i,j,arr[3][3] ; memcpy(arr, array, 9*sizeof(int)) ; for(i = 0 ; i < 3 ; i++) for(j = 0 ; j < 3 ; j++) array[i][j] = arr[j][i] ; N break n sum=0; scanf("%d",&a[i][j]); 42.请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。 数组周边元素的平均值 int i, j, 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; s/N j++ -1 # include <stdio.h> upfst(char *p) 43.请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。 二维数组周边元素之和 int tot = 0, i, j ; for(i = 0 ; i < N ; i++) {tot += a[0][i] ; tot += a[M-1][i] ; } for(i = 1 ; i < M - 1 ; i++) {tot += a[i][0] ; tot += a[i][N-1] ; } return tot ; x[i]/N j++ i++ num[k]=0; switch(*s) 类型五:学生分数操作 45.请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为71.80。 n门课程平均分71.8 int i; float ave=0.0; for(i=0; i<n; i++) ave=ave+a[i] ; ave=ave/n; return ave; x p s long k=1; num/=10 ; 46.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。 N名学生的成绩的平均分,78.625 STREC *p=h->next; double av=0.0; int n = 0 ; while(p!=NULL) { av = av + p->s ; p=p->next; n++; } av /= n ; return av ; char ch<='9' '0' b[k]=*p; b[k++]= ‘ ’; 48.请编写函数fun,该函数的功能是:找出成绩最高的学生记录。 找出成绩最高学生纪录(规定只有一个最高分) 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] ; std[i].year std[i] n IsPrime ( int n ) if(!( n%i )) 53.请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。 高于等于平均分的学生数据 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 ; ->sno ->name &t double fun(double a, double x0) if( fabs(x1-x0)>0.00001 ) 54.请编写函数fun,它的功能是:把分数最低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。 分数最低学生数据放在b所指数组 int i, j = 0, min=a[0].s ; for(i = 0 ; i < N; i++) { if(min > a[i].s) { j = 0 ; b[j++] = a[i] ; min = a[i].s ; } else if(min == a[i].s) b[j++] = a[i] ; } return j ; struct student a.name a.score[i] if(p==n) return -1; a[i]=a[i+1]; 55.请编写函数fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。 找出成绩最低学生纪录 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] ; 0 x[i]/N j++ double fun(int m) for( i = 100;i <= m;i += 100 ) 类型六:字符和字符串操作 59.请编写一个函数fun,它的功能是:比较两个字符串的长度,返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。 返回较长字符串 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 ; next t->data t fun (char *a) printf("%c" ,*a) ; 60.编写函数fun,该函数的功能是:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。 删除给定的字符 char *p = s ; int i = 0 ; while(*p) { if(*p != c) s[i++] = *p ; p++ ; } s[i] = 0 ; k len ss[i][j] result *=n--; result 68.请编写一个函数,用来删除字符串中的所有空格。 删除字符串中所有空格 char *p = str ; int i = 0 ; while(*p) { if(*p != ' ') str[i++] = *p ; p++ ; } str[i] = 0 ; 0 || 1 t-=1.0/i; return t; 69.请编一个函数fun(char *s),该函数的功能是把字符串中的内容逆置。 字符串逆置 strrev(s); i+1 k=j t void fun(char *str, char ch) if(*str!=ch) str[1] = 0; 72.编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。 统计子串出现的次数 int cnt = 0 ; char *p = str, *q ; while(*p) { q = strstr(p, substr) ; if(q == NULL) break; p = q + strlen(substr) ; cnt++ ; } return cnt ; N len *n=len t += 1.0/i; return t; 类型七:套用公式计算型 76.请编写函数fun,其功能是:计算并输出下列多项式值: Sn=1+1/1!+1/2!+1/3!+1/4!+…+1/n! 若主函数从键盘给n输入15,则输出为s=2.718282。 double s=1 ; long t=1; int i; for(i=1; i<=n; i++) { t=t*i; s+=1./t; } return s; 1 -1 t for(i=1; i<=3; i++) if(k>=0 && k<=6) 77.请编写函数fun,其功能是:计算并输出当x<0.97时下列多项式的值,直到|Sn-S(n-1)|<0.000001为止。Sn=1+0.5x+0.5(0.5-1)/2!x(2)+...+ 0.5(0.5-1)(0.5-2) .....(0.5-n+1)/n!x(n) 输入0.21后,则输出为s=1.100000。 double s1=1.0,p=1.0,sum=0.0,s0,t=1.0; int n=1; do{s0=s1;sum+=s0; t*=n;p*=(0.5-n+1)*x; s1=p/t; n++;}while(fabs(s1-s0)>1e-6); return sum; x n fabs(t) for(i=1; i<=y; i++) t=t%1000; 78.请编写函数fun,其功能是:计算并输出下列多项式值: Sn=(1-1/2)+(1/3-1/4)+...+(1/(2n-1)1/2n) 若输入8后,则输出为S=0.662872。 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; j=2 i j sum=j=0; if(sum%4==2) 79.请编写函数fun,其功能是:计算并输出 S=1+(1+2^0.5)+(1+2^0.5+3^0.5)+……+ (1+2^0.5+3^0.5+……+n^0.5) 输入20后,则输出为s=534.188884。 int i; double fac=1.0; double sum=1.0; for(i=2;i<=n;i++) { fac+=sqrt(i); sum+=fac; } return sum; a a b c=c+32; c=c+5; 84. 请编写函数fun,其功能是:计算并输出下列多项式值:s=1+1/(1*2)+1/(1*2*3)+..1/(1*2*3...*50) 例如,若主函数从键盘给n输入50后,则输出为S=1.718282。 double t,sn=1.0; int i,j; for(i=1;i<n;i++) {t=1.0; for(j=1;j<=i;j++) t*=j;sn+=1.0/t;} return sn; n%10 break break if(t==0) *zero=count; 类型八:求整除 86.请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。 能被7或11整除 int i ; *n=0 ; for(i=7 ; i<=m; i++) if((i % 7 == 0) || (i % 11 == 0)) a[(*n)++]=i ; q next next p = j; p = i; 89.请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。 N以内能被5或9整除的所有自然数倒数之和 0.583333 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; a[i] a[i] 0 y=1; d=a-i; 类型九:其它各类计算 92.请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。sum=148.874270。 3到n之间所有素数平方根之和 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; i t++ count int fun(int a,int b,int c) else retrun 1; 93.编写函数int fun(int lim,int aa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中 小于或等于lim所有素数 for(j = 2 ; j <= (i/2) ; j++) if(i % j == 0) break; if(j > (i/2)) aa[k++] = i; a[0][i] < x,y int fun(int *x,int *y) t=*x;*x=*y;*y=t; 95.请编写一个函数 unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n≥2)位的整数,则函数求出w的后n-1位的数作为函数值返回 5923=〉923 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 ; tt tt.score[i] std m=i; if(a[k]>a[m]) m=k; 96.请编写函数fun,其功能是:计算并输出给定10个数的方差: 方差S=11.730729 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; 1 1 i k=i; c=k%10; 97.请编写函数fun,其功能是:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。s=35.951014 相邻两元素平均值平方根之和 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; x n t d=1; s=0; d=d/10; 98.请编一个函数float fun(double h),函数的功能是对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值为正数)。 保留2位小数 long w ; w = h * 100 + 0.5 ; return (float) w / 100 ; 48 s++ ctod(a)+ctod(b) void fun ( char *s, int* a, int *b ) *a=*a+1 ; *b=*b+1; 99.请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。sum=763 整数n的所有因子 int s = 0, i ; for(i = 2 ; i < n ; i++) if(n % i == 0) s +=i ; return s ; && ‘A’ ch void fun(int *a) a[j]=a[j-1]; 请编函数fun,其功能是将一个数字字符串转换成与其面值相同的长整型整数。可调strlen函数求字符串长度。例如:在键盘输入字符串2345210,函数返回长整型数2345210。 数字字符串转换为整数 int len, t; long x=0; len=strlen(s); if(s[0]=='-') { t=-1; len--; s++; } else t=1; while(*s) x = x*10-48+(*s++); return x*t; 0 t (t-1)*(t+2)/2 b[i]=0; b[a[i] - 'a']++; if (b[max] <b[i]) 请编写函数fun,其功能是:将一组得分中,去掉一个最高分和一个最低分,然后求平均值,并通过函数返回。函数形参a指向存放得分的数组,形参n中存放得分个数(n>2)。8.687500 double max,min,pjz; int i; max = min=a[0]; for(i=1;i<n;i++) {if(max<a[i]) max=a[i]; if(min>a[i]) min=a[i]; } for(i=0,pjz=0;i<n;i++) pjz+=a[i]; return (pjz-max-min)/(n-2); a[i] m%10 m/10 b[i]=a[i][0]; for (j=1; j<N; j++) if ( b[i] >a[i][j] ) 6
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服