首页 > 其他分享 >C语言小案例(考试必备)

C语言小案例(考试必备)

时间:2023-11-25 10:04:11浏览次数:32  
标签:include int 必备 ++ C语言 案例 printf steels 钢筋

1.学习C语言如何运用指针函数求解一个英语句子中的单词个数。

#include<stdio.h>
#include<ctype.h>
int Number(char *s)
{
    int count=0;
    while(*s!='\0'){
        while(*s==' ')
        ++s;
        if(*s!='\0'){
            ++count;
            while(*s != ' '&& *s != '\0'){
                ++s;
            }
        }
    }
    return count;
}
int main(){
    char s[100];
    fgets(s,100,stdin);
    printf("该字符串的单词个数为:%d",Number(s));
    return(0);
}

C语言小案例(考试必备)_i++

2.建立信息表

建立10种钢筋的信息表,每种钢筋包括钢筋编号、品种、公称直径、单根长度(mm)、数量、单根重量(Kg)。要求从键盘输入这10种钢筋的信息,并按照每一行显示一种钢筋信息的形式将10种钢筋的信息显示出来,最后汇总总重量。 注:

1、每米的重量(Kg)=0.00617×钢筋的直径(mm)×钢筋的直径(mm),即钢筋重量与直径的平方成正比;

2、品种:HPB235、HPB300、HRB335、HRBF335、HRB400、HRBF400、RRB400、HRB500、HRBF500、HRB600。 输入示例:(重量不输入,需要由其他输入计算)。

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

#define MAX_LEN 20

// 钢筋结构体
struct Steel {
    char id[MAX_LEN]; // 钢筋编号
    char type[MAX_LEN]; // 品种
    int diameter; // 公称直径
    int length; // 单根长度
    int num; // 数量
    double weight; // 单根重量
};

int main() {
    struct Steel steels[3]; // 钢筋数组
    double total_weight = 0; // 总重量

    // 输入10种钢筋的信息
    for (int i = 0; i < 3; i++) {
        printf("请输入第%d种钢筋的信息:\n", i + 1);
        printf("钢筋编号:");
        scanf("%s", steels[i].id);
        printf("品种:");
        scanf("%s", steels[i].type);
        printf("公称直径(mm):");
        scanf("%d", &steels[i].diameter);
        printf("单根长度(mm):");
        scanf("%d", &steels[i].length);
        printf("数量:");
        scanf("%d", &steels[i].num);
        steels[i].weight = 0.00617 * steels[i].diameter * steels[i].diameter * steels[i].length / 1000; // 计算单根重量
        total_weight += steels[i].weight * steels[i].num; // 累加总重量
    }

    // 按照每一行显示一种钢筋信息的形式将10种钢筋的信息显示出来
    printf("钢筋编号\t品种\t公称直径(mm)\t单根长度(mm)\t数量\t单根重量(Kg)\n");
    for (int i = 0; i < 3; i++) {
	printf("%4s\t%10s\t%8d\t%8d\t%d\t%.2f\n", steels[i].id, steels[i].type, steels[i].diameter, steels[i].length, steels[i].num, steels[i].weight);    }

    // 汇总总重量
    printf("总重量为:%.2fKg\n", total_weight);

    return 0;
}

C语言小案例(考试必备)_i++_02

3.用c语言怎么解答以下这个问题 已知r(r>=1)属于自然数集S,S的其它元素由以下规则产生:若e属于S那么2e和3e-1也属于S。输入r,按从小到大的顺序输出S中的前20个元素。

#include <stdio.h>

int main()
{
    int r, i, j, k, count = 0; //定义变量
    int s[20] = {0}; //定义数组,用于存储S中的前20个元素
    scanf("%d", &r); //输入r
    s[count++] = r; //将r加入数组中
    for(i = 0; i < 20; i++) //循环20次,每次找到一个新的元素加入数组中
    {
        for(j = 0; j <= i; j++) //在已有的元素中查找
        {
            for(k = 0; k <= i; k++)
            {
                if(s[j] * 2 == s[i+1] || s[k] * 3 - 1 == s[i+1]) //判断是否符合规则
                {
                    s[count++] = s[i+1]; //将新的元素加入数组中
                    break;
                }
            }
            if(s[count-1] == s[i+1]) //如果找到了新的元素,跳出循环
            {
                break;
            }
        }
    }
    for(i = 0; i < 20; i++) //输出S中的前20个元素
    {
        printf("%d ", s[i]);
    }
    return 0;
}

4.怎么利用指针进行二维数组的上下循环移位呢?

比如数组:

1 2 3

4 5 6

7 8 9

向上循环移位一次变成:

4 5 6

7 8 9

1 2 3

具体步骤如下:

1.定义一个指向二维数组的指针,指向数组的第一行。

2.将第一行的元素保存到一个临时数组中。

