浙大版《C语言程序设计(第4版)》

文章包含了C语言编程练习中的各种基础题目,如求和、查找最大值、字符输出、符号函数、奇数和计算、距离计算等,涉及算法和数学基础知识在编程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数题

练习5-1 求m到n之和

int sum(int m,int n){
    int sum=0;
    for(int i=m;i<=n;i++){
        sum+=i;
    }
return sum;//必须返回
}

练习5-2 找两个数中最大者

int max( int a, int b ){
    if(a>b)return a;
    else return b;
}//So easy,妈妈再也不用担心我的学习(狗头)

练习5-3 字符金字塔

void CharPyramid( int n, char ch ){
    for(int i=1;i<=n;i++){
        for(int j=0;j<n-i;j++) printf(" ");
        //只关心左侧空格个数,样例为3,逐个递减,So(n-i)
        for(int j=0;j<i;j++) printf("%c ", ch);
        //依个数打印即可
        printf("\n");
    }
}

习题5-1 符号函数

int sign( int x ){
    if(x>0)x=1;
    else if(x==0)x=0;
    else x=-1;
    return x;//必须要返回,基础错误不能再犯,裂开。
}

习题5-2 使用函数求奇数和

int even( int n ){
    int even;
    if(n%2==0)   even=1;
    else   even=0;
    return even;
}
int OddSum( int List[], int N ){
    int OddSum=0;
    for(int i=0;i<N;i++)
        if(!even(List[i]))//狗头
            OddSum+=List[i];
    return OddSum;
}

习题5-3 使用函数计算两点间的距离

double dist( double x1, double y1, double x2, double y2 ){
    double dist1;
    dist1=sqrt(pow((x1-x2),2)+pow((y1-y2),2));
    return dist1;
}//此书编程类原题3-5三角形同题

习题5-4 使用函数求素数和懒得动弹了

编程题

练习2-1 Programming in C is fun!

#include<stdio.h>
int main(){
    printf("Programming in C is fun!");
}

练习2-3 输出倒三角图案

#include<stdio.h>
int main(){
    printf("* * * *\n");
    printf(" * * *\n");
    printf("  * *\n");
    printf("   *");
}

练习2-4 温度转换

#include<stdio.h>
int main(){
    int C,F=150;
    C=5*(F-32)/9;
    printf("fahr = 150, celsius = %d",C);
    return 0;
}

练习2-6 计算物体自由下落的距离


#include <stdio.h>
int main(){
    float h,t = 3,g = 10;
    h = 0.5*g*t*t;
    printf("height = %.2f",h);
    return 0;
}

练习2-8 计算摄氏温度

#include<stdio.h>
int main(){
    int C,F;
    scanf("%d",&F);
    C=5*(F-32)/9;
    printf("Celsius = %d",C);
    return 0;
}

练习2-9 整数四则运算

#include<stdio.h>
int main(){
    int m,n;
    scanf("%d %d",&m,&n);
    printf("%d + %d = %d\n",m,n,m+n);
    printf("%d - %d = %d\n",m,n,m-n);
    printf("%d * %d = %d\n",m,n,m*n);
    printf("%d / %d = %d",m,n,m/n);
    return 0;
}

练习2-10 计算分段函数[1]

#include<stdio.h>
int main()
{
    float x,result;
    scanf("%f",&x);
    if(x!=0){
        result=1/x;
    }else{
        result=0;
    }
    printf("f(%.1f) = %.1f",x,result);
    return 0;
}

练习2-11 计算分段函数[2]

#include<stdio.h>
#include<math.h>
int main(){
    float x,y;
    scanf("%f",&x);
    if(x>=0){
        y=sqrt(x);
    }else
        y=(x+1)*(x+1)+x*2+1/x;
    printf("f(%.2f) = %.2f",x,y);
}

练习2-12 输出华氏-摄氏温度转换表

