C基础day7

一、思维导图

二、课后练习

1、提示并输入一个字符串,统计该字符串中字母、数字、空格以及其他字符的个数

#include<myhead.h>
#define M 20
int main(int argc, const char *argv[])
{
	int sum_a=0,sum_b=0,sum_c=0,sum_d=0;
	char str[M];
	printf("please enter string:");
	gets(str);
//	getchar(); 	//吸收垃圾字符

	//循环判断每个字符
	for(int i=0;str[i]!='\0';i++)
	{
		//字母
		if((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z'))
			sum_a++;
		//数字
		else if(str[i]>='0'&&str[i]<='9')
			sum_b++;
		//空格
		else if(str[i] == ' ')
			sum_c++;
		//其他
		else
			sum_d++;
	}

	//输出累计数量
	printf("字符串中有:字母%d个,数字%d个,空格%d个,其他字符%d个\n",sum_a,sum_b,sum_c,sum_d);
	return 0;
}

2、提示并输入一个字符串,求出该字符串中所有数字的总和

#include<myhead.h>
#define M 20
int main(int argc, const char *argv[])
{
	int sum = 0;
	char str[M];
	printf("please enter string:");
	gets(str);

	//循环判断数字并求和
	for(int i=0;str[i]!='\0';i++)
	{
		if(str[i]>='0' && str[i]<='9')
			sum += str[i] -'0';
	}
	//输出数字总和
	printf("字符串中数字的总和为:%d\n",sum);
	return 0;
}

3、定义一个4*3的二维整形数组,完成对二维数组的输入、输出。并将该二维数组中每一行的最值放入到一个一维数组中,并对该一维数组进行升序排序后输出。

#include<myhead.h>
int main(int argc, const char *argv[])
{
	int arr[4][3]={0};
	//二维数组输入
	for(int i=0;i<4;i++)
	{
		for(int j=0;j<3;j++)
		{
			printf("请输入%d行%d列:",i+1,j+1);
			scanf("%d",&arr[i][j]);
		}
		putchar(10);
	}

	//二维数组输出
	for(int i=0;i<4;i++)
	{
		for(int j=0;j<3;j++)
		{
			printf("%d行%d列:%d\n",i+1,j+1,arr[i][j]);
		}
		putchar(10);
	}

	//定义一维数组存放二维数组每一行最大值
	int brr[4]={0};

	//循环二维数组比较选出每一行最大值
	for(int i=0;i<4;i++)
	{
		int max = arr[i][0];
		for(int j=1;j<3;j++)
		{
			if(max<arr[i][j])
				max = arr[i][j];
		}
		brr[i] = max; 	//将每行最大值存入数组brr
	}

	//对一维数组进行升序排序
	//冒泡排序
	for(int i=1;i<4;i++)
	{
		for(int j=0;j<4-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<4;i++)
	{
		printf("%d\t",brr[i]);
	}
	putchar(10);

	//选择排序
	int mini = 0;  //记录最值的下标
	for(int i=0;i<4;i++) 	//遍历整个数组找最值
	{
		mini = i;
		//遍历整个数组比较
		for(int j=i+1;j<4;j++)
		{
			if(brr[mini] > brr[j])
			{
				mini =j; //更新最值下标
			}
		}

		//判断找到的最值是否放在了首位,不是则交换
		if(mini !=i)
		{
			int temp = brr[i];
			brr[i] = brr[mini];
			brr[mini] = temp;
		}
	}


	//输出一位数组排序后结果
	printf("选择排序升序排序后的结果:");
	//循环输出
	for(int i=0;i<4;i++)
	{
		printf("%d\t",brr[i]);
	}
	putchar(10);
	return 0;
}

4、提示并输入两个一维整形数组,求这两个数组的交集。

#include<myhead.h>
#define MAX 100
int main(int argc, const char *argv[])
{
	//提示并输入两个一维数组
	int arr1[MAX],arr2[MAX];
	int size1=0,size2=0;

	printf("please enter arr1 size1:");
	scanf("%d",&size1);
	printf("please enter arrry1:\n");
	for(int i=0;i<size1;++i)
	{
		printf("请输入第个%d元素:",i+1);
		scanf("%d",&arr1[i]);
		getchar();
	}

	printf("please enter arr2 size2:\n");
	scanf("%d",&size2);
	printf("please enter arrry2:");
	for(int i=0;i<size2;++i)
	{
        printf("请输入第个%d元素:",i+1);
		scanf("%d",&arr2[i]);
		getchar();
	}

	//遍历两个数组比较得出交集
	//定义一位数组存储交集
	int brr[MAX];
	int k =0;
	for(int i=0;i<size1;i++)
	{
		for(int j=0;j<size2;j++)
		{
			if(arr1[i] == arr2[j])
			{
				brr[k] = arr1[i];
				k++;
			}
		}
	}

	//输出交集数组brr
	printf("两数组交集为:");
	for(int i=0;i<k;i++)
	{
		printf("%d\t",brr[i]);
	}
	return 0;
}

5、完成注册和登录功能:

#include<myhead.h>

void regis();
int login();

char old_user[32];
char old_passwd[32];
char new_user[32];
char new_passwd[32];

int main(int argc, char const *argv[])
{
    int a,res;
    while(1){ //循环执行
         printf("***********");
         printf("1.注册 2.登录");
         printf("***********\n");
         scanf("%d",&a);
        switch(a){
            case 1:
                  regis();
                  break;
            case 2:
                   while (1)
                   {
                       res = login();
                       if (res==1)
                       {
                           return 0;
                       }else
                       {
                           printf("请重新输入\n");
                       }
                   }  
                   break;
            default:
                  break;
        }
    }
    return 0;
}

void regis(){
    printf("请输入注册帐号\n");
    scanf("%s",old_user);
    printf("请输入注册密码\n");
    scanf("%s",old_passwd);
}
int login(){
    printf("请输入登录帐号\n");
    scanf("%s",new_user);
    printf("请输入登录密码\n");
    scanf("%s",new_passwd);
    if (strcmp(old_user,new_user) == 0 && strcmp(old_passwd,new_passwd) == 0)
    {
       printf("登录成功\n");
       return 1;
    }else{
        return -1;
    }
    
    
 }

相关推荐

  1. <span style='color:red;'>day</span><span style='color:red;'>7</span> <span style='color:red;'>c</span>++

    day7 c++

    2024-07-09 23:12:05      25 阅读
  2. <span style='color:red;'>c</span>++<span style='color:red;'>day</span><span style='color:red;'>7</span>

    c++day7

    2024-07-09 23:12:05      29 阅读
  3. <span style='color:red;'>C</span>++-<span style='color:red;'>day</span><span style='color:red;'>7</span>

    C++-day7

    2024-07-09 23:12:05      26 阅读
  4. <span style='color:red;'>C</span>++--<span style='color:red;'>DAY</span><span style='color:red;'>7</span>

    C++--DAY7

    2024-07-09 23:12:05      26 阅读
  5. day7C++

    2024-07-09 23:12:05       19 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 23:12:05       50 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 23:12:05       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 23:12:05       43 阅读
  4. Python语言-面向对象

    2024-07-09 23:12:05       54 阅读

热门阅读

  1. 深入解析Spring Boot的application.yml配置文件

    2024-07-09 23:12:05       22 阅读
  2. Docker技术简介

    2024-07-09 23:12:05       19 阅读
  3. Qt 的 qmake的语法简介与例子介绍

    2024-07-09 23:12:05       22 阅读
  4. C#用链表和数组分别实现堆栈

    2024-07-09 23:12:05       21 阅读
  5. Go bytes包

    2024-07-09 23:12:05       24 阅读
  6. C#面 :ASP.Net Core中有哪些异常处理的方案?

    2024-07-09 23:12:05       21 阅读
  7. Redis

    2024-07-09 23:12:05       22 阅读