【无标题】C语言编程学习day1

									C语言编程学习day1

1、输入一行字符,统计其中有多少个单词,单词之间用空格分隔开,例如:输入“I am a boy.”,则统计结果应该有4个单词 。
思路:问题的关键是如何确定“出现了一个新单词”。可以采取这样的方法:从第一个字符开始逐个字符进行检查,判断此字符是否是新单词的开头,如果是,就使变量count加1(用count统计单词个数),最后的count的值就是单词总数。
判断是否出现新单词,可以由是否有空格出现来决定(连续的若干个空格作为出现一次空格)。如果测试出某个字符为非空格,而它前面的字符是空格,则表示"新单词开始了“;如果当前字符为非空格而其前面字符也是非空格,则意味着仍然是原来那个单词的继续。

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>

int main() {

	
	// 统计单词个数
	int flag = 0;
	int count = 0;
	char str[100];
	gets_s(str, 64);		//输入一个字符串给字符数组str;在vs里面用的是ges_s(),而不是gets()
	char c;
	for (int i = 0; (c=str[i]) != '\0'; i++) {
		if (c == ' ') {
			flag = 0;		//如果是空格字符,使flag=0;如果是多个空格,那么flag永远为0
		}else if (flag == 0) {	//如果不是空格字符,且flag的值为0
			count++;						
			flag = 1;		//使flag=1,直到该单词结束
		}
	}
	printf("单词个数%d\n", count);

	return 0;
}

运行结果
在这里插入图片描述
2、从键盘输入任何一个正整数(输入不要大于21亿,例题里用的是int类型),判断该数是否为回文数,所谓回文数就是从左到右与从右到左的阅读顺序一样。例如:1234321,565
思路:从左到右与从右到左的阅读顺序一样,那么可以将其取反,如果两个数大小相同,那么就判断为回文数。

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>

int main() {
	
	//判断是否为回文数
	int imput = 0;    
	int number = 0;      //接收将input取反后的数
	int k = 0;
	
	scanf_s("%d", &imput, 64); //vs里用的是scanf_s(),而不是scanf()
	int a = imput;		//保存input,因为再下面while循环里,会改变input值
	
	while (imput > 0) {
		k = imput % 10;	 //取input的每一位
		number = number * 10 + k; //number*10然后再加上本轮的余数
		imput = imput / 10;
	}
	if (a == number) { //比较a(input)与number的大小,如果相等,则就是回文数
		printf("你输入了回文数!");
	}else {
		printf("Error!");
	}
	
	return 0;
}

运行结果:
在这里插入图片描述

总结:今天比较忙,就只写了两道数学题,后期会对应增加数据结构方面的编程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别偷我的猪_09

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值