#include<stdio.h>
int main(){
    int lower,upper,F;
    double C;
    scanf("%d %d",&lower,&upper);
    F=lower;
    if(lower<=upper&&upper<=100){
        printf("fahr celsius\n");
        C=5.0*(F*1.0-32)/9.0;
        printf("%d%6.1f",F,C);//占据6个字符宽度,靠右对齐,保留1位小数
        while((F+=2)<=upper){
            C=5.0*(F*1.0-32)/9.0;
            printf("\n%d%6.1f",F,C);//保证结尾无空行
        }
    }else printf("Invalid.");
    return 0;
}

练习2-13 求N分之一序列前N项和

#include<stdio.h>
int main(){
    int i;
    double sum;
    scanf("%d",&i);
    for(int j=1;j<=i;j++){
        sum+=1.0/j;
    }
    printf("sum = %.6f",sum);
}

练习2-14 求奇数分之一序列前N项和

#include<stdio.h>
int main(){
    int i;
    double sum;
    scanf("%d",&i);
    for(int j=1;j<=i;j++){
        sum+=1.0/(2*j-1);
    }
    printf("sum = %.6f",sum);
}

练习2-15 求简单交错序列前N项和

#include<stdio.h>
int main(){
    int i;
    double sum;
    scanf("%d",&i);
    for(int j=1;j<=i;j++){
        if(j%2==1){
        sum+=1.0/(3*j-2);
        }else{        
        sum-=1.0/(3*j-2);
        }
    }
    printf("sum = %.3f",sum);
}

练习2-17 生成3的乘方表

#include<stdio.h>
#include<math.h>
int main(){
    int i,a;
    scanf("%d",&i);
    if(i<0){
        return 0;
    }else{
        for(int j=0;j<=i;j++){
            a=pow(3,j);
            printf("pow(3,%d) = %d\n",j,a);
        }
    }
}

练习2-18 求组合数

#include<stdio.h>

double fact(int n){
    double fact=1;
    for(int i=1;i<=n;i++){
        fact*=i;
    }
    return fact;
}
int main(){
    double result;
    double m,n;
    scanf("%lf %lf",&m,&n);
    result = fact(n)/(fact(m)*fact(n-m));
    printf("result = %.0lf",result);
    return 0;
}

习题2-2 阶梯电价习题2-1 求整数均值

#include<stdio.h>
int main() {
    int a, b, c, d, sum;
    float ave;
    scanf("%d %d %d %d", &a, &b, &c, &d);
    sum = (a + b + c + d);
    ave = (a + b + c + d) / 4.0;
    printf("Sum = %d; Average = %.1f", sum, ave);
}

习题2-2 阶梯电价

#include<stdio.h>
int main() {
    int a;
    double cost;
    scanf("%d",&a);
    if(a<0){
      printf("Invalid Value!");
           return 0;
    }else if(a<=50){
        cost=a*0.53;
    }else{
        cost=(50*0.53+(a-50)*0.58);
    }
    printf("cost = %.2f",cost);
    return 0;
}

习题2-3 求平方与倒数序列的部分和

#include<stdio.h>
int main(){
    int m,n;
    double sum=0;
    scanf("%d %d",&m,&n);
    for(int i=m;i<=n;i++){
        sum+=i*i+1.0/i;
    }
    printf("sum = %.6lf",sum);
    return 0;
}

习题2-4 求交错序列前N项和

#include<stdio.h>
int main(){
    double i,m,sum;
    int n,flag=1;
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        m=flag*i/(2*i-1);
        sum+=m;
        flag*=-1;
    }
    printf("%.3lf",sum);
    return 0;
}

习题2-6 求阶乘序列前N项和

#include<stdio.h>
int main(){
    int n,sum=0,i,j=1;
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        j*=i;
        sum+=j;
    }
    printf("%d",sum);
}

练习3-2 计算符号函数的值

#include<stdio.h>
int main()
{
    int n,sign;
    scanf("%d",&n);
    if(n<0)sign=-1;
    if(n==0)sign=0;
    if(n>0)sign=1;
    printf("sign(%d) = %d",n,sign);
    return 0;
}

练习3-3 统计学生平均成绩与及格人数