3.将数组中的每一行向上移动一行,即将第i行的元素复制到第i-1行。

4.将保存在临时数组中的第一行元素复制到数组的最后一行。

5.重复上述步骤n次,即可实现n次上移。

#include <stdio.h>

#define ROW 3
#define COL 3

void shift_up(int arr[][COL], int n) {
    int temp[COL];
    int *p = arr[0];
    for (int i = 0; i < COL; i++) {
        temp[i] = *(p + i);
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < ROW - 1; j++) {
            for (int k = 0; k < COL; k++) {
                arr[j][k] = arr[j + 1][k];
            }
        }
        for (int j = 0; j < COL; j++) {
            arr[ROW - 1][j] = temp[j];
            temp[j] = arr[0][j];
        }
    }
}

int main() {
    int arr[ROW][COL] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int n = 1;
    shift_up(arr, n);
    for (int i = 0; i < ROW; i++) {
        for (int j = 0; j < COL; j++) {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

C语言小案例(考试必备)_数组_03

5.通用算法设计(上)

3.1 枚举法

枚举法适合于解的候选者是有限、可枚举的场合。

例一:有这样一个算式:ABCD×E=DCBA,其中,A B C D E代表不同的数字。编写一个程序找出A B C D E分别代表的是什么数字。

#include <stdio.h>
 
int main()
{
    int num1,num2,A,B,C,D,E;
    for(A=1;A<=9;A++)
        for(B=0;B<=9;B++){
            if(A==B) continue;
            for(C=0;C<=9;C++){
                if(C==A || C==B) continue;
                for(D=1;D<=9;C++){
                    if(D==A ||D==B || D==C) continue;
                    for(E=2;E<=9;E++){
                        if(E==A || E==B || E==C || E==D) continue;
                        num1=A*1000+B*100+C*10+D;
                        num2=D*1000+C*100+B*10+A;
                        if(num1*E==num2)
                        printf("%d * %d = %d\n",num1,E,num2);
                    }
                }
            }
        }
    
    return(0);
}

程序的输出为:2178*4=8712。

这个题目该可以采用求“水仙花”数的方法解题。

例二: 阶梯问题:有一个长阶梯,若每步上两个台阶,最后剩1阶;若每步上三个 台阶,最后剩2阶;若每步上五个台阶,最后剩4阶;若每步上六个台阶,最后剩5阶;若每步上七个台阶,最后正好一阶不剩。编写一个程序,计算该楼梯至少有多少阶。

#include <stdio.h>
 
int main()
{
    int n;
    for(n=7; ;n+=7)
        if(n%2==1 && n%3==2 && n%5==4 && n%6==5) break;
    printf("满足条件的最短的阶梯长度是:%d\n",n);    
    return(0);
}

C语言小案例(考试必备)_#include_04

在设计一个算法时,要时刻记住提高它的效率。

例三:最长连续子序列和的问题。

#include <stdio.h>
int maxSubsequenceSum(int a[],int size,int *start,int *end);
int main()
{
    int a[]={-2,11,-4,13,-5,2};
    int b[]={1,-3,4,-2,-1,6};
    int sum,start,end;
    sum=maxSubsequenceSum(a,6,&start,&end);
    printf("{-2,11,-4,13,-5,2}中的最大和值从%d开始到%d结束,和值是%d\n",start,end,sum);
    sum=maxSubsequenceSum(b,6,&start,&end);
    printf("{1,-3,4,-2,-1,6}中的最大和值从%d开始到%d结束,和值是%d\n",start,end,sum);
    return(0);
}
int maxSubsequenceSum(int a[],int size,int *start,int *end)
{
    int maxSum=0;
    int i,j;
    for(i=0;i<size;i++){
        int thisSum=0;
        for(j=i;j<size;j++){
            thisSum+=a[j];
            if(thisSum>maxSum){
                maxSum=thisSum;
                *start=i;
                *end=j;
            }
        }
    }
    return maxSum;
}

C语言小案例(考试必备)_i++_05

11-4+13=20;

4-2-1+6=7;

3.2 贪婪法

贪婪法也称贪心算法,用于求问题的最优解。

例一:用贪婪法解硬币找零问题。

#include <stdio.h>
#define ONEFEN 1   //壹分
#define TWOFEN 2   //贰分
#define FIVEFEN 5  //伍分
#define ONEJIAO 10 //壹角->拾分
int main()
{
    int money;
    int onefen=0,twofen=0,fivefen=0,onejiao=0;
    printf("输入要找零的钱?(以分为单位)");
    scanf("%d",&money);
    if(money>=ONEJIAO){
        onejiao=money/ONEJIAO;
        money%=ONEJIAO;
    }
    if(money>=FIVEFEN){
        fivefen=1;
        money -= FIVEFEN;
    }
    if(money>=TWOFEN){
        twofen=money/TWOFEN;
        money%=TWOFEN;
    }
    if(money>=ONEFEN){
        onefen=1;
    }
    printf("1角硬币数:%d\n",onejiao);
    printf("5分硬币数:%d\n",fivefen);
    printf("2分硬币数:%d\n",twofen);
    printf("1分硬币数:%d\n",onefen);
    
    return(0);
}

运行结果如下所示:

C语言小案例(考试必备)_#include_06

该题解法思路:按照贪婪法的思想,需要不断地使用面值最大的硬币。如果找零的值小于最大的硬币值,则尝试第二大的硬币,以此类推。

标签:include,int,必备,++,C语言,案例,printf,steels,钢筋
From: https://blog.51cto.com/u_16174658/8556624

相关文章

  • C语言:爱心代码(表白必备,简单易懂,亲测有效)
       哈喽!学期已经过了大半了,那么我们今天就来用所学的知识编写一个代码,浪漫一下吧!今天我们要编写的是C语言的爱心代码。好了,话不多说,开始我们今天的学习吧~#include<stdio.h>#include<windows.h>intmain(void){floatx,y,a;for(y=1.5;y>-1.5;y-=0.1){ for(x=-1.5;x<1......
  • C语言【自定义数据类型、typedef、动态内存分配】
    C语言【自定义数据类型、typedef、动态内存分配】一、自定义数据类型。​ 关于下面讲到的所有自定义数据类型(enum、struct、union),有一点要说的是:定义类型不是声明变量,做这步操作时不分配内存,也不能在定义类型时赋值(枚举那个不是赋值,是做一个限定,赋值时赋限定之外的值也不报错。)......
  • C语言学习总集篇(分支与循环篇)——从不会到会的过程
    大家好,经过前段时间的学习,我相信大家对C语言的相关知识点有了一个初步的认识了,接下来我会将前面所学的内容进行一个梳理、汇总成一个总集篇。今天是这个篇章的第一篇——分支与循环语句,今天我将用这一篇的内容讲完分支与循环语句的相关内容。一、什么是C语言?C语言是一门 结构化 ......
  • c语言中的指针用法
    1、指向函数的指针在C语言中,函数名实际上是一个指向函数的指针,所以你可以直接使用函数名add来初始化函数指针,而不需要使用&add。在这种情况下,add和&add是等价的。这是因为在C语言中,函数名是函数的入口地址的别名。当你使用函数名时,你实际上获取的是函数的入口地址。这就是为什么......
  • 6S精益管理必备装备降低物料损耗
    在工厂生产环境中,设备管理是确保生产效率和质量的关键因素之一。6S管理方法是一种源自日本的管理体系,旨在通过整顿、整理、清扫、清洁、素养、遵守六个步骤,实现工作环境的优化和管理的高效。仓库管理中,库存损耗一直是企业面临的挑战之一,精心设计的策略和合适的设备能够帮助企业有效......
  • IDEA必备插件!一键生成接口文档
    IDEA是一款功能强大的集成开发环境(IDE),它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。我们在编写完接口代码后需要进行接口调试等操作,一般需要打开额外的调试工具,而今天给大家介绍一款IDEA插件:Apipost-Helper-2.0。代码写完直接编辑器内调试、还支持生成接口文档、接......
  • C语言之结构体—下
    单链表示例案例1:创建并访问一个带头结点的、存储整型数据的单链表,数据从键盘输入,0为输入结束标志。#include<stdio.h>#include<stdlib.h>structlinkRec{intdata;structlinkRec*next;};intmain(){intx;structlinkRec*head,*p,*rear;head=......
  • 应用案例 | 基于三维视觉的PCB板检测系统解决方案
    Part.1 引言在现代化电子产品中,印刷电路板(又称PCB板)是电子行业中的重要器件,也是集成各种电子元器件的信息载体。PCB板在电子领域中有广泛的应用,其质量的好坏直接影响到产品的性能。随着PCB板开发的进步,制作工艺日益朝高密度、超薄型、细间距的要求发展,其元器件上的线宽、间距等达......
  • Shell必备三剑客
    Top目录Sed——三剑客之一基本格式选项及含义命令flags标记及功能支持正则表达式,扩展正则表达式高级命令命令格式注意:命令示例字符串替换----'s'行内容替换——'c'删除——'d'添加行——'i'和'a'打印——'p'写文件——'w'读文件——'r'退出命令——'q'添加空白行高级玩法参考......
  • 【RPA学习天地】RPA爬取网页数据典型案例解析——芯片价格查询记录自动化
    关于RPA学习天地www.rpa-learning.comRPA学习天地致力于各大主流RPA厂商的产品使用培训,自2021年起,我们推出了各类RPA开发者培训课程,两年的时间已经为超过千位的RPA学员的成长保驾护航,学员成员涵盖金融、制造业、电商与零售业、物流业以及高科技行业等领域。RPA学习天地始终紧跟行业......