这是我参加c语言比赛的机考试题,与大家分享下
2010-12-22 07:09
393 查看
第一题:
第二题:
第三题:
如果有什么问题的话就讨论下吧
#include <stdio.h> #include <string.h> #include <stdlib.h> #define N 30 /*********************************************** *函数名称: fun *创建时间: 2010.12.5 *作 者: huangliangming *描 述: 对一个字符串重新排列,字母排在前面,数字排在后面,并不改变原来字母之间以及数字之间的字符顺序。 *参 数: char * s,int *m *返 回 值: chLetter(数组chLetter[]的首元素地址) *局部变量: char chLetter ; * char chNumber ; * int i,j,k; ************************************************/ char * fun(char * s,int *m) //参数m是通过调试才想到的 { char chLetter ; //用来存放字母 char chNumber ; //用来存放数字 int i,j,k; i=0; //初始化 j=0; //j用来记录字母的个数 k=0; //k用来记录数字的个数 for (i=0; i<N; i++) { if (s[i] >= 'A' && s[i] <= 'Z' //将字母存入chLetter[] || s[i] >= 'a' && s[i] <= 'z') { chLetter[j]=s[i]; j++; } if (s[i] >= '0' && s[i] <='9') //将数字存入chNumber[] { chNumber[k]=s[i]; k++; } } chLetter[j]='\0'; chNumber[k]='\0'; *m=j+k; //用来返回最后输入和输出时字符的个数 strcat(chLetter,chNumber); return chLetter; } //主函数 void main() { char s ; int i; int m; char *p; p=NULL; printf("请输入字符串(30字符以内):\n"); scanf("%s",s); p=fun(s,&m); //刚开始没定义出这个m来现限制指针p所指数组的长度就出现了后面两个字符乱码 for (i=0; i<m; i++) //将返回的值复制给数组以待输出 { s[i]=p[i]; } printf("结果为:"); for (i=0; i<m; i++) //输出结果 { printf("%c",s[i]); } printf("\n"); }
第二题:
#include <stdio.h> #include <string.h> #include <stdlib.h> #define N 30 //s所指字符串的最大长度 #define T 2 //t1和t2所指字符串的长度 /*********************************************** *函数名称: fun *创建时间: 2010.12.5 *作 者: huangliangming *描 述: 将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换为t2所指字符串 *参 数: char * s,char * t1, char * t2,int *m *返 回 值: w(数组w[]的首元素地址) *局部变量: char w ; * char temp[T]; * char t1temp[T]; * int i,j,k,l; ************************************************/ char * fun(char * s,char * t1, char * t2,int *m) //m的作用和第一题一样,没m最后两个字符会乱码(想寻求其他方法) { char w ; //用来存放处理后的字符串 char temp[T]; //用来存放从s所指字符串中截取的子串 char t1temp[T]; //用来存放t1所指字符串 int i,j,k,l; //向t1temp中存入t1所指字符串 for (i=0; i<T;i++) { t1temp[i]=t1[i]; } t1temp[T]='\0'; //求m所指的值 for (i=0;i<N;i++) { if (s[i]=='\0') { *m=i; } } //寻找相同时的最后一个字符的下标 for (i=0; i<N; i++) { l=0; for (j=i; j<(i+T); j++,l++) //截取长度为T的子串存到temp[]中 { temp[l]=s[j]; } temp[T]='\0'; if (strcmp(t1temp,temp) == 0) { k=i; //k记录相同时的最后一个字符的下标 } } for (i=0; i<N; i++) //赋值给w[] { j=0; if (i>=k && i<(k+T)) //在找到的k点处开始换值 { w[i]=t2[j]; //换值 j++; } else { w[i]=s[i]; } } return w; } //主函数 void main() { char s ; char t1[T]; char t2[T]; int i; int m; char *p; p=NULL; printf("请输入字符串(20字符以内):"); scanf("%s",s); printf("请输入将要被替换的子字符串(仅限两个字符):"); scanf("%s",t1); printf("请输入将要用来替换的字字符串(仅限两个字符):"); scanf("%s",t2); p=fun(s,t1,t2,&m); for (i=0; i<m; i++) //将返回的值复制给数组以待输出 { s[i]=p[i]; } printf("结果为:"); for (i=0; i<m; i++) //输出结果 { printf("%c",s[i]); } printf("\n"); }
第三题:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define N 30 /*********************************************** *函数名称: fun *创建时间: 2010.12.6 *作 者: huangliangming *描 述: 将s所指的字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。 *参 数: char * s,int * m *返 回 值: return t,(t为指向数组的指针) *局部变量: char * t; * char temp ; * int i,j=0; ************************************************/ char * fun(char * s,int * m) { char * t; char temp ; //临时的数组,用来存放t所指的数组 int i,j=0; t=temp; for (i=0; i<N; i++) { if (s[i]%2==0 ) { temp[j]=s[i]; //如果是偶数,赋值给t所指的数组 j++; if (s[i]=='\0') //找到m的值先要找出输入了多少个字符 { break; } } } *m=j; //找到m的值即输出结果的长度 t[j]='\0'; return t; } //主函数 void main() { char s ; int i; int m; char *p; p=NULL; printf("请输入字符串(30字符以内):\n"); scanf("%s",s); p=fun(s,&m); //刚开始没定义出这个m来现限制指针p所指数组的长度就出现了后面两个字符乱码 for (i=0; i<m; i++) //将返回的值复制给数组以待输出 { s[i]=p[i]; } printf("结果为:"); for (i=0; i<m; i++) //输出结果 { printf("%c",s[i]); } printf("\n"); }
如果有什么问题的话就讨论下吧
相关文章推荐
- 分享一下大家关心的Oracle OCP认证考试流程
- c语言:2种方法:5位运动员参加跳水比赛,每位选手都说对一半,请确定比赛名次
- c语言中的比较函数大家了解吗?分享一些经验
- 有N个人顺序排开参加比赛,每个人可以看到自己左右两边比自己得分少的人的分数,最少的人可以得1W的奖金,并且奖金以1w递增,赛委会让大家看到得分比自己少的人得的钱比自己少,编写程序求赛委会至少准备多少钱
- 【C语言】【面试题】5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果问题
- 免费的C语言和数据结构教学视频(找了很久才找到的好教程,拿出来分享给大家)
- 【C语言】【面试题】5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果问题
- 大家帮下忙呀?我参加百度之星的公益比赛了? 功能还是很实用的呀
- 【C语言】【面试题】5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果问题
- 经过大二一个学期的c语言学习,我从中总结了一些c语言的优缺点心得~分享给大家。
- 有幸参加了2013年9月22号美国某大型软件公司在上海的笔试,特意和大家分享一下!
- 2010年3月4日参加由张应杭老师主讲的关于传统文化的培训-一个有益的PPT分享给大家
- C语言字符串 转载来和大家分享
- 和大家分享C语言中几个知识点
- c语言:2种方法:5位运动员参加跳水比赛,每位选手都说对一半,请确定比赛名次
- 我的核心技术都是从哪里学到的?如何提高成长的?分享给大家。
- 太高兴了。。找到了《电机及拖动基础》第四版,下册的答案了。。给大家分享一下。。
- 给大家分享几个经典的《IOS视频教程》,记得赞一下哦!
- 一个分析很透彻的strust2流程分享给大家
- 阿里聚安全受邀参加SFDC安全大会,分享互联网业务面临问题和安全创新实践