arrays - 我们可以将字符数组转换为 int 数组吗?
问题描述
我正在解决这个问题。问题陈述说我必须打印奇数索引整数和偶数索引整数之和之间的差异。例如:
输入:4567
预期产出:2
我写了这段代码,但是在输入之后它既不打印也不退出。
#include <stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
int main()
{
char num[100];
int i,j,len = 0;
int diff = 0;
int s_even =0,s_odd = 0;
scanf("%s",num);
len = strlen(num);
for(i=0;i<len;i+2)
{
s_even+=int(num[i]);
s_odd+= int(num[i+1]);
}
diff = s_even - s_odd;
printf("%d",diff);
return 0;
}
我很好奇 char 字符串是否会进行算术加法。而且,我可以像在最后一个for循环中那样对它进行类型转换吗?请给我建议。
谢谢
解决方案
对于初学者来说,呈现的代码既不是 C 代码也不是 C++ 代码。
例如在 C++ 中,你应该使用看起来像
#include <cstdio>
#include <cstdlib>
#include <cstring>
另一方面,在 C 中没有像这样的函数转换
s_even+=int(num[i]);
此外,这没有多大意义。
在这个 for 循环中
for(i=0;i<len;i+2)
变量i
没有被改变。所以循环可以是无限的。
也不需要调用字符串函数strlen
。
AC程序至少可以看如下方式
#include <stdio.h>
int main( void )
{
char num[100];
num[0] = '\0';
scanf( "%99s", num );
int s_even = 0, s_odd = 0;
for( size_t i = 0; num[i] != '\0'; i++ )
{
if ( '0' <= num[i] && num[i] <= '9' )
{
if ( i % 2 == 0 )
{
s_even += num[i] - '0';
}
else
{
s_odd += num[i] - '0';
}
}
}
printf( "The difference is equal to %d\n", s_odd - s_even );
return 0;
}
如果要输入字符序列
4567
那么程序输出看起来像
The difference is equal to 2
推荐阅读
- .htaccess - .htaccess 将整个站点从非 www/http 重定向到 www/https
- javascript - 正则表达式替换正数和负数之间的逗号
- mysql - 无法弄清楚如何编写 MySQL Query
- ajax - 添加到返回的 ajax 调用数据的制表
- java - 使用 spring-boot 运行我的 .jar 文件时出错,无法创建名为“springSecurityFilterChain”的 bean
- google-apps-script - 如何解决 folder.addViewer(); 的“异常:服务错误:驱动器”?
- c# - 在 C# 上使用带有逻辑运算符的 switch
- yaml - CircleCI 在模式中使用 `[\/]` 进行变量扩展时抛出配置错误
- c++ - 阅读 .wav 并使用 http post 通过 esp32 esp8266 传输内容
- amazon-web-services - 如何通过 AWS SQS 执行 POST 和 GET