前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言经典编程题100例 81~90

C语言经典编程题100例 81~90

作者头像
C you again
发布2022-08-22 14:53:00
1.4K0
发布2022-08-22 14:53:00
举报
文章被收录于专栏:IT技术圈IT技术圈

81、809*??=800*??+9*?? 其中??代表的两位数, 809*??为四位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。

程序分析:

无。

参考代码:

代码语言:javascript
复制
#include <stdio.h>

void output(long int b, long int i)
{
    printf("\n%ld = 800 * %ld + 9 * %ld\n", b,i,i);
}


int main()
{

    void output(long int b, long int i);
    long int a,b,i;
    a = 809;
    for(i = 10; i < 100; i++)
    {
        b = i * a;
        if (b >= 1000 && b <= 10000 && 8 * i < 100 && 9 * i >= 100)
        {
            output(b, i);
        }
    }
    return 0;
}

运行结果:

9708 = 800 * 12 + 9 * 12

82、八进制转换为十进制

程序分析:

无。

参考代码:

代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int n=0,i=0;
    char s[20];
    printf("请输入一个8进制数:\n");
    gets(s);
    while(s[i]!='\0')
    {
        n=n*8+s[i]-'0';
        i++;
    }
    printf("刚输入的8进制数转化为十进制为\n%d\n",n);

    return 0;
}

运行结果:

请输入一个8进制数: 16 刚输入的8进制数转化为十进制为 14

83、求0—7所能组成的奇数个数。

程序分析:

这个问题其实是一个排列组合的问题,设这个数为 sun=a1a2a3a4a5a6a7a8,a1-a8 表示这个数的某位的数值,当一个数的最后一位为奇数时,那么这个数一定为奇数,不管前面几位是什么数字。如果最后一位数为偶数,则这个数一定为偶数。

a1-a8可以取 0-7 这个八个数字,首位数字不为 0。

从该数为一位数到该数为8位数开始统计奇数的个数:

  • 1.当只有一位数时也就是该数的最后一位,奇数个数为4
  • 2.当该数为两位数时,奇数个数为4*7=28
  • 3.当该数为三位数时,奇数个数为:487=224
  • ...
  • 8.当该数为八位数时,奇数个数为:4888888*7(依次为最后一位到第一位)

参考代码:

代码语言:javascript
复制
#include<stdio.h>
int main(int agrc, char*agrv[])
{
    long sum = 4, s = 4;//sum的初始值为4表示,只有一位数字组成的奇数个数为4个
    int j;
    for (j = 2; j <= 8; j++)
    {
        printf("%d位数为奇数的个数%ld\n", j-1, s);
        if (j <= 2)
            s *= 7;
        else
            s *= 8;
        sum += s;
    }
    printf("%d位数为奇数的个数%ld\n", j-1, s);
    printf("奇数的总个数为:%ld\n", sum);
    // system("pause");
    return 0;
}

运行结果:

1位数为奇数的个数4 2位数为奇数的个数28 3位数为奇数的个数224 4位数为奇数的个数1792 5位数为奇数的个数14336 6位数为奇数的个数114688 7位数为奇数的个数917504 8位数为奇数的个数7340032 奇数的总个数为:8388608

84、一个偶数总能表示为两个素数之和。

程序分析:

无。

参考代码:

代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>
int Isprimer(unsigned int n);
int main()
{
    unsigned int n,i;
    do
    {
        printf("请输入一个偶数:\n");
        scanf("%d",&n);
    }
    while(n%2!=0);
    for(i=1; i<n; i++)
        if(Isprimer(i)&&Isprimer(n-i))
            break;
    printf("偶数%d可以分解成%d和%d两个素数的和\n",n,i,n-i);

    return 0;
}
int Isprimer(unsigned int n)
{
    int i;
    if(n<4)
        return 1;
    else if(n%2==0)
        return 0;
    else
        for(i=3; i<sqrt(n)+1; i++)
            if(n%i==0)
                return 0;

    return 1;
}

运行结果:

请输入一个偶数: 4 偶数4可以分解成1和3两个素数的和

85、判断一个素数能被几个9整除。

程序分析:

无。

参考代码:

代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int p,i;
    long int sum=9;
    printf("请输入一个素数:\n");
    scanf("%d",&p);
    for(i=1;; i++)
        if(sum%p==0)
            break;
        else
            sum=sum*10+9;

    printf("素数%d能整除%d个9组成的数%ld\n",p,i,sum);
    return 0;
}

运行结果:

请输入一个素数: 13 素数13能整除6个9组成的数999999

86、两个字符串连接程序 。

程序分析:

无。

参考代码:

代码语言:javascript
复制
#include <stdio.h>
#include<stdlib.h>
#include<string.h>

char* strconnect(char *str1,char *str2);

int main()
{
    char str1[20],str2[20];
    char *str;
    puts("请输入两个字符串,用回车分开:");
    scanf("%s%s", str1, str2);
    str=strconnect(str1,str2);
    puts("连接后的字符串为:");
    puts(str);
    return 0;
}
char* strconnect(char *str1,char *str2)
{
    char*str;
    str=(char*)malloc(strlen(str1)+strlen(str2)+1);
    str[0]='\0';
    strcat(str,str1);
    strcat(str,str2);
    return str;
}

运行结果:

请输入两个字符串,用回车分开: abc def 连接后的字符串为: abcdef

87、回答结果(结构体变量传递)。

程序分析:

无。

参考代码:

代码语言:javascript
复制
#include<stdio.h>

struct student
{
    int x;
    char c;
} a;

int main()
{
    a.x=3;
    a.c='a';
    f(a);
    printf("%d,%c",a.x,a.c);
}
f(struct student b)
{
    b.x=20;
    b.c='y';
}

运行结果:

3,a

88、读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的 *。

程序分析:

无。

参考代码:

代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int n,i,j;
    printf("请输入数字:\n");
    i--;
    for(i=0; i<7; i++)
    {
        scanf("%d",&n);
        if(n>50)
        {
            printf("请重新输入:\n");
            i--;
        }
        else
        {
            for(j=0; j<n; j++)
                printf("*");
        }
        printf("\n");
    }
    return 0;
}

运行结果:

请输入数字: 1 * 2 ** 3 ***

89、某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

程序分析:

无。

参考代码:

代码语言:javascript
复制
#include <stdio.h>

int main()
{
    int a,i,aa[4],t;
    printf("请输入四位数字:");
    scanf("%d",&a);
    aa[0]=a%10;
    aa[1]=a%100/10;
    aa[2]=a%1000/100;
    aa[3]=a/1000;
    for(i=0; i<=3; i++)
    {
        aa[i]+=5;
        aa[i]%=10;
    }
    for(i=0; i<=3/2; i++)
    {
        t=aa[i];
        aa[i]=aa[3-i];
        aa[3-i]=t;
    }
    printf("加密后的数字:");
    for(i=3; i>=0; i--)
        printf("%d",aa[i]);
    printf("\n");
}

运行结果:

请输入四位数字:1234 加密后的数字:9876

90、专升本一题,读结果。

程序分析:

无。

参考代码:

代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>

#define M 5
int main()
{
    int a[M]= {1,2,3,4,5};
    int i,j,t;
    i=0;
    j=M-1;
    while(i<j)
    {
        t=*(a+i);
        *(a+i)=*(a+j);
        *(a+j)=t;
        i++;
        j--;
    }
    for(i=0; i<M; i++)
    {
        printf("%d\n",*(a+i));
    }

}

运行结果:

5 4 3 2 1

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档