0
点赞
收藏
分享

微信扫一扫

C语言题目2

大自然在召唤 2022-04-06 阅读 68
c语言

#include <stdio.h>
void gcd(int, int); //函数声明
int main()
{
    int a, b;
    printf("请输入两个正整数\n");
    scanf("%d%d", &a, &b);
    gcd(a, b);
}
void gcd(int c, int d)  //定义求解函数
{
    if (c % d == 0)
        printf("这两个数最大公约数为%d\n", d);
    else
        gcd(d, c % d);   //调用自身
}

/*
求(1/1-1/3+1/5-1/7+1/9)*4     对应此程序,求解的分数项为5
*/
#include <stdio.h>
#include <math.h>
float sum (int); //函数声明
int main()
{
    int a;
    printf("请输入求解的分数项的项数\n");
    scanf("%d", &a);
    printf("此时的值为%f\n",sum(a));  
}
float sum(int a)  //定义求解函数
{
int i=0;  //定义循环控制变量
int n=0; //定义分母
float sum=0; //定义总和
for(;i<a;i++)
{
n=2*i+1;
sum=pow(-1,i)*1.0/n + sum;  //累加求和
}
return 4*sum;
}

/*
求2/1+3/2*******此处代码应该输入20
分子分母都是前两个相加得到后一个
*/
#include <stdio.h>
float sum(int); //定义求解函数
int main()
{
    int m;
    printf("请输入求解的分数项的总项数\n");
    scanf("%d", &m);
    printf("此时的值为%.5f\n", sum(m)); //保留五位小数输出
}

