国二C编程100Word文档格式.docx
《国二C编程100Word文档格式.docx》由会员分享,可在线阅读,更多相关《国二C编程100Word文档格式.docx(38页珍藏版)》请在冰点文库上搜索。
}
4.请编写一个函数voidfun(char*tt,intpp[]),统计在tt字符串中“a”到“z”26个字母各自出现的次数,并依次放在pp所指数组中。
当输入字符串abcdefabcdeabc后,程序的输出结果应该是:
33322110000000000000000000
voidfun(int*tt,intpp[])
{inti;
26;
pp[i]=0;
while(*tt)
if(*tt>
='
a'
*tt<
z'
){pp[*tt-'
]++;
tt++;
elsett++;
5.请编写一个voidfun(intm,intk,intxx[]),该函数的功能是:
将大于整数m且仅靠m的k个素数存入xx所指的数组中。
若输入:
17,5,则应输出:
19,23,29,31,37。
voidfun(intm,intk,intxx[])
{intg=0,i,j,flag=1;
i=m+1;
while(g<
k)
for(j=2;
j<
i;
j++)
if(i%j!
=0)flag=1;
else{flag=0;
break;
if(flag)xx[g++]=i;
i++;
}}
6.请编写一个函数voidfun(chara[],charb[],intn),其功能是:
删除一个字符串中指定下标的字符。
其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。
输入一个字符串world,然后输入3,则调用该函数后的结果为word.
voidfun(chara[],charb[],intn)
{inti,j=0;
LEN;
if(i!
=n)
{b[j]=a[i];
b[j]='
\0'
;
7.请编写一个函数intfun(int*s,intt,int*k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。
输入如下整数:
876675896101301401980431451777则输出结果为:
6,980。
voidfun(int*s,intt,int*k)
{inti,max;
max=s[0];
t;
if(s[i]>
max){max=s[i];
*k=i;
8.编写函数fun,函数的功能是:
根据以下公式计算s,计算结果作为函数值返回;
n通过形参传入。
s=1+1/(1+2)+1/(1+2+3)+.....+1/(1+2+3+...+n)例如:
若n的值为11时,函数的值为1.83333
floatfun(intn)
floats=1.0,t=1.0;
for(i=2;
=n;
{
t=t+i;
s=s+1/t;
returns;
9.编写函数fun,它的功能是:
根据以下公式求p的值,结果由函数值带回。
m和n为两个正整数且要求m>
n。
p=m!
/(n!
*(m-n)!
)例如:
m=12,n=8时,运行结果为495.000000.
floatfun(intm,intn)
{floatp,t=1.0;
inti;
for(i=1;
=m;
t=t*i;
p=t;
for(t=1.0,i=1;
p=p/t;
=m-n;
returnp;
10.编写函数fun,它的功能是:
利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。
X(n+1)=cos(xn)迭代步骤如下:
1)取x1初值为0.0
2)x0=x1,把x1的值赋给x0;
3)x1=cos(x0),求出一个新的x1;
4)若x0-x1,的绝对值小于0.000001,则执行步骤(5),否则执行步骤
(2)
5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。
程序将输出结果Root=0.739085.
floatfun()
{floatx1=0.0,x0;
do{
x0=x1;
x1=cos(x0);
}while(fabs(x0-x1)>
=1e-6);
returnx1;
11.下列程序定义了N*N的二维数组,并在主函数中自动赋值。
请编写函数fun(inta[][N]),该函数的功能是:
使数组左下半三角元素的值会全部置成0。
例如:
a数组
中的值为
197097
a=238,则返回主程序后a数组中的值应为008
456000
voidfun(inta[][N])
{inti,j;
N;
for(j=0;
=i;
a[i][j]=0;
12.下列程序定义了N*N的二维数组,并在主函数中自动赋值。
请编写函数fun,该函
数的功能是:
求出数组周边元素的平均值并作为函数值返回给主函数中饿s
a数组中的值为
01279
a=19745
23831
45682
59141
则返回主程序后s的值应为3.375.
doublefun(intw[][N])
{inti,j,k=0;
doubles=0.0;
if(i==0||j==0||i==N-1||j==N-1)
{s+=w[i][j];
s/=k;
13.请编一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。
二维数组中的数已在主函数中赋予。
voidfun(inttt[M][N,intpp[N]])
{inti,j,min;
min=tt[0][j];
M;
if(tt[i][j]<
min)min=tt[i][j];
pp[j]=min;
14.请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。
二维数组中的值在主函数中赋予。
若二维数组中的值为
13579
29994
69998
13570
则函数值为61。
intfun(inta[M][N])
{inti,j,s=0;
if(i==0||j==0||i==M-1||j==N-1)
s+=a[i][j];
15.请编写一个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n>
=2)位的整数,则函数求出w的后n-1位数作为函数值返回。
w值为5923,则函数返回923;
若w值为923,则函数返回23。
unsignedfun(unsignedW)
{unsignedt,s=0,s1=1,p=0;
t=w;
while(t>
10)
if(t/10)p=t%10;
s+=p*s1;
s1=s1*10;
t=t/10;
16请编一个函数floatfun(doubleh),函数的功能是对变量h中的值保留2位小数,
并对第三位进行四舍五入(规定h中的值为正数)。
若h值为8.32433,则函数返回8.32;
若h值为8.32533,则函数返回8.33.
floatfun(floath)
{longt;
floats;
h=h*1000;
t=(h+5)/10;
s=(float)t/100.0;
17.请编一个函数fun(char*s),该函数的功能是把字符串中的内容逆置。
字符串原abcdefg,则调用该函数后,串的内容为:
gfedcba.
voidfun(floath)
{charch;
inti,m,n;
i=0;
m=n=strlen(s)-1;
while(i<
(n+1)/2)
ch=s[i];
s[i]=s[m];
s[m]=ch;
m--;
18.编写程序,实现矩阵(3行列)的转置(即行列互换)。
若输入下面的矩阵:
100200300100400700
400500600则输出程序:
200500800
700800900300600900
voidfun(intarray[3][3])
{inti,j,t;
3;
{t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
19.编写函数fun,该函数的功能是:
从字符串中删除指定的字符。
同一字母的大、小写按不同字符处理。
若程序执行时输入字符串为:
turbocandborlandc++从键盘上输入字符n,则输出后变为:
turbocadborladc++如果输入的字符在字符串中不存在,则字符串照原样输出。
voidfun(chars[],intc)
{inti=0;
char*p=s;
while(*p)
if(*p!
=c){s[i]=*p;
p++;
s[i]='
20.编写函数intfun(intlim,intaa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数的个数。
intfun(intlim,intaa[MAX])
{intk=0,i,j;
for(i=lim;
i>
1;
i--)
if(i%j==0)break;
elsecontinue;
if(j>
=i){aa[k]=i;
21.请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排序。
原来的字符串为CEAedca,则排序后输出为CedcEAa.
voidfun(char*s,intnum)
{chart;
inti,j;
num-2;
for(j=i+1;
num-1;
if(s[i]<
s[j])
{t=s[i];
s[i]=s[j];
s[j]=t;
}}
22.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点请编写函数fun,它的功能是:
找出学生的最高分,由函数返回。
doublefun(STREC*h)
{doublemax;
STREC*q=h;
max=h->
s;
if(q->
s>
max)max=q->
q=q->
next;
while(q!
=0);
returnmax;
23.请编写函数fun,该函数的功能是:
判断字符串是否为回文?
若是则函数返回1,主函数中输出YES,否则返回0,主函数中输出NO,回文是指顺读和倒读都一样的字符串。
字符串LEVEL是回文,而字符串123312就不是回文。
intfun(char*str)
{inti,n=0,fg=1;
char*p=str;
{n++;
n/2;
if(str[i]==str[n-1-i]);
else{fg=0;
returnfg;
24.请编写一个函数fun,它的功能是:
将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
若输入字符串“-1234”,则函数把它转换为整数值-1234
longfun(char*p)
{longs=0,t;
inti=0,j,n=strlen(p),k,s1;
if(p[0]=='
-'
)i++;
for(j=i;
=n-1;
t=p[j]-'
0'
s1=10;
for(k=j;
n-1;
t*=s1;
s+=t;
)return-s;
elsereturns;
25.请编写一个函数fun,它的功能是:
比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。
若两个字符串长度相同,则返回第一个字符串。
输入:
beijing<
CR>
shanghai<
函数将返回shanghai.
char*fun(char*s,char*t)
{char*p,*t1=t,*s1=s;
intn=0,m=0;
while(*s1){n++;
s1++;
while(*t1){m++;
t1++;
if(n>
=m)p=s;
elsep=t;
26.请编写一个函数fun,它的功能是:
根据以下公式求л的值(要求满足精度0.0005,即某项小于0.0005时停止迭代);
л/2=1+1/3+(1*2)/(3*5)++++(1+2+3....*n)/(3*5*7...(2n+1)
程序运行后,如果输入精度0.0005,则程序输出3.140578.
doublefun(doubleeps)
{doubles;
floatn,t,p1;
t=1;
p1=0;
n=1.0;
s=1.0;
while((fabs(s))>
=eps)
{p1+=s;
t=n/(2*n+1);
s*=t;
n++;
p1=p1*2;
returnp1;
27.请编写一个函数fun,它的功能是:
求出1到M之内(含M)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
若传送给m的值为50,则程序输出:
711142122283335424449
voidfun(intm,int*a,int*n)
*n=0;
if(i%7==0||i%11==0)
{a[j]=i;
28.请编写一个函数fun,它的功能是:
找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。
数组元素中的值已在主函数中赋予。
主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大所在元素的下标。
voidfun(inta[],intn,int*max,int*d)
*max=a[0];
*d=0;
n;
if(a[i]>
*max){*max=a[i];
*d=i;
29.请编写一个函数fun,它的功能是:
将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
若输入abc4EFg,则应输出aBc4EFg.
voidfun(char*ss)
{inti,n;
n=strlen(ss);
i+=2)
if(ss[i]>
ss[i]<
)
ss[i]=ss[i]-32;
30.请编写一个函数fun,它的功能是:
求出一个2*M整数二维数组中最大元素的值并将最大值返回调用函数。
fun(inta[][M])
{inti,j,max;
max=a[0][0];
2;
if(a[i][j]>
max)max=a[i][j];
31.请编写一个函数fun,它的功能是:
将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除:
串中剩余字符所形成的一个新串放在t所指的数组中。
若s所指字符串中的内容为ABCDEFG123456,其中字符A的ASCII码值为奇数,因此应当删除;
其中字符B的ASCII码值为偶数,但在数组中的下标为奇数;
因此也应当删除;
而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。
最后t所在的数组中的内容应是246。
voidfun(char*s,chart[])
{inti,j=0,n;
n=strlen(s);
if(i%2==0&
s[i]%2==0)
{t[j]=s[i];
j++;
t[j]='
32.请编写一个函数fun,它的功能是:
将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符外,其余的全都删除:
若s所指字符串中的内容为ABCDEFG12345,其中字符A的ASCII码值为奇数,但所在元素的下标为偶数,因此应当删除;
而字符1的ASCII码值为奇数,但在数组中的下标为奇数;
因此不应当删除;
其他依此类推。
最后t所在的数组中的内容应是135。
=0&
s[i]%2!
33.假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:
使字符串中尾部的*号不得多余n个;
若多余n个,则删除多余的*号;
若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。
字符串中的内容为****A*BC*DEF*G*******,若n的值为4,删除后,字符串中的内容应当是****A*BC*DEF*G****,若n的值为7,则字符串中的内容仍为****A*BC*DEF*G*******。
n的值在主函数中输入。
在编写函数时,不得使用C语言提供的字符串函数。
voidfun(char*s,intn)
{inti=0,k=0;
char*p,*t;
p=t=a;
while(*t)t++;
t--;
while(*t=='
*'
)
{k++;
t++;
if(k>
n)
{while(*p&
p<
t+n)
{a[i]=*p;
a[i]='
34.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:
把分数最高的学生数据放在h所指的数组中,注意:
分数最高的学生可能不只一个,函数返回分数最高的学生的人数。
intfun(STREC*a,STREC*t)
{inti,j=0,n=0,max;
max=a[0].s;
if(a[i].s>
max)max=a[i].s;
if(a[i].s==max)
{*(b+j)=a[i];
returnn;
35.请编写一个函数,用来删除字符串中的所有空格。
输入asdafaaz67,则输出为asdafaaz67.
voidfun(char*str)
{if(*p!
'
){str[i]=*p;
str[i]='
36假定输入的字符串中只包含字母和*号。
将字符串中的前导*号全部移到字符串的尾部。
字符串中的内容为*******A*BC*DEF*G****,移动后,字符串中的内容应当是A*BC*DEF*G***********,在编写函数时,不得使用C语言提供的字符串函数。
voidfun(char*a)
{inti=0,n=0;
char*p;
p=a;
while(*p=='