鱼C论坛

 找回密码
 立即注册
查看: 5115|回复: 7

给鱼油练习的简单C语言算法题目。。12月4日

[复制链接]
发表于 2012-12-4 00:33:14 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 lqyha 于 2012-12-5 00:04 编辑

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

要求:不能抄袭,最好格式规范化,且在一些重要步骤上标明注释。。写的好的代码有奖励的哦。亲、、限时一天、明天换新题目。

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-12-4 00:33:15 | 显示全部楼层
  1. /*
  2. 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
  3. 例如2+22+222+2222+22222(此时共有5个数相加),
  4. 几个数相加有键盘控制
  5. */
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <string.h>

  9. //数据结构头文件
  10. typedef struct MyDataType{
  11.         int* pInts;//数祖每个元素表示一位十进制数
  12.         int a;
  13.         int size;
  14. }MyDataType;

  15. void Init( MyDataType* pData, int a, int n );
  16. void Destroy( MyDataType* pData );
  17. void ComputeAndPrint( MyDataType* pData );
  18. //------------------------------

  19. //便利函数和主函数
  20. int Input( int* pa, int*  pn, const char* msg );
  21. int main(void){
  22.         int a,n;
  23.         MyDataType data;
  24.         while( Input(&a, &n, "Input a(0<=a<=9) and n; input alpha to quit") ) {
  25.                 Init(&data,a,n);
  26.                 ComputeAndPrint(&data);
  27.                 Destroy(&data);
  28.         }
  29. }

  30. int Input( int* pa, int*  pn, const char* msg ) {
  31.         puts(msg);
  32.         return scanf("%d %d",pa, pn) == 2;
  33. }
  34. //---------------------------------



  35. //数据结构的实现
  36. static void Compute( MyDataType* pData );
  37. static void Print( const MyDataType* pData );

  38. void Init( MyDataType* pData, int a, int n ) {
  39.         pData->pInts = (int*)malloc(sizeof(int)*(n+1));
  40.         memset(pData->pInts,a,n);
  41.         pData->a = a;
  42.         pData->size=n;
  43. }

  44. void Destroy( MyDataType* pData ) {
  45.         free(pData->pInts);
  46. }

  47. void ComputeAndPrint( MyDataType* pData ) {       
  48.         Compute(pData);
  49.         Print(pData);
  50. }

  51. void Compute( MyDataType* pData ) {
  52.         int i;
  53.         //cin为本位进位
  54.         int cin = 0;
  55.         //模拟笔算加法
  56.         for( i=0; i<pData->size; ++i  ) {
  57.                 int tmp = (pData->size-i)*pData->a+cin;
  58.                 pData->pInts[i] = tmp%10;
  59.                 cin = tmp/10;
  60.         }
  61.         if(cin) {
  62.                 pData->pInts[i] = cin;
  63.                 ++pData->size;
  64.         }
  65. }

  66. void Print( const MyDataType* pData ) {
  67.         int i;
  68.         printf("The result is:\n");
  69.         for( i = pData->size-1; i>=0;--i ) printf("%d",pData->pInts[i]);
  70.         printf("\n");
  71. }
  72. //----------------------------------------
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-4 09:13:44 | 显示全部楼层
#include<stdio.h>

void main()
{
        int m = 0, n = 0, s = 0;     //m上一个数的值
        int i, a, k;

        printf("请输入a的值:");
        scanf("%d", &a);
        printf("请输入你想要几组数相加:k = ");
        scanf("%d", &k);

        for( i = 0; i < k; i++)
        {
                n = 10*m+a;                                //10*m+a  下一个数的值
                s += n;                                        //求和
                m = n;
        }
        printf("总和为:%d\n", s);
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-4 23:59:49 | 显示全部楼层

不得不承认,有时候看别人的代码自己也学到好多东西。 鱼油们,都看下这代码吧,看不懂的也看下。。我也看了好久。 读懂别人的代码对自己都有收获的。。看看吧、
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-5 00:03:49 | 显示全部楼层
友来友网 发表于 2012-12-4 09:13
#include

void main()

你的代码正确的,可是最佳答案只能给一个。继续努力,多看看别人的代码、、、
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-5 00:04:23 | 显示全部楼层
yEs、先生 发表于 2012-12-4 09:38
#include
int pow(int x, int y); /*定义一个int 类型x的y次幂的函数*/

你的代码正确的,可是最佳答案只能给一个。继续努力,多看看别人的代码、、、
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-5 00:21:00 | 显示全部楼层
#include <stdio.h>
void result(int a,int len)
{
        long i,temp=0,s=0;
        for(i=0;i<len;i++)        //len用来控制加数的个数
        {
                temp = temp*10+a;        //temp用来存放每一个加数
                s = s+temp;                        //s用来存放结果
        }
        printf ("%ld\n",s);
}
void main()
{
        int a,len;
        printf ("请输入一个数字:");//a为所选的数字
        scanf ("%d",&a);
        printf ("请输入数字长度:");//len为加数的个数
        scanf ("%d",&len);
        result (a,len);                //调用计算结果的函数
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-5 00:22:28 | 显示全部楼层
看到时候晚了呢!呜呜
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-9 20:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表