C语言—题目2

本文介绍了四个C语言编程题目,包括删除整数序列中的特定数字、计算一组成绩的最高分与最低分之差、字母大小写转换及字母判断,以及寻找五位数中的变种水仙花数(LilyNumber)。每个问题都提供了详细的代码实现,展示了基本的算法和逻辑处理技巧。
摘要由CSDN通过智能技术生成

1.删除整数序列中对应的数字

问题描述:有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。输出为一行,删除指定数字之后的序列。

int main()
{
	int n = 0;
	scanf("%d", &n);
	int arr[50];
	int i = 0;
	for (i = 0;i < n;i++)
	{
		scanf("%d", &arr[i]);
	}
	int del = 0;
	scanf("%d", &del);
	int j = 0;
	for (i = 0;i < n;i++)
	{
		if (arr[i] != del)
		{
			arr[j++] = arr[i];
		}

	}
	for (i = 0;i < j;i++)
	{
		printf("%d", arr[i]);
	}

	return 0;
}

2.输入n个成绩,并输出n个成绩中最高分数和最低分数的差

int main()
{
	int n = 0;
	scanf("%d", &n);
	int arr[50];
	int i = 0;
	for (i = 0;i < n;i++)
	{
		scanf("%d", &arr[i]);
	}
	int max = arr[0];
	for (i = 1;i < n;i++)
	{
		if (arr[i] > max)
		{
			max = arr[i];
		}
	}
	int min = arr[0];
	for (i = 1;i < n;i++)
	{
		if (arr[i] < min)
		{
			min = arr[i];
		}
	}
	printf("%d", max - min);
	return 0;
}
 

3.完成字母大小写转换

问题描述:完成字母大小写转换,有一个字符,判断它是否为大写字母,如果是,将它转换成小写字母;反之则转换为大写字母。

int main()
{
	char ch = 0;
	
	while (scanf("%c", &ch) == 1)
	{
		if (ch >= 'a' && ch <= 'z')
		{
			printf("%c\n", ch - 32);
		}
		else
			printf("%c\n", ch + 32);
		
		getchar();
	}
	
	return 0;
}

说明:scanf()读取成功时,返回的是读取的数据的个数,读取失败则返回EOF。getchar() 的作用是读取输入数据后的回车(处理\n)。

补充:其实C语言中有判断大小写和转换大小写的函数,分别是 isupper()、islower()、toupper()以及tolower()。

4.判断是不是字母

#include<stdio.h>
int main()
{
    char ch=0;
    while(scanf("%c",&ch)==1)
    {
        if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
        {
            printf("%C is an alphabet.\n",ch);
        }
        else{
            
            printf("%C is not an alphabet.\n",ch);
        }
        
        getchar();
    }
    
    return 0;
}

注意:%c前面加空格,是跳过下一个字符之前的所有空白字符。

补充:判断是不是字母有一个函数为 isalpha()

5.变种水仙花数

问题描述:变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。

例如:

655 = 6 * 55 + 65 * 5

1461 = 1*461 + 14*61 + 146*1

求出 5位数中的所有 Lily Number。

int main()
{
	
	int i = 0;
	for (i = 10000;i <= 99999;i++)
	{
		int sum = (i % 10) * (i / 10) + (i % 100) * (i / 100) + (i % 1000) * (i / 1000) + (i % 10000) * (i / 10000);
       
		if (sum == i)
		{
			printf("%d ", i);
           
		}
	}
		printf("\n");
		return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值