我是一位新人!这几道题我不会!希望得到大家的帮助!谢谢!
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; }