求一个数的约数+ 统计字符数、单词数、行数

两段代码分别实现了C语言中检测素数和统计文本字符、单词及行数的功能。第一段代码通过循环和条件判断检测输入的数是否为素数,第二段代码利用isspace()函数统计文本的字符数、单词数和行数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用ctype.h头文件中的isspace()函数

isspace()函数:若该函数的参数为空白字符,则返回真。

题一代码: 

#include<stdio.h>
#include<stdbool.h>/*用true和false分别代替1 0*/

int main(void)
{
	unsigned long num;/*待测试的数*/
	unsigned long div;/*可能的约数*/
	bool isprime;/*素数标记*/

	printf("请输入一个待分析的数:");
	printf("退出按q\n");
	while (scanf("%lu", &num) == 1)
	{
		for (div = 2, isprime = true; (div * div) <= num; div++)
		{
			if (num % div == 0)
			{
				if ((div * div) != num)
				{
					printf("%lu是可以被%lu和%lu除尽的\n", num, div, num / div);
				}
				else
				{
					printf("%lu不能被%lu除尽\n", num, div);
				}
				isprime = false;/*该数不是素数*/
			}
		}
		if (isprime)
		{
			printf("%lu是可以的");
		}
		printf("请输入另一个待分析的数:");
		printf("退出按q\n");
	}
	printf("再见!");
	return 0;

}

题二代码:

/*统计字符数、单词数、行数*/
#include<stdio.h>
#include<stdbool.h>/*用true和false分别代替1 0*/
#include<ctype.h>
#define STOP '|'

int main(void)
{
	char c, prev;/*读入字符,读入前一个字符*/
	long n_chars = 0L;/*字符数*/
	int n_lines = 0, n_words = 0, p_lines = 0;/*行数,单词数,不完整的行数*/
	bool inword = false;/*若c在单词中,inword为true*/

	printf("Enter text to be analyzed(| to terminate):\n");
	prev = '\n';/*用于识别完整的行*/
	while ((c = getchar()) != STOP)
	{
		n_chars++;/*统计字符*/
		if (c == '\n')
		{
			n_lines++;/*统计行*/
		}
		if (!isspace(c) && !inword)/*若c不是空白字符,且inword为假*/
		{
			inword = true;/*开始新单词*/
			n_words++;/*统计单词*/
		}
		if (isspace(c) && inword)
		{
			inword = false;/*达到单词末尾*/
		}
		prev = c;/*保存字符的值*/
	}
	if (prev != '\n')
	{
		p_lines = 1;
	}
	printf("characters=%ld, words=%d, lines=%d", n_chars, n_words, n_lines);
	printf("partial lines =%d\n", p_lines);

	return 0;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值