首页 > 其他 > 详细

C程序设计(第五版)函数习题汇总

时间:2020-12-06 00:23:42      阅读:28      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 

 技术分享图片

 

 

      7-2.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void root2(double a,double b,double t)
{
    double r1=(b+sqrt(t))/(2.0*a);
    double r2=(b-sqrt(t))/(2.0*a);
    printf("方程有两个实数根:%.2lf,%.2lf\n",r1,r2);
}

void root1(double a,double b)
{
    printf("方程有一个实数根:%.2lf\n",b/(2.0*a));
}

int main()
{
    double a,b,c,t;
    printf("输入方程的三个参数:");
    scanf("%lf%lf%lf",&a,&b,&c);
    t = b*b-4*a*c;
    if(t>0)
        root2(a,b,t);
    else if(t==0)
        root1(a,b);
    else
        printf("方程有两个共轭复数根\n");

    return 0;
}

  7-3.

#include <stdio.h>
#include <stdlib.h>

void judge(int n)
{
    if(n==1)
        printf("素数\n");
    else
        printf("不是素数\n");
}

int main()
{
    int n,i,flag=1;
    printf("输入一个整数:");
    scanf("%d",&n);
    if(n%2 == 0 || n == 1)  //质数必为奇数
        flag=0;
    else
    {
        for(i=3;i<n;i++)
        {
            if(n%i == 0)
            {
                flag=0;
                break;
            }
        }
    }
    judge(flag);

    return 0;
}

  7-16.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

int main()
{
    char n[4];
    printf("按格式输入一个16进制数:");
    gets(n);
    int i=0,num=0;
    for(;i<strlen(n);i++)
    {
        if(n[i] >= ‘A‘ && n[i] <= ‘F‘)
            n[i] += 10-‘A‘;     //用ASCII码替代字符进行运算
        else if(n[i] >= ‘a‘ && n[i] <= ‘f‘)
            n[i] += 10-‘a‘;
        else
            n[i] = n[i]-‘0‘;
        num += n[i]*pow(16,strlen(n)-i-1);   //进制转换
    }
    printf("对应的10进制数字:%d\n",num);

    return 0;
}

  7-17.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

void trans(int num,int n)
{
    char str[n];
    int i;
    for(i=0;i<n;i++)
    {
        str[i] = (int)(num/pow(10,n-i-1))%10 + 48;   //赋值对应的ascii码
    }
    printf("输出它的字符串:");
    puts(str);
    putchar(‘\n‘);
}

int main()
{
    int n,i=0,num;
    printf("输入一个非负整数:");
    scanf("%d",&n);
    num = n;
    do
    {
        n /= 10;
        i++;   //标记n的位数
    }
    while(n>0);
    trans(num,i);

    return 0;
}

  7-18.

#include <stdio.h>
#include <stdlib.h>

int judge(int y)
{
    if(y%4 == 0 && y%100 != 0)
        return 1;
    else if(y%400 == 0)
        return 1;
    else
        return 0;
}

int main()
{
    int year,month,day,no,i;
    int arr[12]={31,28,31,30,31,30,31,31,30,31,30,31};  //平年的每月天数
    printf("按格式输入日期:");
    scanf("%d.%d.%d",&year,&month,&day);
    if(judge(year))  //先判断是不是闰年
        arr[1] = 29;
    no = day;
    for(i=0;i<month-1;i++)
    {
        no += arr[i];
    }
    printf("这是该年的第%d天\n",no);

    return 0;
}

  7-8.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n;
    char ch[4];
    printf("输入一个四位数字:");
    scanf("%d",&n);
    ch[0] = n/1000 + 48;
    ch[1] = (n/100)%10 + 48;
    ch[2] = (n/10)%10 + 48;
    ch[3] = n%10 + 48;
    printf("%c %c %c %c\n",ch[0],ch[1],ch[2],ch[3]);

    return 0;
}

  7-9.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int *tj(char c[])
{
    int n1=0,n2=0,n3=0,n4=0,i=0;
    int *p=&i;
    for(;i<strlen(c);i++)
    {
        if(c[i] >= ‘0‘ && c[i] <= ‘9‘)
            n2++;
        else if(c[i] >= ‘a‘ && c[i] <= ‘z‘)
            n1++;
        else if(c[i] >= ‘A‘ && c[i] <= ‘Z‘)
            n1++;
        else if(c[i] == ‘ ‘)
            n3++;
        else
            n4++;
    }
    *p = n1;
    *(p+1) = n2;
    *(p+2) = n3;
    *(p+3) = n4;
    return p;
}

