c语言18个题.docx
- 文档编号:26329072
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:17
- 大小:17.42KB
c语言18个题.docx
《c语言18个题.docx》由会员分享,可在线阅读,更多相关《c语言18个题.docx(17页珍藏版)》请在冰豆网上搜索。
c语言18个题
1、编一个函数fun(chars[]),函数的功能是把字符串中的内容逆置。
例子如:
字符串中原有的内容为:
abcdefg,则调用该函数后,串中的内容为:
gfedcba
Fa1:
#include
voidfun(chara[])
{
inti,j;chart;
i=0;
while(a[i]!
='\0')i=i+1;
for(j=0;j<=i/2;j++)
{t=a[j];
a[j]=a[i-1-j];
a[i-1-j]=t;
}
}
intmain()
{
charb[80];
gets(b);
fun(b);
puts(b);
}
Fa2:
#include
#include
voidfun(chara[])
{
inti,j;chart;
i=strlen(a);
//while(a[i]!
='\0')i=i+1;
for(j=0;j<=i/2;j++)
{t=a[j];
a[j]=a[i-1-j];
a[i-1-j]=t;
}
}
intmain()
{
charb[80];
gets(b);
fun(b);
puts(b);
}
Fa3:
#include
voidfun(chara[])
{
inti,j,k;chart;
i=0;
while(a[i]!
='\0')i=i+1;
for(j=0,k=i-1;j {t=a[j]; a[j]=a[k]; a[k]=t; } } intmain() { charb[80]; gets(b); fun(b); puts(b); } 2、写程序,实现矩阵(3行3列)的转置(即行列互换)。 (类似的还有将哪个元素置0,将下或者上三角置0(或者置成其他的数据),还有求一行元素的和,一列元素的和还有周边元素的和,求所有数据的和,求平均值等) #include voidfun(chara[]) { inti,j,k;chart; i=0; while(a[i]! ='\0')i=i+1; for(j=0,k=i-1;j {t=a[j]; a[j]=a[k]; a[k]=t; } } intmain() { charb[80]; gets(b); fun(b); puts(b); } #include voidfun(inta[][3]) { inti,j,k; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i } intmain() { intb[3][3]={1,2,3,4,5,6,7,8,9},i,j; fun(b); for(i=0;i<3;i++) {for(j=0;j<3;j++) printf("%d",b[i][j]); printf("\n"); } } 3、要求程序的功能是: 把20个随机数存入一个数组,然后输出该数组中的最小值。 其中确定最小值的下标的操作在fun函数中实现,请给出该函数的定义。 #include intfun(inta[]) { intmin,k,i; min=a[0],k=0; for(i=1;i<5;i++) if(min>a[i]){min=a[i];k=i;} returnk; } intmain() { intb[5]={45,76,32,12,99},i; i=fun(b); printf("%d",b[i]); } 4、编写函数fun,函数的功能是: 从字符串中删除指定的字符。 同一字母的大、小写按不同字符处理。 若程序执行时,输入字符串为: turbocandBorlandc++(可以在定义数组时直接赋值) 从键盘上输入字符: n,则输出后变为: turbocadborladc++ 如果输入的字符串不存在,则字符串照原样输出。 Fa1: #include #include voidfun(chara[],charb[],charn) { inti,j; i=0;j=0; while(a[i]! ='\0') { if(a[i]! =n){b[j]=a[i];i++;j++;} elsei++; } b[j]='\0'; } intmain() { charc[80],d[80],t; gets(c); printf("inputthedeletechar"); t=getchar(); fun(c,d,t); puts(d); } Fa2: #include #include voidfun(chara[],charn) { inti,j; i=0;j=0; while(a[i]! ='\0') { if(a[i]! =n){a[j]=a[i];i++;j++;} elsei++; } a[j]='\0'; } intmain() { charc[80],t; gets(c); printf("inputthedeletechar"); t=getchar(); fun(c,t); puts(c); } 5、求一个数是不是素数(类似的有哥德巴赫猜想),会用函数来求 #include voidfun(intx) { inti,r; for(i=2;i*i<=x;i++) if(x%i==0)break; if(i*i>x)printf("%dissushu.\n",x); elseprintf("%disnotsushu.\n",x); } voidmain() { inth; scanf("%d",&h); fun(h); } 7、编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。 例如,假定输入的字符串为: asdasasdfgasdaszx67asdmklo,子字符串为: as ,则应输出6。 #include #include intfun(chara[],charb[]) { inti,l,s=0; l=strlen(a); for(i=0;i<=l-2;i++) if(a[i]==b[0]&&a[i+1]==b[1])s++; returns; } intmain() { charc[]="handlandfand",d[]="an"; printf("%d",fun(c,d)); } Fa2: #include #include intfun(chara[],charb[]) { inti,l,s=0; l=strlen(a); for(i=0;i<=l-2;i++) if(a[i]==b[0]&&a[i+1]==b[1])s++; returns; } intmain() { charc[80],d[3]; printf("inputthesourcestring"); gets(c); printf("inputthechildstring"); gets(d); printf("%d",fun(c,d)); } 8、请编写一个函数intfun(intx),它的功能是: 判断整数x是否是同构数。 若是同构数,函数返回1;否则返回0。 所谓“同构数”是指这样的数,它出现在它的平方数的右边。 例如: 输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数。 x的值由主函数从健盘读入,要求不大于100。 #include intfun(intx) { if(x*x%10==x||x*x%100==x) return1; return0; } intmain() { inta; scanf("%d",&a); printf("%d",fun(a)); } Fa2: #include intfun(intx) { inti=10; while(x*x>i) if(x*x%i==x)return1; elsei=i*10; return0; } intmain() { inta; scanf("%d",&a); printf("%d",fun(a)); } 9、请编一个函数fun(chars[]),函数的功能是把字符串中所有的字符前移一个位置, 串中的第一个字符移到最后。 例如: 原有的字符串为: Mn.123xyZ,则调用该函数后,串中的内容为: n.123xyZM。 #include #include voidfun(chara[]) { inti,l;chart; l=strlen(a); t=a[0]; for(i=1;i<=l-1;i++) a[i-1]=a[i]; a[l-1]=t; } intmain() { charb[80]; printf("inputthestring: "); gets(b); printf("outputthestring: \n"); fun(b); puts(b); } 10、请编写函数fun,函数的功能是: 将s所指字符串中、下标为奇数位置上的大写字母转换为字母序列中的下一个小写字母;若该位置上是小写字母,则不转换;若该位置上是大写字母Z,则仅转换成小写字母z。 (类似的还有请编一个函数fun,函数的功能是把字符串中所有的字母改写成该字母的下一个字母,最后一个字母z改写成字母a。 大写字母仍为大写字母,小写字母仍为小写字母,其他的字符不变。 例如: 原有的字符串为: Mn.123zyZ,则调用该函数后,串中的内容为: No.123yzA。 ) 12、请编写函数fun,函数的功能是: 在字符串中所有数字字符前加一个$字符。 例如,输入: A1B23CD45,则输出为: A$1B$2$3CD$4$5。 #include #include voidfun(chara[]) { charb[80]; inti,j=0; for(i=0;a[i]! ='\0',i++) { if(a[i]>'0'&&a[i]<'9') { b[j]='$';j++; b[j]=a[i];j++; } else{b[j]=a[i];j++;} } strcpy(a,b); } intmain() { charc[80]; gets(c); fun(c); puts(c); } Fa2: #include #include voidfun(chara[]) { charb[80]; inti,j=0; for(i=0;a[i]! ='\0';i++) { if(a[i]>'0'&&a[i]<'9') { b[j]='$'; b[j+1]=a[i];j=j+2; } else{b[j]=a[i];j++;} } b[j]='\0'; strcpy(a,b); } intmain() { charc[80]; gets(c); fun(c); puts(c); } 16、m个人的成绩存放在score数组中,请编写函数fun,它的功能是: 将低于平均分的 人数作为函数值返回。 例如,当score数组中的数据为: 10、20、30、40、50、60、70、80、90、时,函数返 回的人数应该是4,below中的数据应为: 10、20、30、40。 #include #defineM9 intfun(inta[],intm) { inti,s=0; floataver=0; for(i=0;i aver+=a[i]; aver=aver*1.0/m; for(i=0;i if(a[i] returns; } intmain() { intb[]={10,20,30,40,50,60,70,80,90}; printf("%d",fun(b,M)); } 17、数fun的功能是: 将两个两位数的整数a、b合并形成一个整数放在c中。 合并的方式是: 将a的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。 例如: 当a=45,b=12。 调用该函数后,c=4251 #include intfun(inta,intb) { return(1000*(a/10)+10*(a%10)+100*(b%10)+b/10); } intmain() { intx,y; scanf("%d%d",&x,&y); printf("%d",fun(x,y)); } 18、请编写一个函数voidfun(chara[],intk,intn),其功能是: 删除字符串中指定下标开始的n个字符。 其中,a指向字符串,k中存放指定的下标。 例如,字符串内容为: HellolloWorld! ,k中值为: 5,n中的值为: 3,则调用该函数的 结果为: HelloWorld! 。 分析: 本题要删除从下标k开始的后n个字符。 所以所用的算法是将下标为k+n及以后 的所有字符依次往前移n个字符,这样就把要删除的字符覆盖了(即删除了) #include #include voidfun(chara[],intk,intn) { inti,l; l=strlen(a); for(i=k+n;i a[i-n]=a[i]; a[i-n]='\0'; } intmain() { charb[80]; gets(b); fun(b,5,3); puts(b); } Fa2: #include voidfun(chara[],intk,intn) { inti,l; i=k+n; while(a[i]! ='\0') {a[i-n]=a[i]; i++; } a[i-n]='\0'; } intmain() { charb[80]; gets(b); fun(b,5,3); puts(b); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 18