如果有两个数字字符串分别是“1234”和“4567”,求让他们各位各位数相加的程序。(让他们1和4相加,2和5相加……)。不要只限制在这两个数上。谢谢各位了。
代码如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char str[100];
char buf[10];
int i;
int n = 0;
bool flag = 0;
int j = 0;
//gets(str);
scanf("%s", str);
for (i = 0; i != strlen(str); ++ i)
{
if (str[i] >= '0' && str[i] <= '9')
{
buf[j] = str[i];
j++;
flag = 1;
}
else if (flag)
{
n += atoi(buf);
memset(buf,0,10);//清空缓存区
flag = 0;
j = 0;
}
}
printf("%s",buf);
printf("%d\n", n);
}
扩展资料
(C语言)常见字符函数和字符串函数
1、strlen
功能:计算字符串长度,不包含’\0’
返回值:返回字符串的字符数
说明:strlen() 函数计算的是字符串的实际长度,遇到第一个’\0’结束;参数指向的字符串必须以 ’ \0 ‘结束。函数返回值一定是size_t ,是无符号的。如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到’\0’停止。
sizeof返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,strlen()是函数。
2、strcpy
功 能: 将参数src字符串拷贝至参数dest所指的地址
返回值: 返回参数dest的字符串起始地址
说明:源字符串必须以’\0’结束。会将源字符串的’\0’拷贝到目标空间。目标空间必须可变。如果参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误情况,在编写程序时需特别留意,或者用strncpy()来取代。
main()
{
char a[20];
char b[20];
char c[20];
int a_len;
int b_len;
int i;
printf ("please input string a: ");
scanf ("%s", a);
printf ("please input string b: ");
scanf ("%s", b);
a_len = strlen (a);
b_len = strlen (b);
for (i = 0; i < a_len; i++)
{
if (a[i] < '0' || a[i] > '9')
{
printf ("输入数字串a有错误%s\n");
return;
}
}
memset (c, 0, sizeof (c));
sprintf (c, "%d\n", atol (a)+atol(b));
printf ("相加后的数字=%s\n", c);
}
1、先输入
2、检查合法性
3、相加输出本回答被网友采纳
这是相加的,用两个数组就可以了
#define N 10
main()
{
int a[N],b[N];
int i,sum;
for(i=0;i<N;i++)
sum=a[i]+b[i];
……
}