栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

浙大版《C语言程序设计(第3版)》题目集

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

浙大版《C语言程序设计(第3版)》题目集

浙大版《C语言程序设计(第3版)》题目集
  • 函数题
    • 练习5-1 求m到n之和
    • 练习5-2 找两个数中最大者
    • 练习5-3 数字金字塔
    • 习题5-1 符号函数
    • 习题5-2 使用函数求奇数和
    • 习题5-3 使用函数计算两点间的距离
    • 习题5-4 使用函数求素数和
    • 习题6-1 分类统计字符个数
    • 习题10-7 十进制转换二进制
    • 习题11-8 单链表结点删除
  • 编程题
    • 练习2-3 输出倒三角图案
    • 练习2-4 温度转换
    • 练习2-6 计算物体自由下落的距离
    • 练习2-8 计算摄氏温度
    • 练习2-9 整数四则运算
    • 练习2-10 计算分段函数[1]
    • 练习2-11 计算分段函数[2]
    • 练习2-12 输出华氏-摄氏温度转换表
    • 练习2-13 求N分之一序列前N项和
    • 练习2-14 求奇数分之一序列前N项和
    • 练习2-15 求简单交错序列前N项和
    • 练习2-17 生成3的乘方表
    • 习题2-1 求整数均值
    • 习题2-3 求平方与倒数序列的部分和
    • 习题2-5 求平方根序列前N项和
    • 习题2-6 求阶乘序列前N项和
    • 练习3-2 计算符号函数的值
    • 练习3-3 统计学生平均成绩与及格人数
    • 练习3-4 统计字符
    • 练习3-5 输出闰年
    • 练习3-7 成绩转换
    • 习题3-2 高速公路超速处罚
    • 习题3-4 统计学生成绩
    • 练习7-3 将数组中的数逆序存放

函数题 练习5-1 求m到n之和

