C程序设计.docx

上传人:b****0 文档编号:12805441 上传时间:2023-04-22 格式:DOCX 页数:60 大小:36.71KB
下载 相关 举报
C程序设计.docx_第1页
第1页 / 共60页
C程序设计.docx_第2页
第2页 / 共60页
C程序设计.docx_第3页
第3页 / 共60页
C程序设计.docx_第4页
第4页 / 共60页
C程序设计.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

C程序设计.docx

《C程序设计.docx》由会员分享,可在线阅读,更多相关《C程序设计.docx(60页珍藏版)》请在冰豆网上搜索。

C程序设计.docx

C程序设计

1.将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。

例如,若输入字符串"-1234",则函数把它转换为整数值-1234。

longfun(char*p)

{

/*以下代码仅供参考*/

inti,len,t;/*len为串长,t为正负标识*/

longx=0;

len=strlen(p);

if(p[0]=='-')

{t=-1;len--;p++;}

elset=1;

/*以下完成数字字符串转换为一个数字*/

while(*p)

x=x*10-48+(*p++);

returnx*t;

}

2.将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。

例如,二维数组中的数据为:

WWWW

SSSS

HHHH

则字符串中的内容应是:

WSHWSHWSH。

voidfun(chars[][N],char*b)

{

inti,j,n=0;

for(i=0;i

{

for(j=0;j

{

b[n]=s[j][i];

n=i*M+j+1;

}

}

b[n]='\0';

}

3.统计一行字符串中单词的个数,作为函数值返回。

一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。

intfun(char*s)

{

intk=1;

while(*s)

{

if(*s=='')k++;

s++;

}

returnk;

}

4.统计各年龄段的人数。

N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中,其余依此类推,把100岁(含100)以上年龄的人数都放在d[10]中。

结果在主函数中输出。

voidfun(int*a,int*b)

{

inti,j;

for(i=0;i

b[i]=0;

for(i=0;i

{

j=a[i]/10;

if(j>10)

b[M-1]++;

elseb[j]++;

}

}

5.删去一维数组中所有相同的数,使之只剩一个。

数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,一维数组中的数据是:

2223445666677899101010。

删除后,数组中的内容应该是:

2345678910。

intfun(inta[],intn)

{

inti,j=1,k=a[0];

for(i=1;i

if(k!

=a[i])

{

a[j++]=a[i];

k=a[i];

}

a[j]=0;

returnj;

}

6.移动字符串中的内容,移动的规则如下:

把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。

例如,字符串中原有的内容为:

ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是:

DEFGHIJKABC。

voidfun(char*w,intm)/*可调用fun1函数左移字符*/

{

inti;

for(i=0;i

fun1(w);

}

7.请编写一个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n≥2)位的整数,函数求出w的低n-1位的数作为函数值返回。

例如:

w值为5923,则函数返回923;w值为923则函数返回23。

unsignedfun(unsignedw)

{

if(w>10000)

w%=10000;

elseif(w>1000)

w%=1000;

elseif(w>100)

w%=100;

elseif(w>10)

w%=10;

returnw;

}

8.程序定义了N×N的二维数组,并在主函数中自动赋值。

请编写函数fun(inta[][N],intn),函数的功能是:

使数组左下三角元素中的值乘以n。

例如:

若n的值为3,a数组中的值为;

|197|

|238|

|456|

则返回主程序后a数组中的值应为;

|397|

|698|

|121518|

intfun(inta[][N],intn)

{

inti,j;

for(i=0;i

for(j=0;j<=i;j++)

a[i][j]*=n;

}

9.移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(含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。

voidfun(int*w,intp,intn)

{

inti,j=0,b[N];

for(i=p+1;i

b[j++]=w[i];

for(i=0;i<=p;i++)

b[j++]=w[i];

for(i=0;i

w[i]=b[i];

}

10.请编写一个函数,函数的功能是删除字符串中的所有空格。

例如,主函数中输入"asdafaaz67",则输出为"asdafaaz67"。

intfun(char*str)

{

char*p=str;

inti=0;

while(*p)

{

if(*p!

='')

str[i++]=*p;

p++;

}

str[i]=0;

}

11.将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。

函数fun中给出的语句仅供参考。

例如,字符串数组中的M个字符串为

AAAABBBBBBBCC

则合并后的字符串的内容应是:

AAAABBBBBBBCC。

提示:

strcat(a,b)的功能是将字符串b复制到字符串a的串尾上,成为一个新串。

voidfun(chara[M][N],char*b)

{

/*以下代码仅供参考*/

inti;*b=0;

for(i=0;i

strcat(b,a[i]);

}

12.将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。

函数fun中给出的语句仅供参考。

例如,二维数组中的数据为:

33333333

44444444

55555555

则一维数组中的内容应是:

334455334455334455334455。

voidfun(int(*s)[10],int*b,int*n,intmm,intnn)

{

/*以下代码仅供参考*/

inti,j,np=0;/*np用作b数组下标*/

for(i=0;i

for(j=0;j

{

b[np]=s[j][i];

np=i*mm+j+1;

}

*n=np;

}

13.将M行N列的二维数组中的数据,按行的顺序

依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。

例如,二维数组中的数据为:

33333333

44444444

55555555

则一维数组中的内容应是:

333333334444444455555555。

voidfun(int(*s)[10],int*b,int*n,intmm,intnn)

{

inti,j,k;

for(i=0;i

for(j=0;j

{

k=i*nn+j;

b[k]=s[i][j];

}

*n=mm*nn;

}

14.判断字符串是否为回文?

若是,函数返回1,主函数中输出:

YES,否则返回0,主函数中输出NO。

回文是指顺读和倒读都一样的字符串。

例如,字符串LEVEL是回文,而字符串123312就不是回文。

intfun(char*str)

{

inti,j=strlen(str);

for(i=0;i

if(str[i]!

=str[j-i-1])

return0;

return1;

}

15.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头

节点。

请编写函数fun,它的功能是:

找出学生的最高分,由函数值返回。

doublefun(STREC*h)

{

doublemax=h->s;

STREC*p;

p=h->next;

while(p)

{

if(p->s>max)

max=p->s;

p=p->next;

}

returnmax;

}

16.对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。

例如,原来的字符串为CEAedca,排序后输出为CedcEAa。

intfun(char*s,intnum)

{

charch;

inti,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;

}

}

}

17.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:

把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。

例如,输入的分数是6069,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。

主函数中将把60放在low中,把69放在heigh中。

intfun(STREC*a,STREC*b,intl,inth)

{

inti,j=0;

for(i=0;i

if(a[i].s>=l&&a[i].s<=h)

b[j++]=a[i];

returnj;

}

18.将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。

例如,若s所指字符串中的内容为:

"ABCDEFG12345",其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。

最后t所指的数组中的内容应是:

"BDF24"。

voidfun(char*s,chart[])

{

inti,j=0;

for(i=0;i

if(s[i]%2==0)

t[j++]=s[i];

t[j]=0;

}

19.将a、b中的两个两位正整数合并形成一个新的整数放在c中。

合并的方式是:

将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的十位和千位上。

例如,当a=45,b=12。

调用该函数后,c=2415。

voidfun(inta,intb,long*c)

{

*c=(b%10)*1000+(a/10)*100+(b/10)*10+a%10;

}

20.函数的功能是求出二维数组周边元素之和,作为函数值返回。

二维数组中的值在主函数中赋予。

例如:

二维数组中的值为

13579

29994

69998

13570

则函数值为61。

intfun(inta[M][N])

{

inttot=0,i;

for(i=0;i

{

tot+=a[0][i];

tot+=a[M-1][i];

}

for(i=1;i

{

tot+=a[i][0];

tot+=a[i][N-1];

}

returntot;

}

21.程序定义了N×N的二维数组,并在主函数中赋值。

请编写函数fun,函数的功能是:

求出数组周边元素的平均值并作为函数值返给主函数中的s。

例如:

a数组中的值为

|01279|

|19745|

a=|23831|

|45682|

|59141|

则返回主程序后s的值应为:

3.375。

doublefun(intw[][N])

{

inti,n=0;

doublesum=0;

for(i=0;i

{

sum+=w[0][i]+w[N-1][i];

n+=2;

}

for(i=1;i

{

sum+=w[i][0]+w[i][N-1];

n+=2;

}

returnsum/n;

}

22.将两个两位数的正整数a、b合并形成一个整数放在c中。

合并的方式是:

将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。

例如,当a=45,b=12时,调用该函数后,c=2514。

voidfun(inta,intb,long*c)

{

*c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10);

}

23.函数的功能是求出小于或等于lim的所有素数并放在aa数组中,函数返回所求出的素数的个数。

函数fun中给出的语句仅供参考。

intfun(intlim,intaa[MAX])

{

/*以下代码仅供参考*/

inti,j,k=0;

/*其中变量k用于统计素数个数*/

for(i=2;i<=lim;i++)

{

/*以下完成判断aa数组中小于或等于lim的素数并统计个数*/

for(j=2;j<=(i/2);j++)

if(i%j==0)

break;

if(j>(i/2))

aa[k++]=i;

}

returnk;

}

24.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:

把分数最低的学生数据放在b所指的数组中,注意:

分数最低的学生可能不止一个,函数返回分数最低的学生的人数

intfun(STREC*a,STREC*b)

{

inti,j=0,min=a[0].s;

for(i=0;i

{

if(min>a[i].s)

{

j=0;b[j++]=a[i];min=a[i].s;

}

elseif(min==a[i].s)

b[j++]=a[i];

}

returnj;

}

25.将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。

例如,若s所指字符串中的内容为:

"ABCDEFG12345",其中字符B的ASCII码值为偶数、…、字符2的ASCII码值为偶数、…都应当删除,其它依此类推。

最后t所指的数组中的内容应是:

"ACEG135"。

voidfun(char*s,chart[])

{

inti,j=0;

for(i=0;i

if(s[i]%2)

t[j++]=s[i];

t[j]=0;

}

26.求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。

例如,若传送给m的值为50,则程序输出:

711142122283335424449

voidfun(intm,int*a,int*n)

{

inti;

*n=0;

for(i=7;i<=m;i++)

if((i%7==0)||(i%11==0))

a[(*n)++]=i;

}

27.根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):

π11×21×2×31×2×3×41×2×…×n

─=1+─+─—+────+──────+……+────────

233×53×5×73×5×7×93×5×…×(2n+1)

程序运行后,如果输入精度0.0005,则程序输出为3.14…。

doublefun(doubleeps)

{

doubles=1,t=1./3;

intn=1;

while(t>=eps)

{

s+=t;n++;t=t*n/(2.0*n+1);

}

return(s*2.0);

}

28.求出1到1000之间能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。

voidfun(int*a,int*n)

{

inti;

*n=0;

for(i=7;i<1000;i++)

if(((i%7)==0||(i%11)==0)&&(i%77)!

=0)

a[(*n)++]=i;

}

29.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:

把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。

doublefun(STREC*a,STREC*b,int*n)

{

doublet=0;

inti;

*n=0;

for(i=0;i

t=t+a[i].s;

t=t/N;

for(i=0;i

if(a[i].s>t)

b[(*n)++]=a[i];

returnt;

}

30.假定输入的字符串中只包含字母和*号。

请编写函数fun,它的功能是:

将字符串中的前导*号全部移到字符串的尾部。

函数fun中给出的语句仅供参考。

例如,字符串中的内容为:

*******A*BC*DEF*G****,移动后,字符串中的内容应当是:

A*BC*DEF*G***********。

在编写函数时,不得使用C语言提供的字符串函数。

voidfun(char*a)

{

/*以下代码仅供参考*/

char*p,*q;

intn=0;

p=a;

while(*p=='*')/*统计串头'*'个数n*/

{

n++;p++;

}

q=a;

/*向前复制字符串,请填写相应的语句完成其功能*/

while(*p)

{

*q=*p;

p++;q++;

}

for(;n>0;n--)/*在串尾补n个'*'*/

*q++='*';

*q='\0';

}

31.请编写一个函数voidfun(chara[],charb[],intn),其功能是:

删除一个字符串中指定下标的字符。

其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。

例如,输入一个字符串:

World,然后输入3,则调用该函数后的结果为:

Word。

voidfun(chara[],charb[],intn)

{

strncpy(b,a,n);

b[n]=0;

strcat(b,a+n+1);

}

32.假定输入的字符串中只包含字母和*号。

请编写函数fun,它的功能是:

使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。

函数fun中给出的语句仅供参考。

例如,字符串中的内容为:

*******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:

****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为:

*******A*BC*DEF*G****。

n的值在主函数中输入。

在编写函数时,不得使用C语言提供的字符串函数。

voidfun(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1