#include <stdio.h>#include <string.h>void reverseWords(char *s);int main() { char s[] = "like bejing."; printf("Original string: %s\n", s); reverseWords(s); printf("Reversed string: %s\n", s); return 0;}void reverseWords(char *s) { int len = strlen(s); int start = 0, end = 0; for (int i = 0; i <= len; i++) { if (s[i] == ' ' || s[i] == '\0') { end = i - 1; while (start < end) { char temp = s[start]; s[start] = s[end]; s[end] = temp; start++; end--; } start = i + 1; } }}
时间: 2024-01-06 17:06:10 浏览: 134
这是一个 C 语言程序,用于翻转一个字符串中的单词。具体来说,程序将字符串中的每个单词都翻转过来,但是单词之间的顺序不变。例如,"like bejing." 变成 "ekil .gnijeb"。
程序的主函数中定义了一个字符串 s,并将其传递给 reverseWords 函数进行处理。reverseWords 函数接收一个字符指针作为参数,表示要翻转的字符串。该函数使用一个循环遍历整个字符串,检查每个字符是否是空格或者字符串结束符。如果是,就将前面的单词翻转过来。具体来说,程序使用两个指针 start 和 end 定位当前单词的起始位置和结束位置,然后使用一个循环将这个单词中的字符翻转过来。最后,程序更新 start 指针的位置,以便继续处理下一个单词。
相关问题
#include <stdio.h> #include <string.h> void fun(char *s,int num) { } void main() { char s[10]; gets(s); fun(s,7); printf("%s", s); }
这是一道需要填空的题目,题目思路是将字符串 `s` 中的前 `num` 个字符反转。可以使用两个指针分别指向字符串的首位和末位,依次交换两个指针所指向的字符,直到两个指针相遇为止。具体实现可以这样写:
```c
#include <stdio.h>
#include <string.h>
void fun(char *s, int num) {
int i = 0, j = num - 1;
while (i < j) {
char temp = s[i];
s[i] = s[j];
s[j] = temp;
i++;
j--;
}
}
void main() {
char s[10];
gets(s);
fun(s, 7);
printf("%s", s);
}
```
其中,`i` 和 `j` 分别表示指向字符串的首位和末位的指针,`temp` 是一个临时变量,用于交换两个指针所指向的字符。在循环中,每次将指针向中间移动一位,并交换两个指针所指向的字符,直到两个指针相遇为止。最终输出交换后的字符串即可。
#include<stdio.h> #include<string.h> typedef struct date { int year; int month; int day; }DATE; typedef struct student { int num; char name[20]; char sex; DATE birthday; float score; }STUDENT; void input(STUDENT *s); void output(STUDENT s); /********** Begin **********/ /********** End **********/
完整代码如下所示:
```c
#include <stdio.h>
#include <string.h>
typedef struct date {
int year;
int month;
int day;
} DATE;
typedef struct student {
int num;
char name[20];
char sex;
DATE birthday;
float score;
} STUDENT;
void input(STUDENT *s);
void output(STUDENT s);
void sort(STUDENT s[], int n);
int main() {
STUDENT s[5];
int i;
for (i = 0; i < 5; i++) {
printf("请输入第%d个学生的信息:\n", i + 1);
input(&s[i]);
}
sort(s, 5);
printf("\n排序后的学生信息为:\n");
for (i = 0; i < 5; i++) {
output(s[i]);
}
return 0;
}
void input(STUDENT *s) {
printf("学号:");
scanf("%d", &s -> num);
printf("姓名:");
scanf("%s", s -> name);
printf("性别:");
scanf(" %c", &s -> sex);
printf("生日:");
scanf("%d/%d/%d", &s -> birthday.year, &s -> birthday.month, &s -> birthday.day);
printf("成绩:");
scanf("%f", &s -> score);
}
void output(STUDENT s) {
printf("学号:%d,姓名:%s,性别:%c,生日:%d/%d/%d,成绩:%.2f\n",
s.num, s.name, s.sex, s.birthday.year, s.birthday.month, s.birthday.day, s.score);
}
void sort(STUDENT s[], int n) {
int i, j;
STUDENT temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (s[i].score < s[j].score) {
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
}
}
```
这段代码中,定义了一个main函数,用于程序的入口,创建了一个学生信息数组s。在main函数中,使用for循环对每个学生的信息进行输入。输入完成后,调用sort函数对学生信息数组s进行排序。最后,使用for循环对排序后的学生信息进行输出。
阅读全文