C语言程序设计精髓(MOOC第14周 )题

第14周练兵区编程题

1. 学生成绩管理系统V5.0

2. 字符串中的字符排序

题目内容:
编写一个函数,对一个字符串中的字符进行升序排序,并输出字符排序后的字符串,字符串长度小于20。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int mycmp(const void* a,const void* b)
{
    const char* x = (const char*)a;
    const char* y = (const char*)b;
    if(*x - *y == 0)
        return 0;
    else if(*x - *y > 0)
        return 1;
    else
        return -1;
}
int main()
{
    char str[20];
    printf("Input a string:\n");
    gets(str);
    qsort(str,strlen(str),sizeof(char),mycmp);
    puts(str);
    return 0;
}

3. 纯数字字符串检验

题目内容:
按给定函数原型编程检查一个字符串是否全由数字组成。

int IsAllDigit(char p[]);/若全由数字组成,则函数返回1,否则返回0/

#include<stdio.h>
#include<ctype.h>
int IsAllDigit(char p[])
{
    int flag = 1;
    char *q = p;
    while(*q != '\0')
    {
        if(!isdigit(*q))
            flag = 0;
        q++;
    }
    return flag;
}
int main()
{
    char str[20];
    printf("Please input a string:\n");
    gets(str);
    if(IsAllDigit(str))
        printf("The string is digit string.");
    else
        printf("The string is not digit string.");
    return 0;
}

4. 孪生素数

题目内容:
相差为2的两个素数称为孪生素数。例如,3与5,41与43等都是孪生素数。设计程序求出指定区间上的所有孪生素数对。区间上限和下限由键盘获取。

#include<stdio.h>
#include<math.h>
int Prime(long n)
{
    int i ;
    for(i = 2; i <= sqrt(n); i++)
    {
        if(n%i == 0)
            return 0;
    }
    return 1;
}
int main()
{
    long a, b;
    int cnt = 0;
    printf("please input c,d(c>2):\n");
    scanf("%ld,%ld",&a, &b);
    for(int i = a; i <= b; i++)
    {
        if(Prime(i) && Prime(i + 2) && (i + 2 <= b))
        {
            printf("(%ld,%ld)\n", i, i+2);
            cnt++;
        }
    }
    printf("total=%d\n",cnt);
    return 0;
}

5. 求解不等式

题目内容:
对指定正实数n(采用双精度浮点型表示),试求满足下面平方根不等式的最小整数m,并输出不等式左边的值。程序中浮点数的数据类型均为double。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
    double n, sum;
    int i, m;
    printf("Input n:\n");
    scanf("%lf",&n);
    for(m = 1; ; m++)
    {
        sum = 0;
        for(i = 0; i <= m; i++)
        {
            sum += sqrt(m + i);
        }
        if(sum > n)
        {
           printf("Result:m>=%d\n",m);
           printf("s=%.2f\n",sum);
           return 0;
        }
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值