- 浏览: 70622 次
- 性别:
- 来自: 大连
最近访客 更多访客>>
最新评论
-
newlangwen1:
你好 我想请教个问题,我运行了一下上面的程序,结果是输入什么就 ...
C程序 对文本行进行排序
文章列表
4-1 编写函数strrindex(s,t),它返回字符串t在s中最右边出现的位置。如果s中不包含t,则返回-1
#include<stdio.h>
#define MAXLINE 100
int getline(char line[], int max);
int strrindex(char s[], char t[]);
char pattern[] = "abc";//要查找的模式
int main()
{
char line[MAXLINE];
int found = 0;
while(getline(lin ...
P57
#include <stdio.h>
#define MAXLINE 1000 /* maximum input line length */
int getline(char line[], int max);
int strindex(char source[], char searchfor[]);
char pattern[] = "ould"; /* pattern to search for */
/* find all lines matching pattern */
int main()
{
char li ...
/* trim: remove trailing blanks, tabs, newlines */
int trim(char s[])
{
int n;
for (n = strlen(s)-1; n >= 0; n--)
if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n')
break;
s[n+1] = '\0';
return n;
}
atoi() 函数的逆过程 itoa()
- 博客分类:
- C语言
/* itoa: convert n to characters in s */
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0) /* record sign */
n = -n; /* make n positive */
i = 0;
do { /* generate digits in reverse order */
s[i++] = n % 10 + '0'; /* get ...
3-3 编写函数expand(s1,s2),将字符串s1中类似与a-z一类的速记符号在字符串s2中扩展成等价的完整列表abc...xyz。该函数可以处理大小写字母和数字,并可以处理a-b-c、a-z0-9与-a-z等类似的情况
#include<stdio.h>
#include<string.h>
void expand(char* result,char* s2);
int main()
{
char *s[] = { "a-d-", "a-b-c","z-a-", &quo ...
希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,
希尔排序基本思想:
先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录 ...
3-2 编写一个函数escape(s,t),将字符串s复制到字符串t中,并在复制过程中将换行符、制表符等不可见的字符分别转换成\n,\t等相应的可见的转义字符。再编写一个相反过程的函数。
#include <stdio.h>
void escape(char s[],char t[]);
void unescape(char s[],char t[]);
int main()
{
char s1[100]="ni hao ma wohenhao xiexie";
char t[100];
char s2[100]=" ...
3-1 折半查找,2个版本
int binsearch(int x, int v[], int n) {
int low, mid, high;
low = 0;
high = n - 1;
while ( low <= high ) {
mid = (low+high) / 2;
if ( x < v[mid] )
high = mid - 1;
else if ( x > v[mid] )
...
2-9 bitcount()函数:统计x中值为1的二进制位数
#include <stdio.h>
int bitcount(unsigned x){
int b;
for(b=0;x!=0;x>>=1)
if(x&1)
b++;
return b;
}
int main ()
{
unsigned x=10;//将x声明为无符号整型数是为了保证将x右移时,无论该程序在什么机器上运行,左边空出的位数都用0(而不是符号位)填补。
int count;
count=bitcount(x);
p ...
2-8 编写一个函数rightsort(x,n), 该函数返回将x循环右移n位后得到的值。
#include<stdio.h>
unsigned rightrot(unsigned x,unsigned n);
int main(){
unsigned x=5;
unsigned n=1;
unsigned result;
result = rightrot(x,n);
printf("%d\n",result);
return 0;
}
unsigned rightrot(unsigned x,unsig ...
2-7 编写一个函数invert(x,p,n),该函数返回对x执行下列操作后的结果值,将x中从第p位开始的n个(二进制)位求反(即,1变成0,0变成1),x的其余各位保持不变。
#include<stdio.h>
unsigned invert(unsigned x,int p,int n);
int main(){
unsigned x=5;
int p=3;
int n=2;
unsigned result;
result = invert(x,p,n);
printf("%d\n",result);
...
2-6 编写一个函数setbits(x,p,n,y),该函数返回对x执行下列操作后的结果值:将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变
#include<stdio.h>
int setbits(int x,int p,int n,int y);
int main(){
int x=10;
int y=7;
int yResult;
int p=3;
int n=2;
yResult=setbits(x,p,n,y);
printf("%d\n",yResult);
retur ...
2-5 编写函数any(s1,s2),将字符串s2中的任意字符在字符串s2中第一次出现的位置作为结果返回,如果s1中有不包含在s2中的字符,返回-1
#include<stdio.h>
#define max 100
void rlString(char* s1,char* s2);
int main(){
char left[100]="shizhendema";
char right[100]="bushizhende";
char* result="";
// printf(" ...
2-4编写函数squeeze(s1,s2),将字符串s1中与字符串s2中字符匹配的字符都删掉
#include<stdio.h>
#define max 100
void squeeze(char* leftStrig,char* rightString);
int main(){
char left[100]="shizhendema";
char right[100]="bushizhende";
char* result="";
// printf("%s\n", ...
2-3 编写函数htoi(s),把由十六进制数字组成的字符串(包含可选的前缀0x或0X)转换为与之等价的整型值。字符串中允许包含的数字包括:0~9,a~f,A~Z
#include <stdio.h>
#include <math.h>
#define MAXLENGTH 10
int getline(char s[], int max);
int htoi(char s[]);
int main(){
int len;
char s[MAXLENGTH];
int i;
for(i=0;i<MAXLENGTH;i+ ...