我是一位新人!这几道题我不会!希望得到大家的帮助!谢谢!
1、把 s 字符串中的所有字符左移一个位置,串中的第一个字符移到最后。2、输入一个字符串,当输入字符为“g”时,将其删除!
3、编写一个函数,完成将3个数按从大到小的顺序输出。
程序代码:#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// f1()解答第一题、f2()解答第二题、f3()解答第三题
void f1(); void f2(); void f3();
// sortDesc是指逆序排序数组、swap交换两个int指针对应的值
void sortDesc(int *, int); void swap(int *, int *);
int main(void) {
printf("f1():\n");
f1();
printf("f2():\n");
f2();
printf("f3():\n");
f3();
return 0;
}
void f1() {
char str[] = "Already", ch;
int size = strlen(str), i = 0, j = 1;
ch = str[i]; // 先保存下第一个字符
while(i < size - 1) { // 从第二个字符开始到倒数第二个字符,索引-1
str[i] = str[j];
i++; j++;
}
str[i] = ch; // 第一个字符被放在字符串尾
printf("%s\n", str);
}
void f2() {
char str[101]; // 最大字符数为100
int i = 0, j, k, size = sizeof(str) - 1;
fgets(str, 101, stdin); // 从标准输入流中获得一个字符串,字符串大小最大为100
while(i < size) { // 遍历整个字符串
if(str[i] == 'g') { // 如果某个字符是'g'
j = i; // 从这个字符开始以后的所有字符索引-1
k = i + 1;
while(j < size) {
str[j] = str[k];
j++; k++;
}
i--; // 回退
}
i++;
}
printf("%s", str);
}
void f3() {
// number数组中存放着3个随机数
int number[] = { rand() % 32767, rand() % 32767, rand() % 32767 }, i = 0;
sortDesc(number, 3); // 排序之后就是由从大到小的顺序排列的
while(i < 3) { // 输出这三个数
printf("%d ", number[i]);
i++;
}
printf("\n");
}
// 选译排序法(Descending)
void sortDesc(int * array, int size) {
int i, j, k;
for(i = 0; i < size - 1; i++) {
k = i;
for(j = i + 1; j < size; j++) {
if(array[j] > array[k]) {
k = j;
}
}
if(k != i) {
swap(array + k, array + i);
}
}
}
// ...
void swap(int * p1, int * p2) {
*p1 ^= *p2;
*p2 ^= *p1;
*p1 ^= *p2;
}
