c语言写的一些小程序

3.使用c语言编写程序,在屏幕打印 9 * 9乘法表  
  
#include<stdio.h>  
  
int main()  
{  
    int i = 0;  
    int j = 0;  
    for (i = 1; i < 10; i++)  
    {  
        for (j = 1; j <= i; j++)  //注意条件的判断  
        {  
            printf("\t%d*%d =%d", i, j, i*j);//垂直制表符 用于各列对齐  
        }  
        printf("\n");  
    }  
    printf("\n");  
    return 0;  
}  
  
4.使用c语言编写程序,求10个整数中的最大值  
  
#include<stdio.h>  
  
int main()  
{  
    int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };  
    int max = 0;  
    int i = 0;  
    for (i = 0; i < 10; i++)  
    {  
        if (max < arr[i])  
        {  
            max = arr[i];  
        }  
    }  
    printf("The max is %d \n", max);  
    return 0;  
}  
  
6.使用c语言编写程序,求100以内的所有素数(质数)  
  
#include<stdio.h>  
  
int main()  
{  
    int i = 2;  
    int count = 0;  
    printf("100内的素数有:\n");  
    for (i = 2; i <= 100; i++)  
    {  
        int j = 2;  
        while (j < i)  
        {  
            if (i % j != 0)  
            {  
                j++;  
            }  
            else  
            {  
                break;  
            }  
        }  
        if (j >= i )  
        {  
            count++;  
            printf("%d ", i);  
        }  
    }  
  
    printf("\n总个数为: %d 个", count);  
    printf("\n");  
    return 0;  
}  
  
7.使用c语言编写程序,求两个数的最大公约数  
  
#include<stdio.h>  
  
void swap(int* m, int* n)  
{  
    int tmp = 0;  
    tmp = *m;  
    *m = *n;  
    *n = tmp;  
}  
int main()  
{  
    int m = 0;  
    int n = 0;  
    int r = 1;  
    int j = 0;  
    printf("请输入两个数:\n");  
    scanf("%d %d", &m, &n);  
    j = m*n;  
    if (m<n)  
    {  
        swap(&m, &n);  
    }  
  
    if (m % n == 0 && n != 0)  
    {  
            printf("最大公约数为: %d\n", n);  
        return 0;  
    }  
    else  
    {  
        while (m % n != 0 && n !=0)  
        {  
            r = m%n;  
            m = n;  
            n = r;  
        }  
          
    }  
    printf("最大公约数为: %d\n",r);  
    return 0;  
}  
  
8.使用C语言编写程序,求两个数的最小公倍数  
  
#include<stdio.h>  
  
void swap(int* a, int* b)  
{  
    int tmp = 0;  
    if (*a < *b)  
    {     
        tmp = *a;  
        *a = *b;  
        *b = tmp;  
    }  
}  
  
int main()  
{  
    int a = 0;  
    int b = 0;  
    int r = 1;  
    int m = 0;  
    printf("请输入两个数:\n");  
    scanf("%d %d", &a, &b);  
    m = a*b;  
    if (a < b)  
    {  
        swap(&a, &b);  
    }  
    if (a % b == 0 && b != 0)  
    {  
        if (a == b)  
        {  
            printf("a,b 的最小公倍数为:%d \n", a);  
        }  
        return 1;  
    }  
    else  
    {  
        while (a % b != 0 && b !=0)  
        {  
            r = a%b;  
            a = b;  
            b = r;  
        }  
        m = m / r;  
        printf("a,b 的最小公倍数为 :%d\n", m);  
    }  
  
    return 0;  
}  
  
 9、使用c语言编写程序,交换两整数的值  
  
#include<stdio.h>  
  
int main()  
{  
    int a = 2;  
    int b = 3;  
    printf("a: %d   b: %d\n", a, b);  
    a = a + b;  
    b = a - b;  
    a = a - b;  
    printf("a: %d   b: %d\n", a, b);  
  
    printf("a: %d   b: %d\n", a, b);  
    a = a * b;  
    b = a / b;  
    a = a / b;  
    printf("a: %d   b: %d\n", a, b);  
  
    printf("a: %d   b: %d\n", a, b);  
    a = a ^ b;  //10 ^ 11 = 01  
    b = a ^ b;  //01 ^ 11 = 10  
    a = a ^ b;  //01 ^ 10 = 11  
    printf("a: %d   b: %d\n", a, b);  
    return 0;  
}  
  