int main()
{
    char str[100];
    printf("输入一个字符串:\n");
    gets(str);
    printf("字符串:%s\n",str);
    printf("%d个字母,%d个数字,%d个空格,%d个其他字符\n",*tj(str),*(tj(str)+1),*(tj(str)+2),*(tj(str)+3));

    return 0;
}

  7-10.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char str[100];
    int i,lw=0,max=0,pos;
    printf("输入一个字符串:\n");
    gets(str);
    for(i=0;i<strlen(str);i++)
    {
        if(str[i] >= ‘a‘ && str[i] <= ‘z‘)
            lw++;
        else if(str[i] >= ‘A‘ && str[i] <= ‘Z‘)
            lw++;
        else
            lw=0;  //如果单词不连续了,将标记归零
        if(lw > max)
        {
            max = lw;  //取最大长度
            pos = i;  //标记单词末尾的下标
        }
    }
    printf("输出最长的单词:\n");
    for(i=pos-max+1;i<pos+1;i++)
    {
        printf("%c",str[i]);
    }
    printf("\n");
    return 0;
}

  7-13.

#include <stdio.h>
#include <stdlib.h>

int prd(int n,int x)
{
    if(n==0)
        return 1;
    else if(n==1)
        return x;
    else
        return ((2*n-1)*x - prd(n-1,x) - (n-1)*prd(n-2,x))/n;
}

int main()
{
    int n,x;
    printf("输入要求的阶数和参数:");
    scanf("%d%d",&n,&x);
    printf("n阶勒让德多项式的结果为:%d\n",prd(n,x));
    return 0;
}

  7-14.

#include <stdio.h>
#include <stdlib.h>

double avg(double a[])
{
    return (a[0]+a[1]+a[2]+a[3]+a[4])/5.0;
}

double subf(double a[][5])  //必须指明列数
{
    int i;
    double first=0,next=0;
    for(i=0;i<10;i++)
    {
        first += avg(a[i])*avg(a[i]);
        next += avg(a[i]);
    }
    return first/10.0-(next/10.0)*(next/10.0);
}

int main()
{
    double sc[10][5],max=0;
    int i,j,sp,cp;
    printf("分别输入10个学生的5门课程成绩:\n");
    for(i=0;i<10;i++)
    for(j=0;j<5;j++)
    {
        scanf("%lf",&sc[i][j]);
    }
    printf("10个学生的平均成绩:\n");
    for(i=0;i<10;i++)
    {
        printf("%.2lf  ",avg(sc[i]));
    }
    printf("\n5门课程的平均分:\n");
    for(j=0;j<5;j++)
    {
        int sum=0;
        for(i=0;i<10;i++)
        sum += sc[i][j];
        printf("%.2lf  ",sum/10.0);
    }
    for(i=0;i<10;i++)
    for(j=0;j<5;j++)
    {
        if(sc[i][j] > max)
        {
            max = sc[i][j];
            sp = i+1;
            cp = j+1;
        }
    }
    printf("\n最高分数对应的学生和课程序号:学生%d,课程%d\n",sp,cp);
    printf("平均方差为:%.2lf\n",subf(sc));

    return 0;
}

  

 

C程序设计(第五版)函数习题汇总

原文:https://www.cnblogs.com/lemon-567/p/14091583.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!