全国计算机二级C上机 编程题(5)

2019-03-29 14:34

38.请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。 例如,若输入字符串123412132,输入字符1,则输出3。

注:本题用while()循环来控制字符的移动,每移动一个字符都要进行判断(if(*ss==c))是否为指定的字母,若是则个数加1。这里要注意如何让ss指针向下走动(ss++)。 #include #include #define M 81

int fun(char *ss,char c) { int num=0;

while(*ss!='\\0') {if(*ss==c) num++; ss++;} return(num); }

main( )

{ char a[M],ch;

printf(\

printf(\

printf(\

39.请编写函数fun,该函数的功能是:移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。例如,一维数组中的原始内容为:1,2,3,4,5,6,7,8,9,10;p的值为3。移动后,一维数组中的内容应为:5,6,7,8,9,10,1,2,3,4。 #include #define N 80

void fun(int *w, int p, int n) { int i,k=0,b[N];

for(i=p+1; i

main( )

{ int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; int i,p,n=15;

printf(\

for(i=0; i

printf(\ for(i=0; i

40.请编写函数fun,该函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。

例如,字符串中原有的内容为ABCDEFGHIJK,m的值为3,移动后,字符串中的内容应该是DEFGHIJKABC。

-21-

#include #include #define N 80

void fun (char *w,int m) { int i,j; char t; for(i=1;i<=m;i++) { t=w[0];

for(j=1;w[j]!='\\0';j++) w[j-1]= w[j] ; w[j-1] =t; } }

main( )

{ FILE *wf; char a[N]= \ int m;

printf(\ puts(a);

printf(\ m: \ scanf(\ fun(a,m);

printf(\ puts(a);

printf(\

wf=fopen(\ fun(a,3);

fprintf(wf,\ fclose(wf);}

41.请编写函数fun,该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。例如,若二维数组中的数据为:W W W W 则字符串中的内容应是WSHWSHWSH。 S S S S H H H H #include #define M 3 #define N 4

void fun(char (*s)[N],char *b ) { int i,j,k=0;

for(i=0;i

for(j=0;j

main( )

{ FILE *wf;

char a[100],w[M][N]={{ 'W', 'W', 'W', 'W'},{'S', 'S', 'S', 'S'},{'H', 'H', 'H', 'H'}}; int i,j;

printf(\

-22-

for(i=0;i

{ for(j=0;j

printf(\ printf(\ } fun(w,a);

printf(\ puts(a);

printf(\

wf=fopen(\ fprintf(wf,\ fclose(wf); }

42.下列程序定义了NXN的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N],int n),该函数的功能是:使数组右上半三角元素中的值乘以m。

197a?2384562181424651612例如:若m的值为2,a数组中的值为,则返回主程序后a数组中的值应为。

/*该题的关键也是在如何表示右上半角,本题采用的是在一行内从最后一列的元素开始往前乘,只有j>=i时才改变。*/

#include #include #include #define N 5

int fun( int a[][N], int m) { int i,j;

for(i=0; i=i; j--) a[i][j]*=m; }

main( )

{ int a[N][N],m,i,j;

printf(\for( i=0; i

{a[i][j]=rand() ; printf(\printf(\}

do m=rand(); while( m>=3); printf(\fun( a,m);

printf(\for(i=0; i

-23-

{for(j=0; j

43.编写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。

函数strlen用于求出字符串的长度,这个题中主要是*max=p;不能换成max=&p;如果用maz=&p;则只改变了max的指向,它不能传回给实参。因此我们要改变max指向地址中的内容,这才能使得实参ps有正确的值。#include \#include \#include \

fun(char (*a)[81], int num,char **max) { char *p=a[0];int i; for(i=1;i

if(strlen(a[i])>strlen(p)) p=a[i]; *max=p; }

main( )

{ char ss[10][81],*ps; int n,i=0;

printf(\gets(ss[i]); puts(ss[i]);

while(!strcmp(ss[i],\{ i++;

gets(ss[i]); puts(ss[i]); } n=i;

fun(ss,n,&ps);

printf(\}

44.编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd asasdfg asd as zx67 asdmklo,子字符串为as,则应输出6。

注:由于小串中只有2个字符所以可用str[i]==sbustr[0]&&str[i+1]==substr[1]来判断小串是否与长串当前位置(str[i])相同(即出现一次)。因而只要让长串当前位置逐一向后移即可(用for()循环来完成)。 #include \#include \#include \

int fun(char *str,char *substr) { int i,n=0,s=strlen(str); for(i=0;i

if((str[i]==substr[0])&&(str[i+1]==substr[1])) n++; return n;

-24-

}

main( )

{ char str[81],substr[3]; int n;

printf(\gets(str);

printf(\gets(substr); puts (str); puts(substr); n=fun(str,substr); printf(\

45.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。

例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G。 #include #include

void fun (char *a,int n ,int h , int e) { int i,j=0;

for(i=h;i< n-e ;i++) a[j++]=a[i]; a[j]= ‘\\0’ ; }

main( )

{ FILE *wf ; char s[81],*t,*f;

char *p=\ int m=0,tn=0, fn=0;

printf(\ gets(s); t=f=s;

while(*t) { t++;m++;} t-- ;

while(*t=='*') {t--;tn++;} while(*f=='*') {f++;fn++;} fun( s, m, fn, tn);

printf(\ puts(s);

wf=fopen(\ fun(p,21,4,7);

fprintf(wf,\ fclose(wf);}

-25-


全国计算机二级C上机 编程题(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:社会资本与永续社区发展 概念探讨与研究议题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: