1、提示并输入一个字符串,统计该字符串中字母、数字、空格以及其他字符的个数
2、提示并输入一个字符串,求出该字符串中所有数字的总和
3、定义一个4*3的二维整形数组,完成对二维数组的输入、输出。并将该二维数组中每一行的最值放入到一个一维数组中,并对该一维数组进行升序排序后输出。
4、提示并输入两个一维整形数组,求这两个数组的交集。
5、完成注册和登录功能:使用两个一维字符数组存储账户和密码
注册:完成对账号和密码的输入
登录:将登录账号和密码跟注册的账号和密码进行匹配,如果相等,则登录成功,否则,登录失败
第一题:
#include <stdio.h>
#include <ctype.h>
int main() {
char str[1000];
int letters = 0, digits = 0, spaces = 0, others = 0;
printf("请输入一个字符串: ");
fgets(str, sizeof(str), stdin);
for (int i = 0; str[i] != '\0'; i++) {
if (d(str[i])) {
letters++;
} else if (d(str[i])) {s
digits++;
} else if (d(str[i])) {
spaces++;
} else {
others++;
}
}
printf("字母个数: %d\n", letters);
printf("数字个数: %d\n", digits);
printf("空格个数: %d\n", spaces);
printf("其他字符个数: %d\n", others);
return 0;
}
第二题:
#include <stdio.h>
#include <ctype.h> // 用于isdigit函数
int main() {
char str[100]; // 假设输入的字符串长度不超过100
int sum = 0;
// 提示用户输入字符串
printf("请输入一个字符串: ");
fgets(str, sizeof(str), stdin);
// 遍历字符串中的每个字符
for(int i = 0; str[i] != '\0'; i++) {
// 如果当前字符是数字
if(isdigit(str[i])) {
// 将该字符转换为整数并加到sum中
sum += str[i] - '0';
}
}
// 输出数字的总和
printf("字符串中所有数字的总和是: %d\n", sum);
return 0;
}
第三
#include <stdio.h>
void sortArray(int arr[], int size) {
int i, j, temp;
for (i = 0; i < size - 1; i++) {
for (j = 0; j < size - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int array[4][3], maxValues[4], row, col, maxInRow;
// 输入二维数组
printf("请输入一个4x3的二维数组:\n");
for (row = 0; row < 4; row++) {
for (col = 0; col < 3; col++) {
scanf("%d", &array[row][col]);
}
}
// 输出二维数组
printf("您输入的数组是:\n");
for (row = 0; row < 4; row++) {
for (col = 0; col < 3; col++) {
printf("%d ", array[row][col]);
}
printf("\n");
}
// 找出每行的最大值并存储在maxValues数组中
for (row = 0; row < 4; row++) {
maxInRow = array[row][0];
for (col = 1; col < 3; col++) {
if (array[row][col] > maxInRow) {
maxInRow = array[row][col];
}
}
maxValues[row] = maxInRow;
}
// 对maxValues数组进行排序
sortArray(maxValues, 4);
// 输出排序后的maxValues数组
printf("每行最大值的升序排序结果为:\n");
for (row = 0; row < 4; row++) {
printf("%d ", maxValues[row]);
}
printf("\n");
return 0;
}
第四题
#include <stdio.h>
void inputArray(int arr[], int size);
void findIntersection(int arr1[], int size1, int arr2[], int size2, int intersection[], int *intersectionSize);
void outputArray(int arr[], int size);
int main() {
int size1, size2;
// 输入第一个数组的大小并分配内存
printf("请输入第一个数组的大小: ");
scanf("%d", &size1);
int arr1[size1];
// 输入第二个数组的大小并分配内存
printf("请输入第二个数组的大小: ");
scanf("%d", &size2);
int arr2[size2];
// 输入第一个数组
printf("请输入第一个数组的元素:\n");
inputArray(arr1, size1);
// 输入第二个数组
printf("请输入第二个数组的元素:\n");
inputArray(arr2, size2);
// 定义用于存储交集的数组
int intersection[size1 < size2 ? size1 : size2];
int intersectionSize = 0;
// 找到交集
findIntersection(arr1, size1, arr2, size2, intersection, &intersectionSize);
// 输出交集数组
printf("两个数组的交集是:\n");
outputArray(intersection, intersectionSize);
return 0;
}
void inputArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("请输入arr[%d]: ", i);
scanf("%d", &arr[i]);
}
}
void findIntersection(int arr1[], int size1, int arr2[], int size2, int intersection[], int *intersectionSize) {
for (int i = 0; i < size1; i++) {
for (int j = 0; j < size2; j++) {
if (arr1[i] == arr2[j]) {
// 检查是否已经在交集数组中
int alreadyInIntersection = 0;
for (int k = 0; k < *intersectionSize; k++) {
if (intersection[k] == arr1[i]) {
alreadyInIntersection = 1;
break;
}
}
if (!alreadyInIntersection) {
intersection[*intersectionSize] = arr1[i];
(*intersectionSize)++;
}
}
}
}
}
void outputArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
第五题
#include <stdio.h>
#include <string.h>
#define MAX_USERS 10
#define MAX_NAME_LEN 20
#define MAX_PASS_LEN 20
char usernames[MAX_USERS][MAX_NAME_LEN];
char passwords[MAX_USERS][MAX_PASS_LEN];
int userCount = 0;
void registerUser() {
if (userCount >= MAX_USERS) {
printf("用户已满,无法注册。\n");
return;
}
char username[MAX_NAME_LEN];
char password[MAX_PASS_LEN];
printf("请输入用户名: ");
scanf("%s", username);
printf("请输入密码: ");
scanf("%s", password);
// 检查用户名是否已存在
for (int i = 0; i < userCount; i++) {
if (strcmp(usernames[i], username) == 0) {
printf("用户名已存在,请选择其他用户名。\n");
return;
}
}
// 注册新用户
strcpy(usernames[userCount], username);
strcpy(passwords[userCount], password);
userCount++;
printf("注册成功!\n");
}
int loginUser() {
char username[MAX_NAME_LEN];
char password[MAX_PASS_LEN];
printf("请输入用户名: ");
scanf("%s", username);
printf("请输入密码: ");
scanf("%s", password);
// 验证用户名和密码
for (int i = 0; i < userCount; i++) {
if (strcmp(usernames[i], username) == 0 && strcmp(passwords[i], password) == 0) {
printf("登录成功!\n");
return 1;
}
}
printf("用户名或密码错误。\n");
return 0;
}
int main() {
int choice;
while (1) {
printf("\n请选择操作:\n");
printf("1. 注册\n");
printf("2. 登录\n");
printf("3. 退出\n");
printf("请输入选项(1/2/3): ");
scanf("%d", &choice);
switch (choice) {
case 1:
registerUser();
break;
case 2:
if (!loginUser()) {
// 登录失败后可选操作
}
break;
case 3:
return 0;
default:
printf("无效的选择,请重新输入。\n");
}
}
return 0;
}