1、提示并输入一个字符串,统计该字符串中字母、数字、空格以及其他字符的个数
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 100
int main(int argc, const char *argv[])
{
char str[MAX]; // 假设输入的字符串最大长度为100
printf("请输入一个字符串: ");
gets(str);
int letters = 0, digits = 0, spaces = 0, others = 0;
int len = strlen(str);
for(int i = 0; i < len; i++)
{
char ch = str[i];
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch >= 'Z'))
{
letters++;
}
else if (ch >= '0' && ch <= '9')
{
digits++;
}
else if (ch == ' ')
{
spaces++;
}
else
{
others++;
}
}
printf("字母: %d, 数字: %d, 空格: %d, 其他: %d\n", letters, digits, spaces, others);
return 0;
}
运行结果:
2、提示并输入一个字符串,求出该字符串中所有数字的总和
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 100
int main(int argc, const char *argv[])
{
char str[MAX]; // 假设输入的字符串最大长度为100
int sum = 0, temp;
printf("请输入一个字符串: ");
gets(str);
for(int i = 0; i < strlen(str); i++)
{
if(str[i] >= '0' && str[i] <= '9')
{ // 判断当前字符是否是数字
temp = str[i] - '0'; // 转换字符型数字为整型数字
sum += temp; // 累加到总和中
}
}
printf("字符串中所有数字的总和是: %d\n", sum); // 输出总和
return 0;
}
运行结果:
3、定义一个4*3的二维整形数组,完成对二维数组的输入、输出。并将该二维数组中每一行的最值放入到一个一维数组中,并对该一维数组进行升序排序后输出。
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define M 3
#define N 4
int main(int argc, const char *argv[])
{
int arr[M][N] = {0};
for(int i=0; i<M; i++)
{
for(int j=0; j<N; j++)
{
printf("请输入第%d行%d列的元素:", i+1, j+1);
scanf("%d", &arr[i][j]);
}
printf("\n");
}
printf("数组元素分别是:\n");
for(int i=0; i<M; i++)
{
for(int j=0; j<N; j++)
{
printf("%d\t", arr[i][j]);
}
printf("\n");
}
int max[M] = {0};
for(int i=0; i<M; i++)
{
max[i] = arr[i][0];
for(int j=0; j<N; j++)
{
if(max[i] < arr[i][j])
{
max[i] = arr[i][j];
}
}
printf("第%d行的最大值为:%d\n", i+1, max[i]);
}
for(int i=1;i<M;i++)
{
for(int j=0;j<M-i;j++)
{
if(max[j] > max[j+1])
{
int temp = max[j];
max[j] = max[j+1];
max[j+1] = temp;
}
}
}
printf("升序后的结果为:");
for(int i=0; i<M; i++)
{
printf("%d\t", max[i]);
}
putchar(10);
return 0;
}
运行结果:
4、提示并输入两个一维整形数组,求这两个数组的交集。
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define M 100
int main(int argc, const char *argv[])
{
int arr1[M], arr2[M], n1, n2, i, j;
printf("请输入第一个数组的元素个数: ");
scanf("%d", &n1);
printf("请输入第一个数组的元素: ");
for (i = 0; i < n1; i++)
{
scanf("%d", &arr1[i]);
}
printf("请输入第二个数组的元素个数: ");
scanf("%d", &n2);
printf("请输入第二个数组的元素: ");
for (i = 0; i < n2; i++)
{
scanf("%d", &arr2[i]);
}
printf("交集为: ");
for (i = 0; i < n1; i++)
{
for (j = 0; j < n2; j++)
{
if (arr1[i] == arr2[j])
{
printf("%d ", arr1[i]);
break;
}
}
}
putchar(10);
return 0;
}
运行结果:
5、完成注册和登录功能:使用两个一维字符数组存储账户和密码
注册:完成对账号和密码的输入
登录:将登录账号和密码跟注册的账号和密码进行匹配,如果相等,则登录成功,否则,登录失败
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_USERNAME_LEN 32
#define MAX_PASSWORD_LEN 32
#define MAX_USERS 10
typedef struct {
char username[MAX_USERNAME_LEN + 1];
char password[MAX_PASSWORD_LEN + 1];
} UserAccount;
UserAccount users[MAX_USERS];
int numUsers = 0;
void registerUser() {
if (numUsers >= MAX_USERS) {
printf("Maximum number of users reached.\n");
return;
}
char username[MAX_USERNAME_LEN + 1];
char password[MAX_PASSWORD_LEN + 1];
char passwordConfirm[MAX_PASSWORD_LEN + 1];
printf("Enter username: ");
scanf("%32s", username);
printf("Enter password: ");
scanf("%32s", password);
printf("Confirm password: ");
scanf("%32s", passwordConfirm);
if (strcmp(password, passwordConfirm) != 0) {
printf("Passwords do not match.\n");
return;
}
strcpy(users[numUsers].username, username);
// 使用bcrypt或其他安全算法存储密码
// 这里为了简化,我们不安全地直接存储密码
strcpy(users[numUsers].password, password);
numUsers++;
printf("Registration successful.\n");
}
int loginUser() {
char username[MAX_USERNAME_LEN + 1];
char password[MAX_PASSWORD_LEN + 1];
printf("Enter username: ");
scanf("%32s", username);
printf("Enter password: ");
scanf("%32s", password);
for (int i = 0; i < numUsers; i++) {
if (strcmp(users[i].username, username) == 0) {
// 使用bcrypt或其他安全算法比较密码
// 这里为了简化,我们不安全地直接比较密码
if (strcmp(users[i].password, password) == 0) {
printf("Login successful.\n");
return 1;
} else {
printf("Invalid password.\n");
return 0;
}
}
}
printf("User not found.\n");
return 0;
}
int main() {
int choice;
do {
printf("\n1. Register\n2. Login\n0. Exit\n");
scanf("%d", &choice);
switch (choice) {
case 1:
registerUser();
break;
case 2:
if (!loginUser()) {
// 登录失败,可以选择重新登录
}
break;
case 0:
// 退出程序
break;
default:
printf("Invalid choice.\n");
break;
}
} while (choice != 0);
return 0;
}
运行结果:
6、思维导图: