c语言补习作业+代码Word格式文档下载.docx
- 文档编号:21747806
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:28
- 大小:20.91KB
c语言补习作业+代码Word格式文档下载.docx
《c语言补习作业+代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c语言补习作业+代码Word格式文档下载.docx(28页珍藏版)》请在冰豆网上搜索。
=19;
i++)
a[i]=a[i-2]+a[i-1];
temp=temp+a[i];
printf("
%d\n"
temp);
return;
3、有一分数序列
2/1,3/2,5/3,8/5,13/8,21/13,......
floata[20];
//存放数列
intm=2,n=1,temp;
//m:
分子n:
分母
inti;
floattotal=0;
for(i=0;
a[i]=((float)m/(float)n);
//分子分母相加进行交换
temp=m;
m=m+n;
n=temp;
total=total+a[i];
printf("
m=%d\t\tn=%d\ta[%d]=%f\ttotal=%f\n"
m,n,i,a[i],total);
%f"
total);
4、写一个程序,将输入的字符串按反序输出,例如给定输入为abcde,输出结果为edcba。
命令行输入s.exeabcde
结果edcba
String.h>
charstr[50]="
0"
;
intlen,i;
请输入一个字符串:
"
);
scanf("
%s"
str);
len=strlen(str);
for(i=len;
i>
=0;
i--)
%c"
str[i]);
\n"
5、写一个程序,对10个任意数字进行由大到小的排序。
floatnum[10],temp;
intj,i;
**************************对十个任意数字进行排序*******************************"
请输入%d个数字:
i+1);
scanf("
%d"
&
num[i]);
/*for(l=0;
num[i][l]!
='
\0'
l++)
if("
(num[i][l])>
57||(num[i][l])<
48"
)
{
printf("
有非法字符,请重新输入!
--i;
*/
/*冒泡排序*/
for(j=8;
j>
=i;
j--)
if(num[j]<
num[j+1])
temp=num[j+1];
num[j+1]=num[j];
num[j]=temp;
/*显示数组*/
%3f\n"
num[i]);
6、输入一行字符串,找出其中大写字母、小写字母、数字以及其他字符的个数。
inti,l=0,m=0,n=0;
**********************分别计算大写字母、小写字母、数字个数**********************"
请输入一串字符串:
while('
\n'
!
=(i=getchar()))
if(('
A'
<
=i)&
&
('
Z'
>
=i))
l=l+1;
//计算大写字母个数
elseif((97<
(122>
m=m+1;
//计算小写字母个数
elseif((48<
(57>
n=n+1;
//计算数字个数
大写字母个数:
%d\n小写字母个数:
%d\n数字个数:
l,m,n);
7、接上题,将找出的结果按照大写字母、小写字母、数字以及其他字符的次序排列成一个新的字符串。
Ah0,BCg34.
ABChg034,.
charch[50];
**********************按照大写、小写、数字的顺序排列字符************************"
请输入字符串:
gets(ch);
len=strlen(ch);
=len;
if('
=ch[i]&
'
=ch[i])
printf("
ch[i]);
a'
z'
0'
9'
8、写一个函数实现将任意位数(<
=10)数字字符串(0-9)转化为相应的数字,如:
将“123”转化成123。
不能使用atoi函数
intstr2num(char*s);
longstr2num(char*s);
intmain()
{
chars[100];
***************************将数字字符串转换成数字*******************************"
请输入一个小于十位的字符串数字:
gets(s);
转换后的数字:
\n%ld\n"
str2num(s));
}
longstr2num(charx[])
longs=0;
x[i]!
i++)
s=s*10+x[i]-'
return(s);
9、写一个函数实现将任意一个正整数(long)转化为一个相应的字符串,如:
将123转化成“123”。
char*num2str(intnum,char*str);
char*num2str(longnum,char*);
longs;
charstr[10]="
char*p;
***************************将数字转换成数字字符串*******************************"
请输入一个小于十位的数字:
%ld"
s);
p=num2str(s,str);
*p!
*p++)
*p);
char*num2str(longs,char*x)
inti=0;
longq=s;
while(0!
=(q=(q/10)))
i++;
for(i;
x[i]=((s%10)+'
s=s/10;
returnx;
10、写一个求字符串的长度的函数。
(不准使用库函数strlen),在main函数中输入字符串,并输出其长度。
intmystrlen(char*s);
charstr[50];
intmystrlen(char*p);
intnumber;
请输入字符:
gets(str);
number=mystrlen(str);
字符长度为:
%d,实际长度为%d\n"
number,strlen(str));
intmystrlen(char*s)
char*p=s;
if(p==NULL)return0;
*p!
p++)
returni;
11、写一个函数,实现两个字符串拼接的功能。
(不准使用库函数strcat),在main函数中输入2个字符串。
helloworld====helloworld
char*mycat(char*s1,char*s2);
#include<
char*mycat(char*,char*);
intl;
chara1[30],a2[20];
**************************实现两个字符串拼接的功能******************************"
请输入第一个字符串:
gets(a1);
请输入第二个字符串:
gets(a2);
p=mycat(a1,a2);
for(l=0;
l++,*p++)
char*mycat(char*s1,char*s2)
inti=0,j;
while(s1[i])
for(j=i;
*s2!
s2++,j++)
s1[j]=*s2;
s1[j+1]='
returns1;
12、写一个函数实现strcpy/strncpy的功能。
12-1、写一个函数实现strcmp/strncmp的功能。
stdlib.h>
char*mystrcpy(char*a1,char*a2);
intmystrcmp(char*a1,char*a2);
chara1[20],a2[20];
intch;
*************************************************************\n"
请选择功能:
1:
strcpy将字符串二复制到字符串一中\n2:
strcmp比较两字符串大小\n"
其他任意键退出!
ch);
switch(ch)
case1:
scanf("
a1);
mystrcpy(a2,a1);
//调用复制
a2);
break;
case2:
ch=mystrcmp(a1,a2);
//调用比较
ch);
default:
exit(0);
break;
/*复制*/
char*mystrcpy(char*s2,char*s1)
while((*s2++=*s1++)!
='
returns2;
/*比较*/
intmystrcmp(char*a1,char*a2)
((*a1!
)||(*a2!
));
i++,*a1++,*a2++)
if((*a1)>
(*a2))
return1;
if((*a1)==(*a2))
if(*a1++='
return0;
else
*a1--;
continue;
if((*a1)<
return-1;
12-2、写一个函数实现strstr的功能。
string.h>
char*mystrstr(char*,char*);
intmystrlen(char*s);
//char*s="
abcdefg12h2i3jklmn132123abcdee"
charch[10],str[50];
char*p,*q;
请输要匹配的字符串:
q=strstr(str,ch);
p=mystrstr(str,ch);
系统库函数为:
%s\n自写为:
q,p);
char*mystrstr(char*str,char*ch)
/*str循环和ch[0]比较*/
for(j=0;
j<
mystrlen(str);
j++)
/*str有一位与ch[0]相同后,继续比较str和ch的下一位*/
while(ch[i]==str[j])
i++;
j++;
/*比较到ch的最后一位时,则匹配,返回指针*/
if(i==(mystrlen(ch)))
return(str+j-mystrlen(ch));
/*如str和ch中一部分相同,一部分不相同,str后退一位,继续与ch[0]做比较*/
if(0!
=i)
i=0;
j--;
*str=0;
returnstr;
/*计算字符串长度*/
//for(i=0;
p++)
while(*p++)
13、写一个函数实现将任意字符串按照ASC值从小到大顺序排列。
函数原型为:
char*sort(char*s);
intmystrlen(char*);
char*sort(char*);
chara1[30];
//chara2[30];
char*p;
sort(a1);
排序后=%s\n"
char*sort(char*a2)
inti,j;
chartemp;
intlen=mystrlen(a2);
len&
a2[i]!
for(j=len-1;
if(a2[j]<
a2[j-1])
temp=a2[j];
a2[j]=a2[j-1];
a2[j-1]=temp;
returna2;
14、写一个函数将任意给定的两个字符串取交集
char*jiaoji(char*s,char*s1,char*s2);
若s1:
abcddebcdf==》去重后的s1abcdef
s2:
bcdfgb
则返回的是s:
bcdf
15、写一个函数将任意给定的两个字符串取并集
char*bingji(char*s,char*s1,char*s2);
abcdde
bcdfg
则返回的是abcdefg
char*jiaoji(char*s,char*s1,char*s2);
char*bingji(char*s,char*s1,char*s2);
char*sort(char*a2);
chars1[50]="
s2[50]="
s[50]="
char*p1;
char*p2;
************************************求交集和并集*******************************"
请输入第一个字符串"
gets(s1);
请输入第二个字符串"
gets(s2);
交集有:
p1=jiaoji(s,s1,s2);
p1[i]!
{
p1[i]);
并集有:
p2=bingji(s,s1,s2);
p2[i]!
p2[i]);
/*求交*/
char*jiaoji(char*p,char*p1,char*p2)
inti,j,l=0;
char*q;
strlen(p1);
for(j=0;
strlen(p2);
if(p1[i]==p2[j])
p[l++]=p1[i];
q=sort(p);
//调用排序
//p=q;
returnp;
/*求并*/
char*bingji(char*p,char*p1,char*p2)
p[i]=p1[i];
p[i+j]=p2[j];
/*排序*/
intlen=strlen(a2);
/*清除相同项*/
strlen(a2);
if(a2[i]==a2[i+1])
for(j=i+1;
a2[j]=a2[j+1];
a2[strlen(a2)]='
i--;
16、定义学生信息如下:
structstu
intstuId;
charname[5];
intscore;
};
1)、手工输入增加5条信息,显示出来;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 补习 作业 代码