c语言上机Word下载.docx
《c语言上机Word下载.docx》由会员分享,可在线阅读,更多相关《c语言上机Word下载.docx(113页珍藏版)》请在冰豆网上搜索。
s=s+s1;
n++;
}
return2*s;
}
2◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新数,作为函数值返回。
例如,输入一个整数27638496,函数返回值为64862。
【答案】【1】0【2】10*x【3】n/10
将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。
高位仍在高位,低位仍在低位。
例如,当s中的数为87653142时,t中的数为7531。
【答案】【1】*t=0;
【2】if(d%2!
=0)
实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串的后面。
例如,分别输入下面两个字符串:
FirstString—SecondString程序输出:
FirstString--SecondString
voidfun(charp1[],charp2[])
inti,j;
for(i=0;
p1[i]!
=′\0′;
i++);
for(j=0;
p2[j]!
j++)
p1[i++]=p2[j];
p1[i]=′\0′;
3◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
【填空】下列给定程序中函数fun的功能是:
求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指的变量中。
ss所指字符串数组中共有M个字符串,且串长<
N。
【答案】【1】M 【2】<
【3】k
将tt所指字符串中的小写字母全部改为对应的大写字母,其它字符不变。
例如,若输入"
Ab,cD"
,则输出"
AB,CD"
。
【答案】
【1】if((tt[i]>
=′a′)&
&
(tt[i]<
=′z′)【2】tt[i]-=32;
将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回。
例如,若输入17,则应输出:
4 6 8 9 10 12 14 15 16。
voidfun(intm,int*k,intxx[])
inti,j,n=0;
for(i=4;
i<
m;
{ for(j=2;
j<
i;
if(i%j==0)break;
if(j<
i)xx[n++]=i;
*k=n;
4◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的次序。
例如,s所指的字符串为def35adh3kjsdf7,执行后结果为defadhajsdf3537。
【答案】【1】j++【2】s[i]=t1[i]
【3】j
用冒泡法对6个字符串进行升序排列。
【1】for(j=i+1;
j<
6;
j++)
【2】*(pstr+i)=*(pstr+j);
求ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串123412132,输入字符为1,则输出3。
intfun(char*ss,charc)
inti=0;
for(;
*ss!
ss++)
if(*ss==c)
i++;
returni;
5◆◆◆◆◆◆◆◆◆◆◆◆◆◆
【填空】下列给定程序中已建立一个带头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。
函数fun的功能是:
把形参x的值放入一个新结点并插入链表中,使插入后各结点数据域中的数据仍保持递增有序。
【答案】【1】x【2】p【3】s
计算正整数num各位上的数字之积。
例如,若输入252,则输出应该是20。
若输入202,则输出应该是0。
【答案】【1】longk=1;
【2】num/=10;
计算n门课程的平均分,结果作为函数值返回。
例如:
若有5门课程的成绩是:
90.5,72,80,61.5,55,则函数的值为:
71.80。
floatfun(float*a,intn)
floatav=0.0;
inti;
n;
av=av+a[i];
return(av/n);
6◆◆◆◆◆◆◆◆◆◆◆◆◆◆
把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:
字符串的长度大于等于2)。
例如,形参s所指字符串为abcdefgh,执行结果为ahcbedgf。
【答案】【1】1【1】s[k]【1】c
【改错】下列给定程序中fun函数的功能是:
求表达式s=aa…aa-…-aaa-aa-a(此处aa…aa表示n个a,a和n的值在1至9之间)例如,a=3,n=6,则以上表达式为:
s=333333-33333-3333-333-33-3其值是296298。
a和n是fun函数的形参,表达式的值作为函数值传回main函数。
【1】longs=0,t=0;
【1】t=t/10;
【编程】编写函数voidfun(char*tt,intpp[]),统计在tt所指的字符串中'
a'
到'
z'
26个小写字母各自出现的次数,并依次放在pp所指的数组中。
例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:
33322110000000000000000000
voidfun(char*tt,intpp[])
26;
pp[i]=0;
if(*tt>
=′a′&
*tt<
=′z′)
pp[*tt-′a′]++;
7◆◆◆◆◆◆◆◆◆◆◆◆◆◆
【填空】下列给定程序中已建立了一个带头结点的单向链表,在main函数中将多次调用fun函数,每调用一次,输出链表尾部结点中的数据,并释放该结点,使链表缩短。
【1】next【2】t->
data 【3】t
将字符串中的字符逆序输出,但不改变字符串中的内容。
例如,若字符串为abcd,则应输出:
dcba。
【答案】【1】voidfun(char*a)
【2】printf("
%c"
,*a);
比较字符串的长度,(不得使用C语言提供的求字符串长度的函数),函数返回较长的字符串。
若两个字符长度相同,则返回第一个字符串。
例如,输入beijing<
CR>
shanghai<
(<
为回车键),函数将返回shanghai。
char*fun(char*s,char*t)
s[i]!
=′\0′;
t[j]!
j++);
if(i>
=j)
returns;
else
returnt;
8◆◆◆◆◆◆◆◆◆◆◆◆◆◆
【填空】下列给定程序的功能是:
调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回1,失败时返回0。
在复制的过程中,把复制的内容输出到屏幕。
主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。
【答案】【1】"
r"
【2】fs 【3】ft
将长整型数中各位上为偶数的数依次取出,构成一个新数放在t中。
例如,当s中的数为87653142时,t中的数:
8642。
【答案】【1】if(d%2==0)
【2】s/=10;
将两个两位数的正整数a、b合并成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,b=12时,调用该函数后,c=5142。
voidfun(inta,intb,long*c)
*c=b%10+(a/10)*10+(b/10)*100+(a%10)*1000;
9◆◆◆◆◆◆◆◆◆◆◆◆◆◆
有N×
N矩阵,根据给定的m(m<
=N)值,将每行元素中的值均向右移动m个位置,左位置为0。
例如,N=3,m=2,有下列矩阵
1 2 3
4 5 6
7 8 9
程序执行结果为
0 0 1
0 0 4
0 0 7
【答案】【1】i++ 【2】m 【3】m
计算并输出high以内最大的10个素数的和。
high的值由主函数传给fun函数。
例如,若high的值为100,则函数的值为732。
【1】while((high>
=2)&
(n<
10))
【2】yes=0;
break;
利用下面的简单迭代方法求方程cos(x)-x=0的一个实根。
xn+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.739086。
floatfun()
floatx1=0.0,x0;
do
x0=x1;
x1=cos(x0);
while(fabs(x0-x1)>
=1e-6);
returnx1;
10◆◆◆◆◆◆◆◆◆◆◆◆◆◆
从键盘输入若干行字符串(每行不超过80个字符),写入文件myfile4.txt中,用-1作字符串输入结束的标志,然后将文件的内容显示在屏幕上。
文件的读写分