二级培训C讲义wang8上机Word下载.docx
- 文档编号:6648613
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:11
- 大小:17.93KB
二级培训C讲义wang8上机Word下载.docx
《二级培训C讲义wang8上机Word下载.docx》由会员分享,可在线阅读,更多相关《二级培训C讲义wang8上机Word下载.docx(11页珍藏版)》请在冰点文库上搜索。
2106"
Zhang"
"
5129"
Chang"
4512"
An"
6868"
}
intk;
sort(stu,0,4);
printf("
TheSortedArray:
\n"
);
for(k=0;
5;
name:
%s,num:
%s\n"
stu[k]->
name,stu[k]->
num);
二、函数find的功能是:
在给定的5×
5矩阵中,找出所有元素a[i][j],使其第i行上所有元素之和等于第j列上所有元素之和。
voidfind(inta[5][])
{inti,j,row,col,sum1,sum2;
for(i=0;
i<
i++)
for(j=0;
{sum1=sum2=0;
for(col=0;
col<
col++)sum1+=a[i][col];
for(row=0;
row<
row++)sum2+=a[j][row];
if(sum1=sum2)
a[%d][%d]:
%d\n"
i,j,a[i][j]);
}
{inti,j,a[5][5]={{2,8,1,9,4},{5,7,1,3,0},{7,1,7,5,2},{3,2,2,1,5,},{0,2,1,6,8}};
{for(j=0;
%4d"
a[i][j]);
find(a,5);
10.2编程题
一、编写函数voidcount(chara[],charw[][10],intn,intb[])。
统计w指向的数组中的n个单词在a指向的字符串中各自出现的次数(将非字母字符看作单词分割符),拧将统计结果依次保存在b指向的数组中。
main()
{chara[]="
thisisabook,isanapple."
;
charw[6][10]={"
this"
that"
is"
a"
an"
book"
};
intb[6];
count(a,w,6,b);
6;
%s:
%d,"
w[i],b[i]);
voidcount(chara[],charw[][10],intn,intb[])
{charword[10];
inti=0;
n;
j++)b[j]=0;
while(s[i])
{getword(a,word,&
i);
if(strcmp(word,w[j])==0)break;
if(j<
n)b[j]++;
intischar(charc)
{if(s[i]>
='
a'
&
&
s[i]<
z'
||s[i]>
A'
Z'
)
return
(1);
return(0);
}
voidgetword(chara[],charword[],int*p_i);
{inti;
for(i=*p_i;
s[i];
if(ischar(s[i])==1)break;
if(s[i]){word[0]='
\0'
return;
ischar(s[j])==0;
j++)word[j]=s[i]
*p_i=i;
二、编写函数char*d_to_h(charb[],charc[])。
将b指向的数组中一个整数的十进制字符串转换成该整数的十六进制字符串,并保存在c指向的数组中。
(十六进制字符串自左向右依次保存在c[0]开始的数组元素中)。
函数返回c指向的数组的首地址。
{charb[]="
26"
c[6];
d_to_h(b,c);
puts(c);
char*d_to_h(charb[],charc[])
{inttmp;
tmp=d_to_int(b);
int_to_h(tmp,c);
return(c);
intd_to_int(charb[])
{inti,num=0;
b[i];
i++)num=num*10+b[i]-'
0'
return(num);
voidint_to_h(intx,charc[])
{inti=0;
for(;
x;
{tmp=x%16;
if(tmp>
=0&
tmp<
=9)c[i]=tmp+'
elsec[i]=tmp-10+'
x=x/16;
c[i]='
reverse(c);
voidreverse(charc[])
{intlen,i,j;
chartmp;
for(len=0;
c[len];
len++);
for(i=0,j=len-1;
j;
i++,j--)
{tmp=c[i];
c[i]=c[j];
c[j]=tmp;
};
三、编写函数intstat(inta[],intn,intc[][2])。
a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。
函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位的整数,从而生成有n/2个元素组成的整数数列;
统计该数列中不同整数各自出现的次数,并将统计结果保存到c指向的二维数组中。
函数返回不同整数的个数。
{inta[10]={0,1,1,2,4,0,0,1,2,3},c[5][2];
intn,i;
n=stat(a,10,c);
%d:
c[i][0],c[i][1]);
intstat(inta[],intn,intc[][2])
/*生成有n/2个元素组成的整数数列*/
for(j=0,i=0;
n/2;
i++,j=j+2)
{c[i][0]=a[j]*10+a[j-1];
c[i][1]=1;
/*统计该数列中不同整数各自出现的次数*/
n=n/2;
for(j=i+1;
if(c[j][0]==c[i][0])
{c[i][1]++;
delete(c,n,i);
n--;
voiddelete(intc[][2],intn,intk)
for(i=n-1;
i>
k;
i--)
{c[i-1][0]=c[i][0];
c[i-1][1]=c[i][1];
四、编写函数voidFindWord(chara[])。
将a指向的字符串中最长的单词(空格作为单词分割符)移动到该字符串的最后。
youarestudenttoo."
FindWord(a);
puts(a);
voidFindWord(chara[])
{charword[50];
intlen;
charlongword[50];
intlonglen=0,startpos;
inti;
a[i];
{while(a[i]=='
'
/*过滤空格*/
/*发现单词*/
a[i]&
a[i]!
)word[len++]=a[i++];
word[len]='
/*是否是最长单词*/
if(len>
longlen)
{longlen=len;
statrpos=i-longlen;
strcpy(longword,word);
/*将a[statrpos]…a[statrpos+longlen-1]删除*/
for(i=statrpos+longlen;
i++)a[i-longlen]=a[i];
/*将longword[]中的字符串添加在a[]中字符串末尾*/
longword[j];
j++)a[i++]=longword[j];
a[i]='
五、将未在字符串s中出现而在字符串t中出现的字符形成一个新的字符串放在u中,u中字符按原字符串中字符顺序排列,不去掉重复字符。
例如,当s="
ABCDE"
,t="
BDFGG"
时,u中的字符串为"
FGG"
。
main()
{chars[]="
t[]="
u[100];
fun(s,t,u);
puts(u);
voidfun(char*s,char*t,char*u)
{inti,j,sl,tl;
sl=strlen(s);
tl=strlen(t);
t[i];
i++)
s[j];
if(t[i]==s[j])break;
if(s[j]=='
){*u=t[i];
u++;
*u='
六、编写函数fun(int*a,intn,int*odd,int*even),功能是:
求出数组a[]中所有奇数之和以及所有偶数之和。
并利用指针odd返回奇数之和,利用指针even返回偶数之和。
例如:
a[]的值依次为:
1,9,2,3,11,6;
则利用指针odd返回奇数之和24;
利用指针even返回偶数之和8。
main()
{inta[N]={1,9,2,3,11,6},i,n=6,odd,even;
fun(a,n,&
odd,&
even);
odd=%d,even=%d\n"
odd,even);
fun(int*a,intn,int*odd,int*even)
*odd=0;
*even=0;
if(a[i]%2)*odd+=a[i];
else*even+=a[i];
七、编写函数longfun(longn)。
函数功能:
(1)判断参数n的最高位是否为奇数,若是奇数,则将所有值为奇数的数字位提取出来,否则,将所有值为偶数的数字位提取出来;
(2)用所提取的这些数字组成一个降序数,函数返回这个降序数。
例如由n=3214586生成的降序数为531;
由n=87954632生成的降序数为8642。
2.编写main函数。
声明一个longint型数组并用测试数据初始化该数组,用测试数据调用函数fun,将每一测试数据及由其生成的降序数保存到结果文件myf2.out中。
最后将考生本人的准考证号字符串也保存到结果文件myf2.out中。
测试数据:
3214586,87954632
运行结果:
3214586,531
87954632,8642
longfun(longn);
voidsort(inta[],intn);
{longinta[2]={3214586,87954632};
longintx[2];
FILE*fp;
x[0]=fun(a[0]);
x[1]=fun(a[1]);
fp=fopen("
f:
\\myf2.out"
w"
fprintf(fp,"
%ld,%ld\n"
a[0],x[0]);
a[1],x[1]);
1111111\n"
fclose(fp);
longfun(longn)
{inta[100],count=0;
intb[100],i,j;
longs;
while(n>
0)
{a[count++]=n%10;
n=n/10;
/*3214586:
a[0]...a[count-1]:
6854123*/
j=0;
if(a[count-1]%2)
for(i=count-1;
=0;
{if(a[i]%2)b[j++]=a[i];
else
{if(a[i]%2==0)b[j++]=a[i];
/*有效数字:
b[0]...b[j-1]*/
sort(b,j);
/*有效数字已经降序:
s=0;
s=s*10+b[i];
return(s);
/*降序:
大...小*/
voidsort(inta[],intn)
{inti,j,tmp;
n-1;
if(a[j]<
a[j+1])
{tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 培训 讲义 wang8 上机