#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
int n;
char str[20];
scanf("%d", &n);
for (int i=1; i<=n; i++) {
scanf("%s", str);
int len = strlen(str);
if (len < 6 || len > 15) {
printf("第%d行错误:字符串长度不符合要求\n", i);
continue;
}
int flag = 1;
for (int j=0; j<len; j++) {
if (!isdigit(str[j]) && !isalpha(str[j])) {
printf("第%d行错误:字符串包含非法字符\n", i);
flag = 0;
break;
}
}
if (flag) {
printf("第%d行正确\n", i);
}
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:1.将N对C取模所得余数入栈
2.N更新为N与C的商
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
int n;
printf("请输入需要校验的密码数量n:");
scanf("%d", &n);
getchar();
while (n--) {
char password[20];
printf("请输入一个长度不小于6位且不超过15位的密码:");
fgets(password, 20, stdin);//使用fgets获取用户输入
int len = strlen(password) - 1;//fgets会将回车符读取进来,需要减去
if (len < 6 || len > 15) {//长度不符合要求
printf("密码必须由数字或英文字母组成,长度不少于6位且不超过15位!\n");
} else {
int flag = 1;
for (int i = 0; i < len; i++) {//检查是否只包含数字或者英文字母
if (!isalnum(password[i])) {//不是数字或者英文字母
flag = 0;
break;
}
}
if (flag) {//符合要求
printf("密码校验通过!\n");
} else {//不符合要求
printf("密码必须由数字或英文字母组成,长度不少于6位且不超过15位!\n");
}
}
}
return 0;
}
#include <stdio.h>
int main() {
int n;
printf("请输入数组长度:");
scanf("%d", &n);
int a[n];
for (int i = 0; i < n; i++) {
printf("请输入第%d个数字:", i+1);
scanf("%d", &a[i]);
}
int num;
printf("请输入你要查找的数字:");
scanf("%d", &num);
int index = -1;//初始化下标为-1
for (int i = 0; i < n; i++) {
if (a[i] == num) {//找到了数字
index = i;
break;
}
}
if (index != -1) {//找到了数字
printf("数字%d的下标为%d\n", num, index);
} else {//没找到数字
printf("找不到数字%d\n", num);
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
void sort(int **arr, int n) {
int temp;
for (int i = 0; i < n; i++) {
int min = i;
for (int j = i + 1; j < n; j++) {//查找从i开始后面的最小值
if (**(arr + j) < **(arr + min)) {
min = j;
}
}
if (min != i) {//交换arr[i]和arr[min]的值
temp = **(arr + i);
**(arr + i) = **(arr + min);
**(arr + min) = temp;
}
}
printf("排序后的数组为:\n");
for (int i = 0; i < n; i++) {
printf("%d ", **(arr + i));
}
printf("\n");
}
int main() {
int n;
printf("请输入数组元素个数:");
scanf("%d", &n);
int a[n];
for (int i = 0; i < n; i++) {
printf("请输入第%d个数字:", i + 1);
scanf("%d", &a[i]);
}
int *p[n];
for (int i = 0; i < n; i++) {
p[i] = &a[i];
}
sort(p, n);
return 0;
}
#include <stdio.h>
int main() {
int n;
printf("请输入总个数:");
scanf("%d", &n);
int num[n], initval[n];
printf("请开始输入数字:\n");
for (int i = 0; i < n; i++) {
scanf("%d", &initval[i]);
}
int odd[n/2+1];//奇数
int even[n/2+1];//偶数
int odd_len = 0, even_len = 0;//奇数和偶数个数的下标
for (int i = 0; i < n; i++) {//划分奇偶数组
if (initval[i] % 2 == 0) {//偶数
even[even_len++] = initval[i];
} else {//奇数
odd[odd_len++] = initval[i];
}
}
// 奇数部分排序
for (int i = 1; i < odd_len; i++) {
int temp = odd[i];
int j = i - 1;
while (j >= 0 && odd[j] > temp) {
odd[j + 1] = odd[j];
j--;
}
odd[j + 1] = temp;
}
// 偶数部分排序
for (int i = 1; i < even_len; i++) {
int temp = even[i];
int j = i - 1;
while (j >= 0 && even[j] > temp) {
even[j + 1] = even[j];
j--;
}
even[j + 1] = temp;
}
int index = 0;
for (int i = 0; i < odd_len; i++) {//先输出排序后的奇数部分
num[index++] = odd[i];
}
for (int i = even_len - 1; i >= 0; i--) {//再输出排序后的偶数部分
num[index++] = even[i];
}
for (int i = 0; i < n; i++) {//输出排序后的数组
printf("%d ", num[i]);
}
return 0;
}