1.在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列
#include
#define N 10
void fun(int *a)
{
int number,i;
printf("Please enter a integer to insert in the array:");
scanf("%d", &number);
for (i = N - 2; i >= 0; i--)
{
if (number <= *(a + i))
{
*(a + i + 1) = *(a + i);
}
else
{
*(a + i + 1) = number;
break;
}
}
if (number < *a)
{
*a = number;
}
printf("The result array:");
for (i = 0; i < N; i++)
{
printf("%5d", *(a + i));
}
printf("\n");
}
void main()
{
int number;
int i;
int a[N] = { 11,22,33,44,55,66,77,88,99 };
printf("The original array:");
for (i = 0; i < N-1; i++)
{
printf("%5d", *(a+i));
}
printf("\n");
fun(a);
}
2.函数comb(char *a,char *b)将字符串a逆序后,再在尾部接上字符串b
#include
#include
void comb(char *a, char *b)
{
int i, j;
int len = strlen(a);
char c;
for (i = 0; i < len / 2; i++)
{
c = *(a + i);
*(a + i) = *(a + len - i - 1);
*(a + len - i - 1) = c;
}
*(a + len++) = ' ';
j = 0;
while (*(a + len + j) = *(b + j++));
}
void main()
{
char a[100] = "margorP C";
char b[] = "Design";
comb(a, b);
printf("%s\n", a);
}
3.输入一维数组的10个元素,最大的与a[9]交换,最小的与a[0]交换,输出数组的10个元素
#include
#include
#include
void input(int number[])
{
int i;
for (i = 0; i < 10; i++)
{
scanf("%d", &number[i]);
}
}
void max_min(int array[])
{
int *max, *min;
int *p, *arr_end;
arr_end = array + 10;
max = min = array;
for (p = array + 1; p < arr_end; p++) //for循环结束后p指向array[10]的地址
{
if(*p>*max)
{
max = p;
}
else if(*p<*min)
{
min = p;
}
}
*p = array[0]; //借助array[10]进行交换
array[0] = *min;
*min = *p;
*p = array[9];
array[9] = *max;
*max = *p;
}
void output(int array[])
{
int *p;
for (p = array; p < array + 10; p++)
{
printf("%d ",*p);
}
}
void main()
{
int number[11];
input(number);
printf("\n");
max_min(number);
output(number);
}
4.输出两个整数中较大的数,两个整数由键盘输入
#include
#include
void main()
{
int *p1, *p2;
p1 = (int*)malloc(sizeof(int));
p2 = (int*)malloc(sizeof(int));
scanf("%d%d", p1, p2);
if (*p2 > *p1)
{
*p1 = *p2;
}
free(p2);
printf("%d\n", *p1);
free(p1);
}
5.删除字符串中的数字字符
#include
#include
void fun(char *s)
{
char *p = s;
while (*p)
{
if ((*p >= '0') && (*p <= '9'))
{
p++;
}
else
{
*(s++) = *(p++);
}
}
*s = '\0';
}
void main()
{
char item[100];
printf("Enter a string:");
gets_s(item);
fun(item);
printf("%s\n", item);
}
6.将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中
#include
#include
void fun(char *s,char *t)
{
int i, d;
d = strlen(s);
for (int i = 0; i < d; i++)
{
t[i] = s[i];
}
for (int i = 0; i < d; i++)
{
t[i + d] = s[d - 1 - i];
}
t[2 * d] = '\0';
}
void main()
{
char s[100], t[100];
printf("Please enter string:");
scanf("%s", s);
fun(s, t);
printf("\nThe result is:%s\n", t);
}
7.从键盘接收一个字符串,然后按字符顺序从小到大进行排序,并删除重复的字符
#include
#include
void main()
{
char str[100], *p, *q, *r, c;
printf("输入字符串:");
gets_s(str);
for (p = str; *p; p++)
{
for (q = r = p; *q; q++)
{
if (*r > *q)
{
r = q;
}
}
if (r != p)
{
c = *r;
*r = *p;
*p = c;
}
}
for (p = str; *p;p++)
{
for (q = p+1 ; *p == *q;)
{
strcpy(p, q);
}
}
printf("结果字符串:%s\n", str);
}
8.统计字符串中单词的个数
#include
int wordCount(char *s)
{
int num = 0,i,word=0;
while (*s != '\0')
{
if (*s == ' ')
{
word = 0;
}
else if (word == 0)
{
word = 1;
num++;
}
s++;
}
return(num);
}
void main()
{
char str[101];
int wordnum;
printf("输入不超过100字符的字符串:");
gets_s(str);
wordnum = wordCount(str);
printf("有%d个单词\n", wordnum);
}
9.将一个3行5列的二维数组的第二行元素输出
#include
void main()
{
int a[3][5],i,j;
printf("please input:\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 5; j++)
{
scanf("%d", *(a + i) + j);
}
}
printf("The second line is:");
for (j = 0; j < 5; j++)
{
printf("%5d", *(*(a + 1) + j));
}
printf("\n");
}