作业
1、提示并输入一个字符串,统计该字符串中字母、数字、空格以及其他字符的个数
#include<stdio.h>
#include<string.h>
//提示并输入一个字符串,统计该字符串中字母、数字、空格以及其他字符的个数
int a,b,c,d=-1;
int main(int argc, char const *argv[])
{
char arr[100];
fgets(arr, sizeof(arr), stdin);
for(int i=0;arr[i]!='\0';i++)
{
if((arr[i]>='a'&&arr[i]<='z')||(arr[i]>='A'&&arr[i]<='Z'))
{
a++;
}else if (arr[i]>='0'&&arr[i]<='9')
{
b++;
}else if(arr[i]==' ')
{
c++;
}else
{
d++;
}
}
printf("字母%d个 数字%d个 空格%d个 其他字符%d个\n",a,b,c,d);
return 0;
}
2、提示并输入一个字符串,求出该字符串中所有数字的总和
#include "stdio.h"
#include "string.h"
//提示并输入一个字符串,求出该字符串中所有数字的总和
int main(int argc, char const *argv[])
{
int sum=0;
char arr[100];
printf("输入一个字符串,包含数字:\n");
fgets(arr, sizeof(arr), stdin);
for(int i=0;arr[i]!='\0';i++)
{
if(arr[i]>='0'&&arr[i]<='9')
{
sum+=arr[i]-'0';
}
}
printf("字符串中的数字和为:%d\n",sum);
return 0;
}
3、定义一个4*3的二维整形数组,完成对二维数组的输入、输出。并将该二维数组中每一行的最值放入到一个一维数组中,并对该一维数组进行升序排序后输出。
#include<stdio.h>
//定义一个4*3的二维整形数组,完成对二维数组的输入、输出。并将该二维数组中每一行的最值放入到一个一维数组中,并对该一维数组进行升序排序后输出。
#define M 4
#define N 3
int main(int argc, char const *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=0;
int brr[M]={0};
for (int i = 0; i < M; i++)
{
max=arr[i][0];
for (int j = 0; j < N; j++)
{
if(max<arr[i][j])
{
max=arr[i][j];
}
}
brr[i]=max;
printf("第%d行的最大值为%d\n",i+1,max);
}
for(int i=1; i<M; i++) //外层循环控制趟数
{
//内层循环控制元素,所以下标从0开始
//随着每趟排序结束,待排序序列就会少一个
//所以遍历条件为 j<M-i
for(int j=0; j<M-i; j++)
{
//该部分找到了数据元素,可以进行
//相邻数据元素的比较
if(brr[j] > brr[j+1])
{
//交换三部曲
int temp = brr[j];
brr[j] = brr[j+1];
brr[j+1] = temp;
}
}
}
printf("每行的最大值升序排序后的结果为:");
for(int i=0; i<M; i++)
{
printf("%d\t", brr[i]);
}
return 0;
}
4、提示并输入两个一维整形数组,求这两个数组的交集。
#include "stdio.h"
//提示并输入两个一维整形数组,求这两个数组的交集。
int main(int argc, char const *argv[])
{
int n=0,l=0;
int arr[100]={0};
int brr[100]={0};
printf("请输入数组长度:");
scanf("%d",&l);
printf("请输入数组1的元素: \n");
for (int i = 0; i < l; i++) {
scanf("%d", &arr[i]);
}
printf("请输入数组2的元素: \n");
for (int i = 0; i < l; i++) {
scanf("%d", &brr[i]);
}
int crr[10]={0};
for(int i=0;i<l;i++)
{
for(int j=0;j<l;j++)
{
if(arr[i]==brr[j])
{
int exist=0;
for (int k = 0; k < n; k++) {
if (crr[k] == arr[i]) {
exist = 1;
break;
}
}
if(!exist)
{
crr[n]=arr[i];
n++;
}
}
}
}
printf("这两个数组的交集是:");
for(int i=0;i<n;i++)
{
printf("%d ",crr[i]);
}
printf("\n");
return 0;
}
5、
完成注册和登录功能:使用两个一维字符数组存储账户和密码
注册:完成对账号和密码的输入
登录:将登录账号和密码跟注册的账号和密码进行匹配,如果相等,则登录成功,否则,登录失败
#include <stdio.h>
#include <string.h>
#define MAX 100
void registerAccount(char account[], char password[]) {
printf("请输入注册账号: ");
fgets(account, MAX, stdin);
printf("请输入注册密码: ");
fgets(password, MAX, stdin);
}
int login(const char account[], const char password[]) {
char loginAccount[MAX];
char loginPassword[MAX];
printf("请输入登录账号: ");
fgets(loginAccount, MAX, stdin);
printf("请输入登录密码: ");
fgets(loginPassword, MAX, stdin);
if (strcmp(account, loginAccount) == 0 && strcmp(password, loginPassword) == 0) {
return 1; // 登录成功
} else {
return 0; // 登录失败
}
}
int main() {
char account[MAX];
char password[MAX];
// 注册
printf("注册:\n");
registerAccount(account, password);
// 登录
printf("登录:\n");
if (login(account, password)) {
printf("登录成功!\n");
} else {
printf("登录失败。\n");
}
return 0;
}
https://s.shutu.cn/w/1qlq61,《数组概述思维导图》,打开链接即可查看思维导图。