最近学校在搞C语言的实习(其实就是做题),特分享一下我的做题思路,虽然写的有些屑,但希望能帮到同学们。

模块1(选2题)

1.输入两个正整数m和n,求其最大公约数和最小公倍数。

#include <stdio.h>
int main() {int m, n;scanf_s("%d,%d", &m, &n);//输入2个数int max = m, min = n;//   给输入的2个数字按大小排序,方便后面的调用if (m < n) {max = n;min = m;}int maximumCommonFactor;// 定义最大公约数变量int minCommonMultiple;// 定义最小公倍数变量if (max % min == 0)            //1个数能被另1个数整除,它们的最大公因数是较小的那个数maximumCommonFactor = min;else {int temp = max % min;    //temp变量是大数对小的数取余后的结果if (max % temp == 0 && min % temp == 0)//如8和10maximumCommonFactor = temp;else maximumCommonFactor = 1;//如17和9}minCommonMultiple = m * n / maximumCommonFactor;//两个数的乘积=它们最大公因数和最小公倍数的乘积printf("%d和%d的最小公倍数是%d,最大公因数是%d", m, n, minCommonMultiple, maximumCommonFactor);//输出结果}

2.如果一个四位数等于它的每一位数的4次方之和,则称为玫瑰花数,比如:1634=1^4+6^4+3^4+4^4,编程输出所有的玫瑰花数。

#include<stdio.h>
#include<math.h>
int main() {int ge, shi, bai, qian;       //定义四个位上的数int number;for (number = 1000; number < 10000; number++) {  // 对四位数进行遍历ge = number % 10;shi = number / 10 % 10;bai = number / 100 % 10;        //获取一个四位数每位上的值qian = number / 1000;if (pow(qian, 4) + pow(bai, 4) + pow(shi, 4) + pow(ge, 4) == number)   //判断是否是玫瑰花数printf("%d  ", number);     //输出玫瑰花数}
}

模块2(选2题)

1.数组 a[M]中有 m 个元素(m<M),数组 b[N]中有 n 个元素(n<N),且 m+n≤M,将 a、b两个数组按存放的整数升序排序并合并放入数组 a 中。

 #include <stdio.h>
#define M 100000
#define N 100000
int main() {int a[M];//定义数组aint b[N];//定义数组bint m, n;//定义两个数组的元素数量
input:  printf("请输入2个数组元素数量:");scanf_s("%d,%d", &m, &n);//输入2个数组的元素数量if (m > M || n > N || m + n > M)//防止输入的元素数量不符合题目要求{printf("error! please input again!");goto input;}printf("现在给a数组赋值");for (int i = 0; i < m; i++)//给a数组元素赋值scanf_s("%d", &a[i]);printf("现在给b数组赋值");for (int j = 0; j < n; j++)//给b数组元素赋值scanf_s("%d", &b[j]);for (int j = 0, i = m; j < n; i++, j++)//将b数组的元素全部加到a数组a[i] = b[j];int temp = 0;//定义一个辅助变量,用于交换2个变量的值for (int i = 0; i < m + n - 1; i++) {//给a数组元素升序冒泡排序for (int j = 0; j < m + n - 1 - i; j++) {if (a[j] > a[j + 1]) {temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}}for (int i = 0; i < m + n - 1; i++)//输出排序后a数组printf("%d  ", a[i]);}

2.生成一个10元素构成的一维数组,数组元素由用户随机输入。要求:先按照升序排列并输出。再输入1个数,按照升序的规律将其插入并输出。

 #include <stdio.h>
int main() {int arr[10]; //定义一个数组存储for (int i = 0; i < 10; i++) {scanf_s("%d", &arr[i]);   //用户依次输入10个元素存入数组}int temp = 0;for (int i = 0; i < 9; i++) {           //采用冒泡排序给数组元素升序排序for (int j = 0; j < 9 - i; j++) {if (arr[j] > arr[j + 1]) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}for (int i = 0; i < 10; i++)       //输出排完序后的原数组printf("%d ", arr[i]);printf("现在请再输入一个整数:");int m;scanf_s("%d", &m);              //再输入一个整数if(m>arr[9]){              //如果m比原来最大的数还大,直接放末尾for (int i = 0; i < 10; i++)printf("%d ", arr[i]);printf("%d ", m);}else if (m < arr[0]) {   //如果m比最小的数还小,直接放开头printf("%d ", m);for (int i = 0; i < 10; i++)printf("%d ", arr[i]);}else {     for (int i = 0; i < 10; i++) {//m既不是最大也不是最小数的情况if (m > arr[i])   //和每个元素比较,如果m相对大就不输出mprintf("%d ", arr[i]);else {//和每个元素比较,如果m相对小就先输出m再输出数组元素printf("%d ", m);  printf("%d ", arr[i]);}}}
}

模块3(选2题)

1.读取文件中的字符串,统计从“a”到“z”26个字母各自出现的次数,并将结果放入数组中。如文件中有字符串 abcdefgabcdeabc,输出 33322110000000000000000000。

#include<stdio.h>
int a[26];int main()
{FILE *file;file=fopen("D:\\a.txt","r");          //打开文件char ch[100000],c;        //定义数组存放文件字符串fscanf(file,"%s",ch);         //获取字符串for(int i=0;ch[i];i++)a[ch[i]-'a']++;//遍历for(int i=0;i<26;i++)printf("%d",a[i]);fclose(file);return 0;
}

2.读入一个文件,文件中包含字母,数字,空格,标点符号等。请统计文件中的字母,数字,空格和其他符号的数目,在屏幕上显示。

#include <stdio.h>
int main(){int num=0,other=0,chara=0,space=0;//定义四个变量存储对应的数量 FILE *file;file =fopen("D:\\b.txt","r");//读取文件 char ch[100000],c;fgets(ch,100000,file);//将文件内的字符串输入到字符数组 fclose(file); //关闭文件 for(int i=0;ch[i];i++){//根据ASCII码给对应变量++ if((ch[i]>='a'&&ch[i]<='z')||(ch[i]>='A'&&ch[i]<='Z'))chara++;else if(ch[i]>='0'&&ch[i]<='9')num++;else if(ch[i]==32)space++;else other++;}printf("字母个数:%d\n",chara);//输出 printf("数字个数:%d\n",num);printf("空格个数:%d\n",space);printf("其他符号个数:%d\n",other);}

模块4(选1题)

1.比较两个分数的大小。

#include <stdio.h>
int main(){int a1,a2,b1,b2;//定义2个分数的部位 int temp1,temp2; //用于表示通分后的分子
input:  printf("请输入第一个分数:\n");//获取分数 scanf("%d/%d",&a1,&a2);printf("请输入第二个分数:\n");scanf("%d/%d",&b1,&b2);if(a2==0||b2==0)//检验是否输入了正确的分数 {printf("分母不能为0!请重新输入!\n");goto input;}if(a2==b2){//分母一样,比分子大小 if(a1>a2)printf("%d / %d比%d / %d大",a1,a2,b1,b2);else if(a1<a2)printf("%d / %d比%d / %d小",a1,a2,b1,b2);else printf("2个分数一样大"); }else if(a2!=b2){//分母不同,先通分再比较分子 temp1=a1*b2;temp2=b1*a2;if(temp1>temp2)printf("%d / %d比%d / %d大",a1,a2,b1,b2);else if(temp1<temp2)printf("%d / %d比%d / %d小",a1,a2,b1,b2);else printf("2个分数一样大"); }
}

模块5(选1题)

1.饭卡管理程序。
(1). 建立饭卡信息:添加若干人的饭卡号、姓名、金额,要求饭卡号是唯一的;
(2). 买饭:要求用户输入饭卡号、饭费,系统自动从该人的饭卡中减去饭钱,并分别显示买饭前
后的金额,如果原来饭卡中的余额不足 5 元,则不能买饭,显示“余额不足,请充值”;
(3). 充值:输入饭卡号、充值金额,充值完成后显示充值前后的金额。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
# define max 10
struct Card
{ char Id[100];     //饭卡号 char Name[100];       //名字float money;        //饭卡余额} Card [max];         //定义结构体最大人数
int Count=0;           //已经办理饭卡的数量void menu(){                             //菜单 printf("\n"); printf("\t\t\t\t   │              食堂饭卡管理系统              │\n");       printf("\t\t\t\t   │                 1. 办卡                    │\n");printf("\t\t\t\t   │                 2. 存款                    │\n");printf("\t\t\t\t   │                 3. 就餐                    │\n");printf("\t\t\t\t   │                 4.退出                     │\n");printf("\n");printf("\t\t\t\t\t\t  请您选择(1-4):\t");
}void Save()//保存信息
{FILE *fp;//打开文件保存信息所用的指针int i;fp= fopen("饭卡管理数据.txt", "w");//建立一个名字为:饭卡管理数据.txt的文件for(i=0; i<Count; i++)//for循环储存每个卡的信息{fprintf(fp,"%d  %s  %s  %.2f \n",Count,Card[i].Id,Card[i].Name,Card[i].money);//储存标记 学号 姓名 饭卡余额  }fclose(fp);//关闭文件
}void Create_card()//办卡
{                 char a;fflush(stdin); //清空缓存区 printf("\n请输入卡号:");gets( Card[Count].Id);//获取卡号for(int i=0;i<Count;i++){if(strcmp(Card[Count].Id,Card[i].Id)==0){//保证卡号唯一 printf("该用户已存在!\n"); printf("\n请重新输入卡号:");gets( Card[Count].Id);//获取卡号}}fflush(stdin);printf("\n请输入姓名:");gets(Card[Count].Name);//获得名字fflush(stdin);printf("\n请输入饭卡余额:");scanf("%f",&Card[Count].money);//获得饭卡费printf("\n");fflush(stdin);                           printf("建立成功!\n");printf("轻触回车以继续!");a=getchar();Count++;Save();
}void Exit(){//退出程序 Save();exit(0);
}void Consume()//消费
{int i;float m;char a;char num[20];do{system("cls");fflush(stdin);printf("\n请输入您的卡号:");gets(num);fflush(stdin);printf("\n请输入价格:");scanf("%f",&m);if(m<=0)printf("\n请正确输入饭费!\n");else {for(i=0; i<Count; i++)if(strcmp(num,Card[i].Id)==0)     //字符串比较寻找饭卡break;if(i==Count)printf("该用户不存在!\n");else if(Card[i].money < m||Card[i].money<5)               //小于5或者比要的钱少则提醒充卡费{printf("余额不足,请充值!!\n");printf("该用户余额:%5.2f 元\n",Card[i].money); }else{printf("\n消费前:%5.2f\n",Card[i].money);Card[i].money=Card[i].money-m;            //实现饭卡费的扣除printf("\n消费后:%5.2f\n",Card[i].money);}}printf("\n是否继续消费?\n请输入【y或n】:\t\t");fflush(stdin);a=getchar();}while(a=='y');//do  while循环Save();
}void Recharge_money()//充值饭卡
{int i;float m;char num[10];char a;do{system("cls");fflush(stdin);printf("\n请输入您的卡号:");gets(num);fflush(stdin);printf("\n请输入您的充值金额:");scanf("%f",&m);if(m<=0)printf("输入错误!\n");else{for(i=0; i<Count; i++)if(strcmp(num,Card[i].Id)==0)            //字符串比较寻找饭卡break;if(i==Count)printf("该用户不存在!\n");else{printf("\n原余额:%5.2f\n",Card[i].money);Card[i].money=Card[i].money+m; //实现饭卡的充钱printf("\n现余额:%5.2f\n",Card[i].money);}}printf("\n是否继续充值?\n请输入【y或n】\t\t");fflush(stdin);a=getchar();}while (a=='y');Save();
}int main()
{int Option;int i=0;FILE *fp;if((fp=fopen("饭卡管理数据.txt","a+"))==NULL)// 打开文件并且让fp指向 文件{printf("Can not open file\n");Save();}while(!feof(fp))  //读取一组数据后指针指向下一组数据,并且判断是否指向最后一行{fscanf(fp,"%d %s %s %f\n",&Count,&Card[i].Id,&Card[i].Name,&Card[i].money);//分别读取txt文档中的 标记,学号,姓名,余额信息并存入数组i++;}
fclose(fp);//关闭文件
do{ system("cls");//清屏 menu();//打开菜单 fflush(stdin);scanf("%d",&Option);switch(Option)//使用switch语句对输入的功能进行呈现 {case 1:Create_card();break;case 2:Recharge_money();break;case 3:Consume();break;case 4:Exit();break;default : printf("\n输入错误!\n");system("pause"); }}while (Option!=4);return 0;
}

希望能对同学们有所帮助

南京林业大学程序设计语言实习题解相关推荐

  1. 南京林业大学2019c语言题库,2020年南京林业大学风景园林学院考研真题试卷及试题答案,C程序设计考研试题下载...

    更多考研真题样张如下, 说明:本站提供的南京林业大学风景园林学院考研真题来源于南京林业大学研究生院,除标注有"回忆版"字样的试题外,其余均为原版扫描,权威可靠:回忆版试题由当年参加 ...

  2. 关于程序设计语言实习题目的题解

    1.统计各年龄段人数.N个年龄通过调用随机函数获取,编写函数把0~9岁年龄段的人数放入数组下标[0]中,把10~19岁年龄段的人数放入数组下标[1]中,以此类推,把100~120岁年龄段的人数放入数组 ...

  3. 南京林业大学c语言选修题库,南京林业大学计算机正版题库(参考).doc

    1(152).下列关于字节的四条叙述中,正确的一条是( ). A) 字节通常用英文单词"bit"来表示,有时也可以写作"b" B) 目前广泛使用的Pentium ...

  4. 北京林业大c语言程序设计考试试题,2020年南京林业大学2017考研真题考研真题试卷及试题答案,C程序设计考研试题下载...

    说明:本站提供的南京林业大学2017考研真题考研真题来源于南京林业大学研究生院,除标注有"回忆版"字样的试题外,其余均为原版扫描,权威可靠:回忆版试题由当年参加硕士研究生入学考试考 ...

  5. c语言程序设计实验与案例数组,新书推荐 | C语言程序设计+实验与题解

    原标题:新书推荐 | C语言程序设计+实验与题解 图书简介 本书以标准C为框架.按照紧扣基础和面向应用的原则,介绍了C语言程序设计的基本规范.思路和方法.本书从培养学生的实际编程能力出发,注重实例教学 ...

  6. c程序设计语言 题解,C程序设计语言综合设计》 解题报告

    <C程序设计语言综合设计> 解题报告>由会员分享,可在线阅读,更多相关<C程序设计语言综合设计> 解题报告(16页珍藏版)>请在人人文库网上搜索. 1.程序设计语言 ...

  7. 南林计算机课程表,南京林业大学课程表.doc

    南京林业大学课程表 班级:05901.05902 学期:08-09学年第1学期 课程名称学时教师上课进程合班数课程名称学时教师上课进程合班数制浆造纸设备安装与维修24王淑梅1-82造纸化学24戴红旗1 ...

  8. 南京林业大学全国计算机二级,南京林业大学2017年3月全国计算机等级考试报名通知...

    2017年春季江苏省高校计算机等级考试报名通知 各学院: 根据省计算机等级考试中心<关于二○一七年春季全省高等学校计算机等级考试报名工作的通知>的文件精神,现将报名的有关事宜通知如下∶ 一 ...

  9. 读经典《C程序设计语言》(The C Programming Language)

    作为软工专业的学生,大三下,我重新开始学习C语言,为什么呢?因为我发现在大学生涯里,我花了很多时间去刷GPA,花了很多时间去做了很多无谓的事情,以至于马上就面临找实习.找工作.自己甚至连一门语言都没有 ...

最新文章

  1. ASP.NET页面传值的几种方式
  2. 天联高级版客户端_天联客户端登录的KIS旗舰版打印单据问题
  3. 一篇文章解决机器学习,深度学习入门疑惑
  4. Lunar New Year and Number Division
  5. IOS开发基础之网易新闻UICollectionView的使用第3天
  6. Leetcode 771. Jewels and Stones
  7. redis应用之——关注、被关注
  8. ImageView、ImageButton、Button三者比较
  9. java笔试面试题(五)
  10. python appium 并行多设备_appium 多个设备同时执行
  11. 剑三重制版怎么同步插件_剑网三重制版怎么导入插件 | 手游网游页游攻略大全...
  12. Eucalyptus云平台搭建
  13. Geoserver——矢量切片1
  14. 《Effective C++》 目录
  15. android闹钟报告分析,Android AlarmClock 闹钟应用 简单分析
  16. Annotation(注解)是什么?
  17. 实现Office的COM插件
  18. ddn高性能服务器,全球IO500最新榜单公布,Intel、DDN、浪潮等位列前5
  19. 环境变量:系统变量和用户变量
  20. 2022年我自己的主导价值观

热门文章

  1. 商科留学生如何使用ChatGPT?这些技巧不可错过
  2. python爬虫学习34
  3. .onReceive (SwiftUI中文文档手册)
  4. 查询MAC地址所属生产厂商
  5. opencv内存释放
  6. 国家中小学网络云平台正式上线,百度保障1.8亿学生线上学习不卡顿
  7. C#进行CAD二次开发学习笔记--02
  8. UML系列文章(14)---对象图
  9. 为什么使用消息队列、消息队列优缺点和适用场景?
  10. 基于android失物招领系统实训报告,基于Android系统的失物招领平台的设计与实现论文.doc...