CCF201512-1 数位之和(100分)【进制+文本】

这篇博客介绍了如何使用C语言计算一个十进制整数的各位数字之和。通过示例代码展示了如何通过取余和除法操作逐位累加数字,最后输出总和。同时,文章还讲解了字符(char)与整型(int)之间的转换,包括为什么在转换字符到整型时要减去'0',以及整型转字符型时需要加上'0'的原因。此外,还简单介绍了C语言中字符和字符串的输入方法,如getchar()和gets()函数的使用。
摘要由CSDN通过智能技术生成

青青菜菜又来了,这几天也一直在做题哟

问题描述
  给定一个十进制整数n,输出n的各位数字之和。
输入格式
  输入一个整数n。
输出格式
  输出一个整数,表示答案。
样例输入
20151220
样例输出
13
样例说明
  20151220的各位数字之和为2+0+1+5+1+2+2+0=13。
评测用例规模与约定
  所有评测用例满足:0 ≤ n ≤ 1000000000。

代码

代码如下(示例):

/*201512-1 数位之和*/
#include<stdio.h>
int main()
{
	int n,out_num;
	scanf("%d",&n);
	while(n)
	{
		out_num+=n%10;
		n=n/10;
	}
	printf("%d",out_num);
	return 0;
}

问题总结分析

字符(char/string)与整型(int)的相互转换(类型及实例)

  1. 字符型(char)转整型(int)
char c = '6'; //字符型 c = '6'
int num = c - '0'; //转换结果:num = 6
/*这个地方为啥一定是要减呢,不懂,我试了试加,不行,会输出102,
这是为啥呢???*/

/*在本题的第二种解法中,我们定义了一个字符型数组,我们在计算最后结果时,
也是需要字符型转整型*/

  1. 整型(int)转字符型(char)
int num = 5; //整型 num = 5
char c = num + '0'; //转换结果:字符型 c = '5'
//这里同样也是换了运算就不行了  为啥呢??

c语言字符串输入

C语言有多个函数可以从键盘获得用户输入,它们分别是:
scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。
getchar()、getche()、getch():这三个函数都用于输入单个字符。
gets():获取一行数据,并作为字符串处理。

输入单个字符

  1. getchar()

最容易理解的字符输入函数是 getchar(),它就是scanf("%c", c)的替代品,除了更加简洁,没有其它优势了;或者说,getchar() 就是 scanf() 的一个简化版本。

#include <stdio.h>
int main()
{
    char c;
    c = getchar();
    printf("%c\n", c);
    return 0;
}
//缩写  char c = getchar();

在这里插入图片描述

输入字符串

输入字符串当然可以使用 scanf() 这个通用的输入函数,对应的格式控制符为%s

这里介绍gets() 这个专用的字符串输入函数,它拥有一个 scanf() 不具备的特性。

#include <stdio.h>
int main()
{
    char author[30], lang[30], url[30];
    gets(author);
    printf("author: %s\n", author);
    gets(lang);
    printf("lang: %s\n", lang);
    gets(url);
    printf("url: %s\n", url);
   
    return 0;
}

在这里插入图片描述
gets() 是有缓冲区的,每次按下回车键,就代表当前输入结束了,gets() 开始从缓冲区中读取内容,这一点和 scanf() 是一样的。gets() 和 scanf() 的主要区别是:
scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。
gets() 认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。

也就是说,gets() 能读取含有空格的字符串,而 scanf() 不能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值