编写程序实现以下功能,在字符串str中找出最大的字符并放在第一个位置上, 并将该字符前的原字符往后顺序移动;
如str字符串内容为”chyab”,程序执行完毕,str中的内容将成为”ychab”;1.c
/**
* @file 1.c
* @brief 编写程序实现以下功能,在字符串str中找出最大的字符并放在第一个位置上,
* 并将该字符前的原字符往后顺序移动;
* 如str字符串内容为”chyab”,程序执行完毕,str中的内容将成为”ychab”;
* @author GaoJinlong
* @version 0.1
* @date 2011-09-09
*/
#include <stdio.h>
char *find_max(char *str)
{
char *max = str;
while(*str)
{
if(*max < *str)
max = str;
str++;
}
return max;
}
char *parse(char *str)
{
char *max_p = find_max(str);
char max = *max_p;
char *tmp;
for(tmp = max_p; tmp >= str; tmp--)
*tmp = *(tmp - 1);
*str = max;
return str;
}
int main(int argc, const char *argv[])
{
char buf[100] = "chyab";
printf("%s\n", parse(buf));
return 0;
}
设有一个数列,包含10个整数,要求此数列已经按照升序排好。现在编写程序, 要求程序实现能把从指定位置开始的n个数按逆序重新排列并输出新的完整数列;2.c
/**
* @file 2.c
* @brief 设有一个数列,包含10个整数,要求此数列已经按照升序排好。现在编写程序,
* 要求程序实现能把从指定位置开始的n个数按逆序重新排列并输出新的完整数列
* @author GuoPengyu
* @version 0.1
* @date 2011-09-09
*/
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define N 10
void init(int num[], int len)
{
int i;
srand(time(NULL));
for (i = 0; i < len; i++)
{
num[i] = rand() % 100;
}
}
void show(int num[], int len)
{
int i;
for (i = 0; i < len; i++)
{
printf("%d ", num[i]);
}
printf("\n");
}
void sort(int num[], int len)
{
int i, j, pos, tmp;
for (i = 0; i < len - 1; i++)
{
pos = i;
for (j = i + 1; j < len; j++)
{
if (num[pos] > num[j])
pos = j;
}
if (pos != i)
{
tmp = num[pos];
num[pos] = num[i];
num[i] = tmp;
}
}
}
void reverse(int num[], int start, int len)
{
int i, j, end = start + len - 1, tmp;
for (i = start, j = end; i <= j; i++, j--)
{
tmp = num[i];
num[i] = num[j];
num[j] = tmp;
}
}
int main(int argc, const char *argv[])
{
int arr[N];
init(arr, N);
show(arr, N);
sort(arr, N);
show(arr, N);
reverse(arr, 1, 4);
show(arr, N);
return 0;
}
编写程序计算一个英文句子中最长单词的长度(字母个数)max,假设该英文句子中只含有字母和空格,空格之间连续的字母称为单词。3.c
/**
* @file 3.c
* @brief 编写程序计算一个英文句子中最长单词的长度(字母个数)max,
* 假设该英文句子中只含有字母和空格,空格之间连续的字母称为单词
* @author GaoJinlong
* @version 0.1
* @date 2011-09-09
*/
#include <stdio.h>
int calc(char *str)
{
int max = 0, tmp = 0;
while(*str)
{
if(*str == ' ')
{
if(tmp > max)
max = tmp;
tmp = 0;
}
else
tmp++;
str++;
}
if(tmp > max)
max = tmp;
return max;
}
int main(int argc, const char *argv[])
{
printf("%d\n", calc("hello everyone"));
return 0;
}