day11

练习

1> 提示并输入一个字符串,统计该字符串中大写字母、小写字母、数字字符、空格字符的个数并输出

#include<stdio.h> 
#include<ctype.h>  
#include<string.h>   

int main(int argc, const char *argv[])
{
    char ch[100];    // 用于存储用户输入的字符串
    gets(ch);        // 获取用户从键盘输入的字符串

    int count[4] = {0};    // 分别用于记录大写字母、小写字母、空格字符、数字字符的个数

    // 遍历输入的字符串ch,根据字符类型统计相应字符的个数
    for (int i = 0; i < strlen(ch); i++) {
        if (isupper(ch[i])) {    // 如果当前字符是大写字母
            count[0]++;          // 大写字母个数加1
        }
        if (islower(ch[i])) {    // 如果当前字符是小写字母
            count[1]++;          // 小写字母个数加1
        }
        if (isspace(ch[i])) {    // 如果当前字符是空格字符
            count[2]++;          // 空格字符个数加1
        }
        if (isdigit(ch[i])) {    // 如果当前字符是数字字符
            count[3]++;          // 数字字符个数加1
        }
    }

    // 输出统计
    printf("大写字母:%d\n小写字母:%d\n空格字符:%d\n数字:%d\n",
           count[0], count[1], count[2], count[3]);

    return 0;
}

在这里插入图片描述

2> 提示并输入一个字符串,将该字符串中的所有字母挑选到一个新数组中,将所有的数字字符挑选到另一个新数组中。并且将数字字符对应的数组降序排序。输出两个数组的结果

#include<stdio.h>    
#include<ctype.h>  
#include<string.h>   

int main(int argc, const char *argv[])
{
    char ch[255] = "";  // 用于存储输入的字符串,初始化为空字符串
    char number[255] = "";  // 用于存储从输入字符串中提取出来的数字字符,初始化为空字符串
    char alpha[255] = "";   // 用于存储从输入字符串中提取出来的字母字符,初始化为空字符串
    int count[2] = {0};    // 定义count[0]用于记录alpha数组中字符的个数,count[1]用于记录number数组中字符的个数,初始化为0

    gets(ch);  // 获取用户从键盘输入的字符串

    // 遍历输入的字符串ch,将其中的字母字符存入alpha数组,数字字符存入number数组
    for (int i = 0; i < strlen(ch); i++) {
        if (isalpha(ch[i])) {  // 如果当前字符是字母(通过isalpha函数判断)
            alpha[count[0]++] = ch[i];  // 将该字母存入alpha数组,并使count[0]自增,记录存入的字母个数
        }
        if (isdigit(ch[i])) {  // 如果当前字符是数字(通过isdigit函数判断)
            number[count[1]++] = ch[i];  // 将该数字存入number数组,并使count[1]自增,记录存入的数字个数
        }
    }

    int numlen = strlen(number);  // 获取number数组中当前存储的数字字符的长度,即数字字符的个数
    // 使用冒泡排序算法对number数组中的数字字符进行升序排序
    for (int i = 1; i < numlen; i++) {
        for (int j = 0; j < numlen - i; j++) {
            if (number[j] < number[j + 1]) {  // 如果当前数字字符大于下一个数字字符
                char temp = number[j];  // 交换这两个数字字符,进行排序调整
                number[j] = number[j + 1];
                number[j + 1] = temp;
            }
        }
    }

    printf("字符数组为:");
    puts(alpha);  // 输出存储字母字符的alpha数组
    printf("数字组为:");
    puts(number);  // 输出存储经过排序后的数字字符的number数组
    return 0;
}

在这里插入图片描述

3> 请用 C、JAVA、C# 任一种语言,对数组 {3, 2, 10, 1, 23, 15, 82} 进行由小到大的排序。(安在软件)

#include<stdio.h>	
#include<ctype.h>
#include<string.h>
int main(int argc, const char *argv[])
{
	int number[]={3,2,10,1,23,15,82};
	int len=sizeof(number)/sizeof(number[0]);
	//选择从小到大
	for(int i=0;i<len;i++){
		int flag=i; //默认每趟第一位最小
		for(int j=i;j<len;j++){
			//循环每一项与最小值判断
			//如果发现更小的记录下来
			if(number[flag]>number[j]){
				flag=j;
			}
		}
		//当前位置和最小的位置进行交换
		int temp=number[i];
		number[i]=number[flag];
		number[flag]=temp;
	}
	puts("从小到大");
	for(int i=0;i<len;i++){
		printf("%d ",number[i]);
	}
	printf("\n");
	//冒泡从大到小
	for(int i=1;i<len;i++){
		for(int j=0;j<len-i;j++){
			if(number[j]<=number[j+1]){
				int temp=number[j];
				number[j]=number[j+1];
				number[j+1]=temp;
			}
		}
	}
	puts("从大到小");
	for(int i=0;i<len;i++){
		printf("%d ",number[i]);
	}

}


在这里插入图片描述

4> 输入一个字符串,将其逆序后输出?(电工时代)

#include<stdio.h>	
#include<ctype.h>
#include<string.h>
int main(int argc, const char *argv[])
{
char ch[256];
gets(ch);
char p=0,q=0;
int len=strlen(ch);
for(int i=0;i<len/2;i++){
	int temp=ch[i];
	ch[i]=ch[len-i-1];
	ch[len-i-1]=temp;
}
puts(ch);
}

在这里插入图片描述

5> 一个长度为10的数组中重复数据,现要求相同数据只保留一份,其他的用0来代替,被替换的数据移到数组末尾。(数组内容自定) (富士安全,云尖软件开发)

#include<stdio.h>	
#include<ctype.h>
#include<string.h>
int main(int argc, const char *argv[])
{
char ch[10]={'a','0','q','a','1','2','1','0','q','d'};
char flags[10]={'0'};
int count=0;

//从起始位置开始比较
for(int i=0;i<10;i++){

	for(int j=i+1;j<10;j++){
		if(ch[i]==ch[j]&&j!=i){
			ch[j]='0';
		}
	}
}
for(int i=0;i<10;i++){
	if(ch[i]!='0'){
		flags[count++]=ch[i];
	}
}
for(int i=count;i<10;i++){
	flags[i]='0';
}

for(int i=0;i<10;i++){
	printf("%c ",flags[i]);
}
printf("\n");
}

在这里插入图片描述

6> 输出一个 int 型数组中最小和第二小的数。(鲁科安全)

#include<stdio.h>	
int main(int argc, const char *argv[])
{
	int a[]={2,1,2,3,4,5,6,9,8,7,12,32,12,51,15};
	int len=sizeof(a)/sizeof(a[0]);
	int min1,min2;
	for(int i=0;i<1;i++){
		int min1=a[i];
		for(int j=i;j<len;j++){
			if(min1>a[j]){
				min1=a[j];
			}
		}
		int temp=a[min1];
		a[min1]=a[i];
		a[i]=temp;
	}
	printf("第一小:%d 第二小%d\n",a[0],a[1]);
	
	
	return 0;
}

在这里插入图片描述

7> 将作业连接上的 第二节数组部分的题目完成:5、7、8、10、13、18、20、22、23、26、27、28、29、30
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值