float sum(int k)
{
    int a[k];
    a[0] = 1;
    a[1] = 2; //定义初始的两个分母
    int b[k];
    b[0] = 2;
    b[1] = 3; //定义初始的两个分子
    int i = 2;
    for (; i < k; i++) //每一个分子分母初始值定义
    {
        a[i] = a[i - 1] + a[i - 2]; // printf("a[%d]=%d\n", i,a[i]);
        b[i] = b[i - 1] + b[i - 2]; // printf("b[%d]=%d\n",i, b[i]);
    }
    float sum = 0;
    int j;
    for (j = 0; j < k; j++)
    {
        sum = 1.0 * b[j] / a[j] + sum; //多次测试,此处需要乘上1.0将每一个分数的精确值取出,否则为整数,计算结果不对
    }
    return sum;

 

/*
求100-200之间所有素数,每行打印输出5个   本题输入100 200
*/
#include <stdio.h>
void sushu(int, int);
void sushu(int a, int b)
{
    int i, j, k = 1;  //上下限i,j,格式控制k
    for (i = a; i <= b; i++)
    {
        for (j = 2; j < i; j++)
        {
            if (i % j == 0)
                break; //被整除,不是素数,跳出当前循环
        }
        if (j >= i)  //找出在范围内的素数输出
        {
            printf("%d\t", i);
            k = k + 1;
            if (k == 6)   //控制输出格式
            {
                k = 1;
                printf("\n");
            }
        }
    }
}
int main()
{
    int a, b;
    printf("请输入查找数据的范围\n");
    scanf("%d%d", &a, &b);
    printf("所查找数据范围的输出如下\n");
    sushu(a, b);

 #include<stdio.h>
#include<string.h>
int main(void)
{
    char string[80];
    int i, count = 0, flag = 0;//flag为单词标记
    char c;
    printf("请输入单词: ");
    gets(string);  //读入一串字符串
    for(i=0; (c = string[i]) != '\0'; i++)
    {
        if(c == ' ') flag = 0; //如果当前字符是空格,则使flag为0
        else if(flag == 0)
        {
            flag = 1;
            count++;//单词数
        }
    }
    printf("总共有%d个单词\n",count);
    return 0;
}

 #include <stdio.h>
void two(int);
void eight(int);
void sixteen(int );
void two(int n)
{
    static int a[32];
    int i = 0;
    int j = 0;

    for (; i < 32; i++)
    {
        a[i] = n % 2;
        n = n / 2;
    }
    printf("转换为二进制为: ");
    for (i = 31; i >= 0; i--)
    {
        printf("%d", a[i]);
        j++;
        if (j == 4)
        {
            printf(" ");
            j = 0;
        }
    }
    printf("(B)");
    printf("\n");
}
void eight(int n)
{
    int a[16];
    int i = 0;
    int j = 0;

    for (; i < 16; i++)
    {
        a[i] = n % 8;
        n = n / 8;
    }
    printf("转换为八进制为: ");
    for (i = 15; i >= 0; i--)
    {
        printf("%d", a[i]);
        j++;
        if (j == 4)
        {
            printf(" ");
            j = 0;
        }
    }
    printf("(O)");
    printf("\n");
}
void sixteen(int n)
{
    char a[8];
    int k = 0;
    int i = 0;
    int j = 0; // switch 语句标志
    for (; i < 8; i++)
    {
        j = a[i] = n % 16;
        n = n / 16;
        switch (j)
        {
        case 10:
            a[i] = 'A';
            break;
        case 11:
            a[i] = 'B';
            break;
        case 12:
            a[i] = 'C';
            break;
        case 13:
            a[i] = 'D';
            break;
        case 14:
            a[i] = 'E';
            break;
        case 15:
            a[i] = 'F';
            break;
        default:;
            break;
        }
    }
    printf("转换为十六进制为: ");
    for (i = 7; i >= 0; i--)

    {
        if (a[i] >= 'A' && a[i] <= 'F')
            printf("%c", a[i]);
        else
            printf("%d", a[i]);
        k++;
        if (k == 4)
        {
            printf(" ");
            k = 0;
        }
    }
    printf("(H)");
    printf("\n");
}

int main()
{

    printf("请输入要转换的正整数: ");
    int a;
    scanf("%d", &a);
    if (a > 0)
    {
        two(a);
        eight(a);
        sixteen(a);
    }
    else
        printf("请重新运行,输入要转换的正整数: ");
}

#include <stdio.h>
#include <string.h> //字符串操作库: puts(1)显示输出字符1,strcpy(1,2)复制字符2到1中,strcat(1,2)将字符串2与1连接之后存到1,要求1的空间比2大
int main()
{
    char string1[160]="你的电话号:"; //定义空间较大的字符串1
    printf("字符串1为: ");puts(string1);
    char string2[80]; //定义空间较小的字符串2
    printf("请输入字符串2: ");
    gets(string2);  //读入一串字符串
    printf("字符串2为: ");puts(string2);
    strcat (string1,string2);printf("连接字符串1和字符串2: ");puts(string1);
    strcpy (string2,string1); //由于上一步已经将字符串2和字符串1连接,此时再将字符串1复制到字符串2中,则字符串2为刚刚输出的字符串1
    printf("复制字符串1到字符串2后字符串2为: ");puts(string2);
}

 

 #include<stdio.h>
int main()
{
    int arr[10];                  /*定义一个数组*/
    int i,j;                      /*i,j为将要使用的循环控制变量*/
    int temp;                     /*temp为数值交换时使用的临时变量*/
    for(i=0;i<=9;i++)             /*输入10个数*/
    {   
        printf("请输入第%d个数: ",i+1);
        scanf("%d",&arr[i]);
    }
    for(i=1;i<=10-1;i++)          /*i代表排序轮数,总轮数=元素个数-1*/
    {
        for(j=0;j<10-i;j++)       /*j代表每轮排序次数,次数=个数-轮数-1,但j初值为0*/
        {
            if(arr[j]>arr[j+1])   /*如果前一项比后一项大,则两项的值互换*/
            {
                temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
        }
    }
    printf("排序后的数组:");
    for(i=0;i<=9;i++)             /*输出排序后的数组*/
    {
        printf("%d ",arr[i]);
    }
    return 0;

 

#include <stdio.h>
void test(void);//定义求解函数
int main()
{
    test();
}
void test(void)
{
    printf("请输入一个在2-1290之间的整数\n");//本人电脑为64位,可以正确计算的数据范围最大到1290.
    int a;
    scanf("%d", &a);
    int c = a / 2; //奇数中间数,定位点
    int b[a];
    if (a % 2 != 0) // a如果为奇,那么对应的连续的奇数最中间一个就是a*a
    {
        int i = 0;
        b[c] = a * a;
        for (i = c; i >= 0; i--)
        {
            b[c - i] = a * a - 2 * i;
        }
        for (i = 0; i <= c; i++)
        {
            b[c + i] = a * a + 2 * i;
        }
    }
    else // a如果为偶数,那么对应的连续的奇数最中间一个就是a*a+1
    {
        int i = 0;
        b[c] = a * a + 1; //中间值
        for (i = c; i >= 0; i--)
        {
            b[c - i] = a * a + 1 - 2 * i;
        }
        for (i = 0; i <= c; i++)
        {
            b[c + i] = a * a + 1 + 2 * i;
        }
    }
    int i = 0;
    int test1 = a * a * a; // test1存放输入数据的立方值
    int test2 = 0;           // test2存放连续奇数的总和
    printf("连续的奇数分别为:");
    for (i = 0; i < a; i++)
    {
        printf("%d ", b[i]); //打印输出这一连串的奇数
        test2 = b[i] + test2;//求和这一连串的奇数
    }
    printf("\n");
    printf("立方和为%d,连续奇数和为%d\n", test1, test2);
    //验证数据
    if (test1 == test2)
        printf("数据验算成功,满足要求\n");
    else
    printf("程序错误\n");
}

举报

相关推荐

C语言题目记录2

C语言题目

C语言 题目

c语言题目

C语言循环题目

C语言经典题目(三)

【C语言】经典题目(二)

0 条评论