#include<stdio.h>
int main(void)
{
    int i,n,score,count=0;
    double sum=0,average;
    scanf("%d",&n);
    if(n==0){
        printf("average = 0.0\n");
        printf("count = 0");
    }else{
        for(i=1;i<=n;i++){
        scanf("%d",&score);
        sum=sum+score;
        if(score>=60)count++;
        }
    average=sum/n;
    printf("average = %.1f\n",average);
    printf("count = %d",count);
    }
        return 0;
}

练习3-4 统计字符

#include <stdio.h>
int main(){
    int i,letter=0,blank=0,digit=0,other=0;
    char ch;
    for(i=0;i<=9;i++){
        ch=getchar();
        if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))letter++;
        else if((ch==' ')||(ch=='\n'))blank++;
        else if(ch>='0'&&ch<='9') digit++;
        else other++;
    }
    printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other);
}

练习3-5 输出闰年

#include <stdio.h>
int main() {
    int a, x = 2004;
    scanf("%d", &a);
    if (a <= 2000 || a >2100) printf("Invalid year!");
    else if (a < 2004) printf("None");
    else while (x <= a ) {
        if(x % 100 != 0)
        printf("%d\n", x);
        x += 4;
    }
}

练习3-7 成绩转换

#include <stdio.h>
int main(){
    int i;
    scanf("%d",&i);
    switch(i/10){
    case (10):printf("A");break;
    case (9):printf("A"); break;
    case (8):printf("B"); break;
    case (7):printf("C"); break;
    case (6):printf("D"); break;
    default:printf("E");
    }
    return 0;
}

练习3-8 查询水果价格

习题3-1 比较大小

#include<stdio.h>
int main(){
    int x,y,z,t;
    scanf("%d %d %d",&x,&y,&z);
    if(x>y){
        t=y;
        y=x;
        x=t;
    }if(x>z){
        t=z;
        z=x;
        x=t;
    }if(y>z){
        t=z;
        z=y;
        y=t;
    }
    printf("%d->%d->%d\n",x,y,z);
    return 0;
}

习题3-2 高速公路超速处罚

#include <stdio.h>
int main(){
    int a,b;
    double c;
    scanf("%d %d",&a,&b);
    c=(a-b)*100.0/b;
    if(c>=50)printf("Exceed %.lf%%. License Revoked",c);
    else if(c>=10)printf("Exceed %.lf%%. Ticket 200",c);
    else printf("OK");
}

习题3-3 出租车计价

#include <stdio.h>
#include <math.h>
int main() {
    double f, sum = 0;
    int time;
    scanf("%lf %d", &f, &time);
    if (f <= 3) sum = 10;
    else if (f <= 10) sum = 10 + (f - 3) * 2.0;
    else sum = 24 + (f - 10) * 3.0;
    sum += time / 5 * 2;
    printf("%.f", round(sum));
}

习题3-4 统计学生成绩

#include <stdio.h>
#include <math.h>
int main() {
    int N, g, A=0, B=0, C=0, D=0, E=0;
    scanf("%d\n", &N);
    for (int i = 1; i <= N; i++) {
        scanf("%d", &g);
        if (g >= 90 && g <= 100)A++;
        else if (g >= 80)B++;
        else if (g >= 70)C++;
        else if (g >= 60)D++;
        else E++;
    }
    printf("%d %d %d %d %d", A, B, C, D, E);
}

习题3-5 三角形判断