10、使用C语言编写一个函数,函数的功能是:交换两个整数的值  
  
#include<stdio.h>  
void Swap(int* s, int* p)  
{  
    int tmp = *s;  
    *s = *p;  
    *p = tmp;  
}  
int main()  
{  
    int a = 2;  
    int b = 3;  
    printf("before change:  a: %d   b: %d\n", a, b);  
    Swap(&a, &b);  
    printf("after change:   a: %d   b: %d\n", a, b);  
    return 0;  
}  
  
  
11.有1 2 3 4  四个数字,能组成多少互不相同且无重复数字的 三位数?都是多少?  
  
程序分析:可填在百位,十位,个位的数字都是1 2 3 4 组成所有的排列后再去掉不满足条件的  
  
  
#include<stdio.h>  
  
int main()  
  
{  
    int n = 0;  
    int m = 0;  
    int k = 0;  
    int i = 5;  
    int h = 5;  
    int l = 5;  
    int j = 0;  
    int count = 0;  
    int arr[100];  
    for (i = 1; i <= 4;i++)  
    {  
        n = i * 100;  
        for (h = 1; h <= 4; h++)  
        {  
            m = h * 10;  
            for (l = 1; l <= 4; l++)  
            {  
                k = l * 1;  
                arr[j] = n + m + k;  
                j++;  
            }  
        }  
    }  
  
    for (j = 0; j < 64; j++)//123  
    {  
        k = arr[j] % 10;        //个位  
        n = arr[j] / 100;       //百位  
        l = arr[j] % 100 / 10;  //十位  
        if (k != n && k != l && n != l )  
        {  
            count++;  
            printf("%d ", arr[j]);  
        }  
    }  
  
    printf("\n count : %d \n", count);  
    return 0;  
}  
  
  
12.使用C语言编写程序,在屏幕输出2000之前的所有闰年和闰年的个数  
  
#include<stdio.h>  
  
int main()  
{  
    int year = 0;  
    int count = 0;  
    for (year = 1; year <= 2000; year++)  
    {  
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)  
        {  
            count++;  
            printf("%d ", year);  
        }  
    }  
    printf("\n");  
    printf("count : %d\n", count);  
    printf("\n");  
    return 0;  
}  
  
  
13、写程序 求解2/1,3/2,5/3,8/5,21/13...求这个数列的前20项之和。  
  
#include<stdio.h>  
  
int main()  
{  
    int m = 1;  
    int n = 2;  
    int sum = 0;  
    for (int i = 0; i < 20; i++)  
    {  
        sum = sum + n / m;  
        m = n;  
        n = m + n;  
    }  
    printf("sum is %d\n", sum);  
    return 0;  
}  
  
华氏 温度   摄氏温度  转换  
#include<stdio.h>  
  
int main()  
{  
    float F;  
    float C;  
    printf("Please input Fahrenheit:\n");  
    scanf("%f", &F);  
    C = 5 * (F - 32) / 9;  
    printf("Centidegree is %.2f \n", C);  
    return 0;  
}  
  
  
#include<stdio.h>  
  
int main()  
{  
    int score = 0;  
    printf("Input score(0-100):\n");  
    scanf("%d", &score);  
    if (score < 60)  
    {  
        printf("%c\n", 'E');  
        return;  
    }  
    if (score >= 60 && score <= 69)  
    {  
        printf("%c\n", 'D');  
        return;  
    }  
    if (score >= 70 && score <= 79)  
    {  
        printf("%c\n", 'C');  
        return;  
    }  
    if (score >= 80 && score <= 89)  
    {  
        printf("%c\n", 'B');  
        return;  
    }  
    if (score >= 90 && score <= 100)  
    {  
        printf("%c\n", 'A');  
        return;  
    }  
    else  
    {  
        printf("Input error!\n");  
    }  
    return 0;  
}  
  
14、求解s = a+aa+aaa+……+aaa..a的值 a和n由键盘输入控制  
#include<stdio.h>  
  
int Sum(int a, int n)  
{  
    int A = 0;  
    int Sum = 0;  
    for (int i = 1; i <= n; i++)  
    {  
        A = A * 10 + a;  
        Sum = Sum + A;  
    }  
    return Sum;  
}  
  
int main()  
{  
    int a = 0;  
    int n = 0;  
    printf("Please input a and n\n");  
    scanf("%d %d", &a, &n);  
    int ret = Sum(a, n);  
    printf("%d\n", ret);  
    return 0;  
}  
  
