C语言刷题1

简介: C语言刷题1

和黛玉学编程呀

这期就是普普通通题目和答案啦,大都也比较基础,适合初学者,下期我们就更单链表


求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,

例如:2+22+222+2222+22222

int main()
{
  int a = 0;
  int n = 0;
  int i = 0;
  int sum = 0;
  int tmp = 0;
 
 
  scanf("%d%d", &a, &n);
  for(i=0; i<n; i++)
  {
    tmp = tmp*10+a;
    sum += tmp;
  }
  printf("%d\n", sum);
 
  return 0;
}

求出0~100000之间的所有“水仙花数”并输出。

“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。

#include <stdio.h>
#include <math.h>
 
int main()
{
  int i = 0;
  for(i=0; i<=99999; i++)
  {
    int count = 1;
    int tmp = i;
    int sum = 0;
    //判断i是否为水仙花数
    //1. 求判断数字的位数
    while(tmp/10)
    {
      count++;
      tmp = tmp/10;
    }
     
    //2. 计算每一位的次方和
    tmp = i;
    while(tmp)
    {
      sum += pow(tmp%10, count);
      tmp = tmp/10;
    }
     
    //3. 判断
    if(sum == i)
      printf("%d ", i);
  }
  return 0;
}

打印 菱形

int main()
{
  int line = 0;
  int i = 0;
  scanf("%d", &line);//7
  //打印上半部分
  for(i=0; i<line; i++)
  {
    //打印一行
    //打印空格
    int j = 0;
    for(j=0; j<line-1-i; j++)
    {
      printf(" ");
    }
    //打印*
    for(j=0; j<2*i+1; j++)
    {
      printf("*");
    }
    printf("\n");
  }
 
 
  //打印下半部分
  for(i=0; i<line-1; i++)
  {
    //打印一行
    int j = 0;
    for(j=0; j<=i; j++)
    {
      printf(" ");
    }
    for(j=0; j<2*(line-1-i)-1; j++)
    {
      printf("*");
    }
    printf("\n");
  }
  return 0;
}

递归实现n的k次方

int Pow(int n, int k)
{
  if(k==0)
    return 1;
  else if(k>=1)
  {
    return n*Pow(n, k-1);
  }
}

写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和

int DigitSum(int n)//1729
{
  if(n>9)
    return DigitSum(n/10)+n%10;
  else
    return n;
}

递归和非递归分别实现求n的阶乘(不考虑溢出的问题)

/*
Fac(N) = 1*2*3*……*N
递归方式实现:
        1    N <= 1
Fac(N)
        Fac(N-1)*N    N >= 2
*/
 
 
long long Fac(int N)
{
    if(N <= 1)
        return 1;
    
    return Fac(N-1)*N;
}
 
 
/*
循环方式:从1乘到N即可
*/
long long Fac(int N)
{
    long long ret = 1;
    for(int i = 2; i <= N; ++i)
    {
        ret *= i;
    }
    
    return ret;
}
 

递归方式实现打印一个整数的每一位

/*
思路:
              N   N <= 9
Print(N)
              Print(N-1), 打印N
*/
 
 void print(unsigned int n)
 {
  if(n>9)
    print(n/10);
  printf("%d ", n%10);
 }
 


相关文章
|
18天前
|
算法 C语言
C语言——oj刷题——回文字符串
C语言——oj刷题——回文字符串
11 2
|
18天前
|
算法 C语言
C语言——oj刷题——字符串左旋和轮转数组
C语言——oj刷题——字符串左旋和轮转数组
11 1
|
18天前
|
C语言
C语言——oj刷题——调整数组使奇数全部都位于偶数前面
C语言——oj刷题——调整数组使奇数全部都位于偶数前面
12 1
|
1月前
|
C语言 C++
【C语言/C++】牛客网刷题训练-12
【C语言/C++】牛客网刷题训练-12
|
1月前
|
算法 C语言 Swift
【C语言】牛客网刷题训练-11
【C语言】牛客网刷题训练-11
|
1月前
|
C语言
【C语言】牛客网刷题训练-10
【C语言】牛客网刷题训练-10
|
1月前
|
存储 C语言 数据安全/隐私保护
【C语言】牛客网刷题训练-9
【C语言】牛客网刷题训练-9
|
1月前
|
C语言
【C语言】牛客网刷题训练-8
【C语言】牛客网刷题训练-8
|
1月前
|
C语言
【C语言】牛客网刷题训练-7
【C语言】牛客网刷题训练-7
|
1月前
|
C语言
【C语言】牛客网刷题训练-6
【C语言】牛客网刷题训练-6