C语言编程Word文档格式.docx
《C语言编程Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言编程Word文档格式.docx(56页珍藏版)》请在冰豆网上搜索。
197
238
456
则返回主程序后a数组中的值应为:
397
698
121518
intfun(inta[][N],intn)
intj,k;
for(j=0;
j<
N;
j++)
j+1;
a[j][k]*=n;
4.程序设计题
请编写函数fun,它的功能是:
计算n门课程的平均分,计算结果作为函数值返回。
例如,若有5门课程的成绩是90.5、72、80、61.5、55,则函数的值为:
71.80。
floatfun(float*a,intn)
floats=0.0;
intI;
for(i=0;
i<
n;
i++)
s+=a[i];
returns/n;
5.程序设计题
请编写一个函数unsignedfun(unsignedn),n是一个大于10的无符号整数,若n是m(m≥2)位的整数,则函数求出n的后m-1位的数作为函数值返回。
例如,若n的值为1234,则fun()函数值为234。
unsignedt,s=0,s1=1,p=0;
t=m;
while(t>
10)
if(t/10)
p=t%10;
s=s+p*s1;
s1=s1*10;
t=t/10;
returns;
6.程序设计题
编写函数fun,其功能是:
根据以下公式计算s,将结果作为函数值返回;
n通过形参传入:
S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…n)
若n的值为11时,函数的值为:
1.833333
floatfun(intn)
{
intt=0,k;
for(k=1;
k<
=n;
k++)
{t+=k;
s+=1.0/t;
}
returns;
7.程序设计题
请编写函数fun,其功能是:
计算并输出3到m之间所有素数的平方根之和。
例如,若主函数从键盘给m输入50后,则输出为s=63.665791。
intn,k,i;
doublesum=0.0;
for(n=3;
n<
=m;
n++)
k=sqrt(n);
for(i=2;
i<
=k;
i++)
if(n%i==0)break;
if(i>
=k+1)
sum+=sqrt(n);
returnsum;
8.程序设计题
求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
例如,若传送给m的值为50,则程序输出:
711142122283335424449
voidfun(intm,int*a,int*n)
intk;
*n=0;
if(k%7==0||k%11==0)
a[(*n)++]=k;
9.程序设计题
N名学生的成绩已在主函数中放入一个带头节点的链表结构中,a指向链表的头节点。
找出学生的最高分,由函数返回。
doublemax;
STR*q=a;
max=a->
s;
do
if(q->
s>
max)
max=q->
q=q->
next;
while(q!
=0);
returnmax;
10.程序设计题
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:
函数返回指定学号的学生数据,指定的学号在主函数中输入。
若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数是strcmp)。
STRECfun(STREC*a,char*b)
STRECt={NULL,-1};
if(!
strcmp(a[k].num,b))
returna[k];
returnt;
11.程序设计题
将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为:
“ABCDEFG12345”,其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必需删除;
而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他依此类推。
最后t所指的数组中的内容应是:
“135”。
if(k%2==1&
s[k]%2==1)
t[n]='
13.程序设计题
给定程序中,函数fun的功能是:
把形参str所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注意:
字符串的长度大于等于2)。
inti,n,j;
charc;
n=0;
str[i]!
='
n++;
if(n%2==0)
j=n-1;
else
j=n-2;
c=str[j];
for(i=j-2;
i>
=1;
i=i-2)
str[i+2]=str[i];
str[1]=c;
14.程序设计题
将两个三位数的正整数a、b合并形成一个长整数在c中。
合并的方式是:
将a数的百位、十位和个位放在c数的十万位、千位和十位上,b数的百位、十位和个位放在c数的万位、百位和个位上。
当a=456,b=123,调用该函数后c=415263。
voidfun(inta,intb,long*c)
*c=a/100;
*c=*c*10+b/100;
*c=*c*10+(a/10)%10;
*c=*c*10+(b/10)%10;
*c=*c*10+a%10;
*c=*c*10+b%10;
15.程序设计题
将两个两位数的正整数a、b合并形成一整数放在c中。
将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,b=12。
调用该函数后,c=4152。
*c=a/10*1000+a%10*10+b/10*100+b%10;
16.程序设计题
下列程序定义了N×
N的二维数组,并在主函数中赋值。
请编写函数fun,函数的功能是:
求出数组周边元素的平均值并作为函数值返回给主函数中的变量r。
例如,若c数组中的值为:
则返回主程序后r的值应为4.625000。
inti,j,k=0;
doubler=0.0;
for(j=0;
j++)
r+=b[0][j];
k++;
r+=b[N-1][j];
for(i=1;
=N-2;
i++)
r+=b[i][0];
r+=b[i][N-1];
returnr/=k;
17.程序设计题
请编写一个函数voidfun(char*tt,intpp[]),统计在tt所指字符串中'
a'
到'
z'
26个小写字母各自出现的次数,并依次放在pp所指数组中。
例如,当输入字符串:
abcdefgabcdeabc后,程序的输出结果应该是:
33322110000000000000000000
voidfun(char*tt,intpp[])
intn;
for(n=0;
n<
26;
n++)
pp[n]=0;
while(*tt!
)
{
if(*tt>
&
*tt<
pp[*tt-'
]++;
tt++;
18.程序设计题
假定输入的字符串中只包含字母和*号。
除了字符串前导和尾部的*号之外,将串中其他*号全部删除。
形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。
在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:
****A*BC*DEF*G******,删除后,字符串中的内容应当是:
****ABCDEFG******。
voidfun(char*a,char*h,char*p)
char*q=h;
intn=0;
while(q<
=p)
{if(*q!
*'
)h[n++]=*q;
q++;
while(*q)
{h[n++]=*q;
h[n]='
19,程序设计题
计算并输出当x<
0.97时如下多项式的值,直到|Sn-Sn-1|<
0.000001为止:
例如,在主函数中从键盘给x输入0.21后,输出为:
s=1.100000。
doublefun(doublex)
intn=1;
doubles0,s1=1.0,t=1.0;
do
s0=s1;
t=t*(0.5-n+1)*x/n;
s1=s0+t;
}while(fabs(s1-s0)>
=0.000001);
returns1;
20,程序设计题
将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
例如,若输入字符串"-1234",则函数把它转换为整数值-1234。
longfun(char*p)
longt=0;
intflag=1;
if(*p=='
-'
)
{flag=-1;
p++;
while(*p)
{t=t*10+(*p-'
0'
);
returnflag*t;
21.程序设计题
将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指串中剩余的字符形成的新串放在t所指的数组中。
例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符C的ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;
而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其voidfun(char*s,chart[])
他依此类推。
最后t所指的数组中的内容应是“BDF12345”。
if(k%2!
=0||s[k]%2!
=1)
22.程序设计题
编写函数fun,其功能是实现矩阵(3行3列)的转置(即行列互换)。
例如,输入下面的矩阵:
100200300
400500600
700800900
程序输出:
100400700
200500800
300600900
intfun(intarray[3][3])
intj,k,t;
3;
j;
t=s[j][k];
s[j][k]=s[k][j];
s[k][j]=t;
23.程序设计题
将大于形参m且紧靠m的k个素数存入xx所指的数组中。
例如,若输入17、5,则应输出:
19、23、29、31、37。
voidfun(intm,intk,intxx[])
intj,n=0;
while(n<
k)
m++;
for(j=2;
j<
m;
j++)
if(m%j==0)break;
if(j>
=m)xx[n++]=m;
24.程序设计题
把分数最低的学生数据放在b所指的数组中。
注意,分数最低的学生可能不止一个,函数返回分数最低的学生的人数。
intfun(STREC*a,STREC*b)
doublemin=100.0;
if(min>
a[j].s)
min=a[j].s;
if(a[j].s==min)
b[n++]=a[j];
returnn;
25.程序设计题
N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。
找出学生的最低分,由函数值返回。
doublefun(STREC*h)
doublemin=h->
while(h!
=NULL)
h->
s)min=h->
h=h->
returnmin;
26.程序设计题
规定输入的字符串中只包含字母和*号。
将字符串中的前导*号全部删除,中间和尾部的*号不删除。
*******A*BC*DEF*G****,删除后,字符串中的内容应当是:
A*BC*DEF*G****。
在编写函数时,不得使用C语言提供的字符串。
fun(char*s)
intk=0,j=0,n=strlen(s);
while(s[k]=='
for(;
n+1;
s[j++]=s[k];
27.程序设计题
请编写函数fun,其功能是计算并输出下列多项式的值:
Fn=1+1/1!
+1/2!
+1/3!
+1/4!
+…+1/m!
例如,若主函数从键盘给m输入5,则输出为F=2.716667。
doublet,s=1.0;
inti,j;
t=1.0;
for(j=1;
=i;
t*=j;
28.程序设计题
计算并输出:
例如,若主函数从键盘给m输入10后,则输出为F=104.478749。
inti;
doublef=1.0,p=1.0;
for(i=2;
p+=pow(i,0.5);
f+=p;
returnf;
29.程序设计题
将a、b两个两位正整数合并形成一个新的整数放在c中。
将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上。
例如,当a=45、b=12时,调用该函数后c=1425。
voidfun(inta,intb,long*c)
*c=a/10*100+a%10+b/10*1000+b%10*10;
30.程序设计题
数组a[N]保存着一组3位数的无符号正整数,其元素的个数通过变量len传入fun函数。
请补充fun函数,该函数的功能是:
从数组a中找出个位和百位数字相等的所有无符号整数,结果保存在数组yy中,其个数由fun函数返回。
例如,当a[6]={111,323,677,456,987,999}时,b[3]={111,323,999}。
inti,n=0;
intg,b;
len;
g=a[i]%10;
b=a[i]/100;
if(g==b)
bb[n++]=a[i];
31.程序设计题
请编写函数fun,其功能是求出二维数组周边元素之和,该和值作为函数值返回。
二维数组中的值在主函数中赋予。
二维数组中的值为
13579
29994
69998
13570
则函数值为61。
intfun(inta[M][N])
intk,s=0;
for(k=0;
k++)
s+=a[0][k]+a[M-1][k];
for(k=1;
M-1;
s+=a[k][0]+a[k][N-1];
32程序设计题
将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入“abc4EFg”,则应输出“aBc4EFg”。
voidfun(char*ss)
strlen(ss);
k+=2)
if(ss[k]>
ss[k]<
ss[k]=ss[k]-'
+'
A'
33.程序设计题
编写函数fun,其功能是,根据以下公式求P的值,结果由函数值返回。
M与n为两个正整数且要求m>
n:
P=m!
/(n!
*(m-n)!
m=12、n=8时,运行结果为495.000000。
floatfun(intm,intn)
floats=1.0;
for(k=n+1;
s*=k;
=(m-n);
s/=k;
34.程序设计题
把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
例如,输入的分数是60、69,则应当把分数在60~69之间的学生数据进行输出,包含60分和69分的学生数据。
主函数中将把60放在low中,把69放在heigh中。
intfun(STREC*a,STREC*b,intl,inth)
if(a[k].s>
=l&
a[k].s<
=h)
b[n++]=a[k];
35.程序设计题
移动一维数组中的内容;
若数组中有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)
intj,k,t=0;
=p;
t=w[0];
w[k-1]=w[k];
w[n-1]=t;
36.程序设计题
请编写函数fun(),该函数的功能是:
统计一行字符串中单词的个数,作为函数值返回。
一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。
intfun(char*s)
inti,j=0;
s[i]!
if(s[i]!
'
(s[i+1]=='
'
||
s[i+1]=='
))
j++;
returnj;
37.程序设计题
统计各年龄段的人数。
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;
M;
b[j]=0;
if(a[i]>
=100)b[10]++;
elseb[a[i]/10]++;
38.程序设计题
删去一维数组中所有相同的数,使之只剩一个。
数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,若一维数组中的数据是