C语言小程序优化

发布网友 发布时间:2022-04-27 00:14

我来回答

5个回答

热心网友 时间:2022-05-03 00:20

1. 针对本程序的改进:程序的优化一般有三点,一是performance(性能)上的优化,也称算法优化;二是结构上的优化,也称设计模式;三是细节上的优化,使他人能够更容易读懂你的程序。
(1)结构上的优化:
本程序分为三个功能,建议lz把这三个功能分别写成三个函数(也作“接口”),使他们开来,这样更清晰,维护起来更容易。
将abcde这几个变量定义成数组array[5];
(2)细节上的优化:
第一个功能可这样改:
int dig = 1;
int number = num;
while((number / 10) != 0)
{ dig ++;
number /= 10;
}
第二个功能可以这样改:(用一个循环即可)
int digit = dig;
while((digit--) != 0)
{ printf("%d", array[digit-1]); // 或反序array[4-digit]
}
第三个功能同第二个类似。

2. 还有一些其他优化的概念,大致跟你说说:
(1)整数或字符串(立即数)要定义成宏或常量,最好为常量,因为有编译检查
(2)最好分为多个文件实现,cpp和h文件各有各的作用,但这里功能较简单,所以可不用考虑
(3)容错能力:当输入不符合要求时,可让用户选择重新输入或有其他选择。即当错误发生时,这些错误不至于让程序运行终止,这在许多大型软件项目中尤为重要

3. 我说的也只是一些皮毛,推荐lz一些书籍
《深入浅出设计模式》《Effective C++》《大话设计模式》

热心网友 时间:2022-05-03 01:38

/////////////////////////运行结果///////////////////////////////////////////////////////////
12345
你输入的是5位数。
每一位分别是:
5 4 3 2 1 Press any key to continue
///////////////////////////////////////////代码/////////////////////////////////////////
#include "stdio.h"
#include "string.h"
main()
{
int i,nLen;
char a[6];
gets(a);
nLen = strlen(a);
printf("你输入的是%d位数。\n每一位分别是:\n",nLen);
for (i=nLen-1;i>=0;i--)
printf("%c ",a[i]);
}

热心网友 时间:2022-05-03 03:13

设输入num中的数据正确
while(num>0)
{ printf("%d ",num%10); num=num/10; }
就得到逆序输出各个数位数据的结果了

热心网友 时间:2022-05-03 05:04

#include <stdio.h>
void main()
{
int j, m;
char a[100], t;
printf("输入数字\n");
gets(a);
for (j=0;a[j]!='\0';j++)
{
printf("%c\n",a[j]);
}
printf("有%d位\n",j);
for (j=0;a[j]!='\0';j++);
for (m=0,j=j-1;m<j;m++,j--)
{
t=a[m];
a[m]=a[j];
a[j]=t;
}
puts(a);
}
可以是任意位 几十位也没问题

热心网友 时间:2022-05-03 07:12

#include <stdio.h>

int main()
{
int a, b = 10, c = 1;
int i, tmp[5];
scanf("%d", &a);

while (a / b >= 1)
{
c++;
b *= 10;
}
printf("位数是%d\n", c);

for (i = 0; i < c; i++)
{
b /= 10;
printf("%d位是%d ", b, a / b);
tmp[i] = a / b;
a %= b;
}
printf("\n");

for (i = 0; i < c; i++)
printf("%d ", tmp[c - 1 - i]);

printf("\n");
return 0;
}

如果输入以字符串纳入,异常简单,如果非以整数形式纳入,上面的程序可供参考!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com