您的位置:首页 > 其它

【程序18】 题目:求s = a + aa + aaa + aaaa + aa...a的值,其中a是一个数字。例如2 + 22 + 222 + 2222 + 22222(此时 共有5个数相加),几个数

2019-01-10 14:36 274 查看

初始版本

存在的问题:数组内存大小固定,无法动态改变

[code]#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

/*
【程序18】
题目:求s = a + aa + aaa + aaaa + aa...a的值,其中a是一个数字。例如2 + 22 + 222 + 2222 + 22222(此时
共有5个数相加),几个数相加有键盘控制
*/

int main(void){
int all = 0, num = 0;
int count = 0;
int s = 0;
int number[10] = { 0 };
printf("几个数相加?什么数?\n");
scanf("%d %d", &all, &num);
for (count = 0; count < all; count++)
{
number[count] += num;
s += number[count];
number[count + 1] = number[count] * 10;
}
number[all] = '\0';

for (count = 0; count < (all - 1); count++)
{
printf("%d + ",number[count]);
}
printf("%d = %d\n", number[count], s);
return 0;
}

修改后

分配空间函数

[code]int *get_number(int all){
int *temp_number = NULL;
//分配空间
temp_number = (int *)malloc((all + 1) * sizeof(int));
if (temp_number == NULL)
{
fprintf(stderr, "temp_number malloc err\n");
return NULL;
}
//初始化
memset(temp_number, 0, (all + 1) * sizeof(int));
return temp_number;
}

释放空间函数

[code]//释放分配空间
void free_number(int *number){
if (number == NULL)
{
return;
}
free(number);
number = NULL;
return;
}

全部程序

[code]#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//给数组分配动态内存
int *get_number(int all){
int *temp_number = NULL;
//分配空间
temp_number = (int *)malloc((all + 1) * sizeof(int));
if (temp_number == NULL)
{
fprintf(stderr, "temp_number malloc err\n");
return NULL;
}
//初始化
memset(temp_number, 0, (all + 1) * sizeof(int));
return temp_number;
}

//释放分配空间
void free_number(int *number){
if (number == NULL)
{
return;
}
free(number);
number = NULL;
return;
}
int main(void){
int all = 0, num = 0;
int count = 0;
int s = 0;
int *number = NULL;
printf("几个数相加?什么数?\n");
scanf("%d %d", &all, &num);
number = get_number(all);

for (count = 0; count < all; count++)
{
number[count] += num;
s += number[count];
number[count + 1] = number[count] * 10;
}
number[all] = '\0';

for (count = 0; count < (all - 1); count++)
{
printf("%d + ", number[count]);
}
printf("%d = %d\n", number[count], s);
free_number(number);
return 0;
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