#include <stdio.h>
#include <math.h>
int main(){
    double x1,x2,x3,y1,y2,y3;
    scanf("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3);
    double d12,d13,d23,L,A;
    d12=sqrt(pow(x1-x2,2)+pow(y1-y2,2));
    d13=sqrt(pow(x1-x3,2)+pow(y1-y3,2));
    d23=sqrt(pow(x2-x3,2)+pow(y2-y3,2));
    if(d12+d13>d23&&d13+d23>d12&&d23+d12>d13){
        L=d12+d13+d23;
        A=sqrt(L/2*(L/2-d12)*(L/2-d23)*(L/2-d13));
        printf("L = %.2lf, A = %.2lf",L,A);
    }else printf("Impossible");
}

练习4-3 求给定精度的简单交错序列部分和

练习4-6 猜数字游戏

#include <stdio.h>
#include <math.h>
int main(){
    int a,N,x,b=0;
    scanf("%d %d",&a,&N);
    for(int i=1;i<=N;i++){
        scanf("%d",&x);
    }
            if(x<0)printf("Game Over");
        else while(x!=a){
            if(x>a)printf("Too big\n");
            else if(x<a)printf("Too small\n");
            b++;
            break;
        }
        if(b=1)printf("Bingo!");
        else if(b<4)printf("Lucky You!");
        else if(b<N)printf("Good Guess!");
        else printf("Game Over");
}

练习4-7 求e的近似值

#include<stdio.h>
int main(){
    int a;
    double e=1,b=1;
    scanf("%d",&a);
    for(int i=1;i<=a;i++){
        b*=i;
        e+=(1/b);
    }
    printf("%.8f",e);
}//沃柑!我忘了.f和.lf有啥区别了

练习4-10 找出最小值

#include<stdio.h>
int main(){
    int m ,q,min;
    scanf("%d",&m);
//想用for进行输入循环,但是发现输入时不在一行,并且vsac中栈有问题(胡言乱语)
    scanf("%d",&q);//既然正整数,那么必定有值,遂先捞出来观察
    min=q;
//我想了又想,删掉数组,优化
    for(int i=1;i<m;i++){
        scanf(" %d",&q);
        if(min>q) min=q;
    }
    printf("min = %d",min);
}

练习4-11 统计素数并求和

习题4-1 求奇数和

习题4-2 求幂级数展开的部分和

习题4-3 求分数序列前N项和

习题4-4 特殊a串数列求和

习题4-5 换硬币

习题4-6 水仙花数

//典典典,李典!都出了这么多年了,水仙花早都不仙了
#include<stdio.h>
#include<math.h>
int main(){
    int i,n,z,g,m=0,a[]={0};
    scanf("%d",&n);
    z=n;
//我的意思存数组,然后pow看
//能想到颇为pow(100,n-1)到 pow(n)时此题已解
    for(i=pow(10,n-1);i<pow(10,n);i++){
//如果i从1开始那么时间会较大
     for(int m=0;m<n;m++){
         a[m]=i/(10*z-1);
         z--;
         g+=pow(a[m],n);
     }
        if(g==i)
            printf("%d\n",i);
    }
}

由谭浩强教授著、清华大学出社出的《C程序设计》是一本公认的学习C语言程序设计的经典教材。根据C语言的发展和计算机教学的需要,作者在《C程序设计(第三)》的基础上进行了修订。本书按照C语言的新标准C 99进行介绍,所有程序都符合C 99的规定,使编写程序更加规范;对C语言程序设计的基本概念和要点讲解透彻,全面而深入;按照作者提出的“提出问题—解决问题—归纳分析”三部曲进行教学、组织教材;本书的每个例题都按以下几个步骤展开:提出任务—解题思路—编写程序—运行程序—程序分析—有关说明。符合读者认知规律,容易入门与提高。   本书内容先进,体系合理,概念清晰,讲解详尽,降低台阶,分散难点,例题丰富,深入浅出,文字流畅,通俗易懂,是初学者学习C程序设计的理想教材,可作为高等学校各专业的正式教材,也是一本自学的好教材。本书还配有辅助教材《C程序设计(第四)学习辅导》。 《C程序设计》累计发行逾1100万册,不仅创同类书的全国最高纪录,在世界上也是罕见的。 《C程序设计(第四)》保持了前三的写作风格和概念清晰、通俗易懂的特点,并在以下几个方面作了修改: (1) 按照C99标准进行介绍,以适应C语言的发展,使编写程序更加规范 (2)采用编译系统 (3)加强算法,以程序设计为中心把算法与语言工具紧密结合 (4)通俗易懂,容易学习 (5)根据需要重新组织教材内容
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值