输入字符串(长度小于20),找出字符串中最小字符的下标j(如果有多个最小字符则取最大下标),将每个字符循环右移j位后输出
#include#include int findmin(char* str); void movestr(char* str, int j); int main() { char str[20]; gets(str); int j = findmin(str); movestr(str, j); printf("%s", str); return 0; } int findmin(char* str) { int j = 0, i; int len = strlen(str); for (i = 1; i < len; i++) if (str[i] <= str[j]) j = i; return j; } void movestr(char* str, int j) { int len = strlen(str); char temp[20]; strcpy(temp, str + len - j); strcpy(temp + j, str); *(temp + len) = ''; //注意这里要在字符串末尾加',否则输出的字符串后与移到前面的字符串重复 strcpy(str, temp); }
如果不会用指针的话,移动函数也可这样写(感觉这样更简单hh)
void movestr(char* str, int j) { int len = strlen(str); char temp[20]; int i; for (i = 0; i < len; i++) { int k = (i + j) % len; temp[k] = str[i]; } for (i = 0; i < len; i++) str[i] = temp[i]; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)