15、一球从100米高度落下,每次反弹高度为原高度的一半;在落下,求第十次落地时,共经过多少米?第十次反弹多高?  
  
#include<stdio.h>  
  
int main()  
{  
    int H = 100;  
    int i = H;  
    int n = 10;  
    int sum = 0;  
    int count = 0;  
    while (i)  
    {  
        count++;  
        i /= 2;  
    }  
    printf("总共能跳 %d 次\n", count);  
    while (n--)  
    {  
        sum += H;  
        H /= 2;  
  
        if (H == 0)  
        {  
            break;  
        }  
    }  
    printf("sum is %d \n", sum);  
    printf("H is %d \n", H);  
    return 0;  
}  
  
  
16、猴子吃桃问题:第一天摘下若干桃子,吃了一半,没过瘾,又多吃了一个,以后每天如此,到第十天时,只剩一个桃子,求总共多少桃子?  
设有x个桃子,x - ((x/2+1) + ((x/2+1)/2 +1) +……+1 )= 0  
  
#include<stdio.h>  
int main()  
{  
    int day = 9;  
    int sum = 1;  
    while (day--)  
    {  
        sum= (sum + 1) * 2;  
    }  
    printf("sum is %d\n", sum);  
    return 0;  
}  
  
  
17、求值: 1-1/2+1/3-1/4+……-1/100   ★★★  
  
#include<stdio.h>  
int main()  
{  
    float sum = 0;  
    for (int i = 1; i <= 100; i++)  
    {  
        if (i % 2 != 0)  
        {  
            sum += (float)1 / i; //强转  
        }  
        else  
        {  
            sum -= (float)1 / i;  
        }  
    }  
    printf("sum is %f \n", sum);  
    return 0;  
}  
  
18、求值: !1+!2+……+!20  
  
#include<stdio.h>  
  
int main()  
{  
    int n = 5;  
    int mul = 1;  
    int sum = 0;  
    for (int i = 1; i <= n; i++)  
    {  
        mul = 1;                        //注意每次进来mul置1  
        for (int j = 1; j <= i; j++)  
        {  
            mul *= j;  
        }  
        sum += mul;  
    }  
    printf("sum is %d \n", sum);  
    return 0;  
}  
  
19、判断一个数是不是回文数 (回文数也是一个数字,特点是正反序是同一个数字 如:1234321 1331就是回文数)  
思路:因为是整数,所以可以求出该整数的翻转后的数值,看是否与原来整数相等。如果相等,则是回文数,否则不是。  
        翻转整数代码如下,返回值为翻转后的整数。  
  
#include<stdio.h>  
  
int main()  
{  
    int a = 0;  
    int rev = 0;  
    printf("Please input :\n");         //1、itoa() 转换为字符串  
    scanf("%d", &a);  
    int b = a;  
/****************************************************************************/  
    //while (a != 0)  
    //{  
    //  rev = rev * 10 + a % 10;    //2、数字反转法  
    //  a /= 10;  
    //}  
    //if (b == rev)  
    //{  
    //  printf("是回文数!\n");  
    //  return 0;  
    //}  
    //printf("不是回文数!\n");  
/****************************************************************************/  
    //比较第一位和最后一位 相等 继续比较  不相等返回  
    int div = 1;  
    while (a / div >= 10)  
    {  
        div *= 10;  
    }  
    while (a != 0)  
    {  
        int left = a / div;  
        int right = a % 10;     //3、数字位判断  
        if (left != right)  
        {  
            printf("不是回文数!\n");  
            return 0;  
        }  
        a = (a % div) / 10;  
        div /= 100;  
    }  
  
    printf("是回文数!\n");  
/****************************************************************************/  
    return 0;  
}  
  
  
20、判断一个字符串是不是回文字符串  
  
#include<stdio.h>  
#include<string.h>  
int main()  
{  
    char s[50];  
    printf("Please input :\n");           
    scanf("%s", s);  
    int len = strlen(s) -1;  
    char* begin = s;  
    char* end = s + len;  
  
    while (begin <= end)  
    {  
        if (*begin != *end)  
        {  
            printf("不是回文字符串!\n");  
            return 0;  
        }  
        begin++;  
        end--;  
    }  
    printf("是回文字符串!\n");  
    return 0;  
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值