本题要求实现一个计算m~n(m

int sum(int m,int n)
{
    int sum = 0;
    sum = ((m+n) * (n -m)) /2;
    return sum;
}
练习5-2 找两个数中最大者
int max( int a, int b )
{
    if(a > b)
    {
        return a;
    }
    else
        return b;
}
练习5-3 数字金字塔
void pyramid( int n )
{
    int i, j, k;
    for(i =1; i <= n; i++)      
    {
        for(j = 1; j <= n-i; j++)   
            {
                printf(" ");
            }
            for (k = 1; k <= i; k++)        
                {
                    printf("%d ", i);
                }
        printf("n");
    }
}
习题5-1 符号函数
int sign(int x)
{
    if (x > 0)
    {
        return 1;
    }
    else if (x < 0)
    {
        return -1;
    }
    else 
    return 0;
}
习题5-2 使用函数求奇数和
int even( int n )
{
    if (n % 2 == 0)
        return 1;
    else
    return 0;
}

int OddSum( int List[], int N )
{
    int i,sum = 0;
    for(i =0;i <= N;i++)
    {
        if(even(List[i]) == 0)
        {
            sum += List[i];
        }
    }
    return sum;
}
习题5-3 使用函数计算两点间的距离
double dist( double x1, double y1, double x2, double y2 )
{
    double dist = 0;
    dist = sqrt( ((x2 - x1) * (x2 - x1)) + ((y2 - y1) * (y2 - y1)) );
    return dist;
}
习题5-4 使用函数求素数和
int prime( int p )
{
    int i,flag = 1;
    if(p <= 1)     return 0;
    else 
    {
        for ( i = 2; i <= sqrt( p ); i++)
        {
            if(p % i == 0)
            {
                flag = 0;
                break;
            }
        }
        return flag;  
    }
}

int PrimeSum( int m, int n )
{
    int i,sum=0;
    for(i = m;i <= n;i++)
    {
        if(prime(i) == 1)   
        sum += i;
    }
    return sum;
}
习题6-1 分类统计字符个数
void StringCount( char s[] )
{
    int i, len, l = 0, b = 0, d = 0, o = 0;
    len = strlen(s);
    for ( i = 0; i < len; i++)
    {
        if(s[i] >= 'a' && s[i] <= 'z' ||s[i] >= 'A' && s[i] <= 'Z')
            l++;
            else if(s[i] == ' ' || s[i] == 'n')
                b++;
                else if(s[i] >= '0' && s[i] <= '9')
                    d++;
                    else
                        o++;
    }
        printf("letter = %d, blank = %d, digit = %d, other = %d", l, b, d, o);
}
习题10-7 十进制转换二进制
void dectobin( int n )
{
    if ( n == 0 )
        printf("0");
    else if ( n == 1 )
        printf("1");
        else
        {
            dectobin( n / 2 );
            printf("%d", n % 2 );
        }
}
习题11-8 单链表结点删除
struct ListNode *readlist() {   //构成链表
    struct ListNode *p, *q, *head = NULL;
    int n;
    while(scanf("%d", &n) == 1 && n != -1) {  //一直读入n,直到n为-1
        p = (struct ListNode *)malloc(sizeof (struct ListNode));  //p指向一个新开的空间
        p -> data = n;      //p的data为n
        p -> next = NULL;   //把p的下一位置成空
        if(head) {  //不是第一个数
            q -> next = p;  //使q的下一位是新开的空间p
            q = p;   //q再指向新开的空间,不会被覆盖,此时q的上一位next指向新开的空间
        } else {      //是第一个数
            head = q = p;   //使head,q等于p,指向那个新开的空间
        }
    }
    return head;
}

struct ListNode *deletem( struct ListNode *L, int m ) {
    struct ListNode *p, *q;
    for (q = NULL, p = L; p ; ) {   //遍历链表,q节点的作用是指向被删除节点以前没删除的节点
        if(p -> data == m) {        //当前节点的值等于m
            if(q) {                 //
                q -> next = p -> next;      //q节点的next指向删除节点的下一个节点
                free(p);              
                p = q;          //p指向被删除节点的上一个节点
            } else {
                L = p -> next;  //L(头节点)指向当前节点的下一个
                free(p);     
                p = L;        //p指向下一个节点
            }
        } else {
            q = p;          //不删除,q保证是删除节点的上一个节点
            p = p -> next;      //p指向下一个节点
        }
    }
    
    return L;
}

编程题 练习2-3 输出倒三角图案
#include
int main()
{
	printf("* * * *");
    printf("n");
    printf(" * * *");
    printf("n");
    printf("  * *");
    printf("n");
    printf("   *");
    printf("n");
	return 0;
 } 
练习2-4 温度转换
#include 
int main()
{
    int  fahr = 150,celsius;
    celsius = 5 * (fahr - 32) / 9;
    printf("fahr = 150, celsius = %d",celsius); 
}
练习2-6 计算物体自由下落的距离
#include 
#define G 10
int main()
{
    int t = 3;
    double h;
    h = G * t * t / 2;
    printf("height = %.2f", h);
    return 0;
}
练习2-8 计算摄氏温度
#include 
int main()
{
    int  fahr,celsius;
    scanf("%d",&fahr);
    celsius = 5 * (fahr - 32) / 9;
    printf("Celsius = %d",celsius);
}
练习2-9 整数四则运算
#include 
int main()
{
    int a,b;
    int A,B,C,D;
    scanf("%d %d",&a,&b);
    A = a + b;
    B = a - b;
    C = a * b;
    D = a / b;
    printf("%d + %d = %dn",a,b,A);
    printf("%d - %d = %dn",a,b,B);
    printf("%d * %d = %dn",a,b,C);
    printf("%d / %d = %d",a,b,D);
    return 0;
}
练习2-10 计算分段函数[1]
#include 
int main()
{
    float x,y;
    scanf("%f",&x);
    if(x == 0)  y = 0;
    else
    y = 1 /x;
    printf("f(%.1f) = %.1f",x,y);
    return 0;
}
练习2-11 计算分段函数[2]
#include 
#include 
int main()
{
    float x,y;
    scanf("%f",&x);
    if(x >= 0)  y = sqrt(x);
    else
    y = pow(x + 1,2)+2 * x + (1 / x);
    printf("f(%.2f) = %.2f",x,y);
    return 0;
}
练习2-12 输出华氏-摄氏温度转换表
#include 
#include 
int main()
{
    int low,upp;
    double C;
    scanf("%d %d",&low,&upp);
    if (low > upp || upp >100)
    {
        printf("Invalid.");
        return 0;
    }    
    else{
        printf("fahr celsiusn");
        for(low;low <= upp;low += 2)
        {
            C = 5.0 * (low -32) / 9.0;
            printf("%d%6.1fn",low,C);
        }
        }
    return 0;
}
练习2-13 求N分之一序列前N项和
#include 
#include 
int main()
{
    int i,N;
    double sum=0;
    scanf("%d",&N);
    for(i = 1;i <= N;i++)
    {
        sum += (1.0 / i);
    }
    printf("sum = %.6fn",sum);
    return 0;
}
练习2-14 求奇数分之一序列前N项和
#include 
int main()
{
    int i,j,N;
    double sum=0;
    scanf("%d",&N);
    for(i = 1,j = 1;i <= N;i++)
    {
        sum += 1.0 / j;
        j += 2;
    }
    printf("sum = %.6fn",sum);
    return 0;
}
练习2-15 求简单交错序列前N项和
#include 
int main()
{
    int i,j,N,flag;
    double sum=0;
    scanf("%d",&N);
    for(i = 1,j = 1;i <= N;i++)
    {
        if(i % 2 ==0)   
            flag = -1;
        else    
            flag = 1;
        sum += 1.0 / (j * flag);
        j += 3;
    }
    printf("sum = %.3fn",sum);
    return 0;
}
练习2-17 生成3的乘方表
#include 
#include 
int main()
{
    int i,n,p;
    scanf("%d",&n);
    for(i = 0; i <= n; i++)
    {
        p = pow(3,i);
        printf("pow(3,%d) = %dn",i,p);
    }
    return 0;
}
习题2-1 求整数均值
#include 
#include 

int main()
{
    int m,n,p,q,sum;
    double avg;
    scanf("%d %d %d %d",&m,&n,&p,&q);
    sum = m + n + p + q;
    avg = sum / 4.0;
    printf("Sum = %d; Average = %.1f", sum, avg);
    return 0;
}
习题2-3 求平方与倒数序列的部分和
#include 
#include 

double fact(int x);

int main()
{
    int i,j,m,n;
    double  sum = 0.0;
    scanf("%d %d",&m,&n);
    for ( i = m; i <= n; i++){
        sum += i * i +(1.0 / i);
    }
    printf("sum = %.6f", sum);
    return 0;
}
习题2-5 求平方根序列前N项和
#include 
#include 

int main()
{
    int i,N;
    double sum;
    scanf("%d",&N);
    for(i = 1;i <= N;i++){ 
        sum += sqrt(i);
    }
    printf("sum = %.2fn",sum);
}
习题2-6 求阶乘序列前N项和
#include 
#include 

int fact(int N);
int main()
{
    int i,N,sum = 0;
    scanf("%d",&N);
    for(i = 1;i <= N;i++){ 
        sum += fact(i);
    }
    printf("%d",sum);
}

int fact(int N)
{
    if( N == 1)
    return N;
    else{
        int i,fac = 1;
        for(i = 2;i <= N;i++){
            fac *= i;
        }
        return fac;
    }
}
练习3-2 计算符号函数的值
#include 
#include 

int main()
{
    int x,y,n;
    scanf("%d",&n);
    if( n < 0){
        y = -1;
    }
    else if( n == 0 ){
        y = 0;
    }
    else
        y = 1;
    printf("sign(%d) = %d", n,y);
    return 0;
}
练习3-3 统计学生平均成绩与及格人数
#include 
#include 

int main()
{
    int N,i,n;
    int count= 0 ;
    double avg,sum;
    scanf("%d",&N);
    int a[N];
    for ( i = 0; i < N; i++){
        scanf("%d ",&a[i]);
        if(a[i] >= 60){
            count++;
        }
        sum += a[i];
    }
    if(N != 0){
    avg = sum / N *1.0;
    }
    printf("average = %.1fncount = %d",avg,count);
    return 0;
}
练习3-4 统计字符
#include 
#include 

int main()
{
    int i;
    char c;
    int letter = 0;
    int blank = 0;
    int digit = 0;
    int other = 0;
    for(i = 0;i < 10;i++){
        c = getchar();
        if(c >= '0' && c <= '9')
            digit++;
            else if(c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
                letter++;
                else if(c == '')
                    blank++;
                    else if(c == 'n')
                        blank++;
                        else
                            other++;
    }
    printf("letter = %d, blank = %d, digit = %d, other = %d", letter, blank, digit, other);
    return 0;
}
练习3-5 输出闰年
#include 
#include 

int main()
{
    int n;
    scanf("%d", &n);
    if(n < 2001 || n >2100){
        printf("Invalid year!");
    }
    else{
        int i,count = 0;
        for ( i = 2001; i <= n; i++)
        {
            if((i % 4 == 0 && i % 100 != 0) || i % 400 == 0){
                printf("%dn", i);
                count++;
            }
        }
        if(count == 0){
            printf("None");
        }
    }
    return 0;
}

练习3-7 成绩转换
#include 
#include 

int main()
{
    int c;
    scanf("%d", &c);
    switch (c / 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"); break;
    }
    return 0;
}
习题3-2 高速公路超速处罚
#include 
#include  

int main()
{
    int a, b;
    double x;
    scanf("%d %d", &a, &b);
    x = (a - b) *1.0 / b * 100;
    if (x < 10)    
        {
            printf("OK");
        }
    else 
    {
        if(x < 50) 
            printf("Exceed %.0f%%. Ticket 200",x);
        else
        printf("Exceed %.0f%%. License Revoked",x);
    }
    return 0;
}
习题3-4 统计学生成绩
#include 
#include  

int main()
{
    int i, score, N;
    scanf("%d", &N);
    int A = 0, B = 0, C = 0, D = 0, E = 0;
    if(N != '')
    {
        for ( i = 0; i < N; i++)
        {
            scanf("%d", &score);
            switch (score / 10)
            {
            case 10:
            case 9: A++; break;
            case 8: B++; break;
            case 7: C++; break;
            case 6: D++; break;
            default:E++; break;
            }
        }
    }
    printf("%d %d %d %d %d", A, B, C, D, E);    
    return 0;
}
练习7-3 将数组中的数逆序存放
#include  
#include   

#define MAX 10

int main()
{
    int i, n;
    int a[MAX] = {0};
    scanf("%d", &n);
    for(i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    for (i = n - 1; i > 0; i--)
    {
        printf("%d ",a[i]);
    }
    printf("%d",a[0]);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1022291.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号