C语言实验
练习题
秀一(隐匿版
风味酸牛乳
展开
-
实验10.3 删除单项链表偶数节点
【问题描述】输人若干个正整数(输入-1 为结束标志),并建立个单向链表,将其中的偶数值结点删除后输出。试编写相应程序。【样例输入】1 2 3 4 5 6 7 -1【样例输出】1 3 5 7#include <stdio.h>#include <stdlib.h>#include <string.h>struct zhengshu{ int n; struct zhengshu *next;};//新建链表struct zhengshu原创 2020-12-06 23:20:43 · 1346 阅读 · 1 评论 -
实验10.2 逆序建立链表
【问题描述】输人若干个正整数(输人-1为结束标志),要求按输人数据的逆序建立一个链表,并输出。试编写相应程序。【样例输入】1 2 3 4 5 6 7 -1【样例输出】7 6 5 4 3 2 1#include <stdio.h>#include <stdlib.h>#include <string.h>struct zhengshu{ int n; struct zhengshu *next;};//新建链表struct zhengs原创 2020-12-06 08:59:22 · 1425 阅读 · 0 评论 -
实验10.1 单向链表的建立
【问题描述】输人若干个学生信息(包括学号、姓名和成绩),输人学号为0时输人结束,建立一个单向链表,再输人一个成绩值,将成绩大于等于该值的学生信息输出。试编写相应程序。【样例输入】1 zhang 782 wang 803 li 754 zhao 85080【样例输出】2 wang 804 zhao 85#include <stdio.h>#include <stdlib.h>#include <string.h>struct stud_node{原创 2020-12-05 14:16:31 · 1575 阅读 · 0 评论 -
实验9.2.3 递归实现整数的顺序、逆序输出
【问题描述】输入一个正整数,编写两个递归函数,分别实现对其按位顺序、逆序输出。【输入形式】一个正整数【输出形式】先顺序输出该整数的每一位值,中间用空格分开;再逆序输出该整数的每一位值,中间用空格分开【样例输入】1024【样例输出】1 0 2 44 2 0 1#include<stdio.h>void posi(int n){ if (n>=10) posi(n/10);//使n一直除到两位数; printf("%d ",n%10);//若n<原创 2020-11-30 22:34:18 · 3775 阅读 · 4 评论 -
实验9.2.2 十进制转二进制
【问题描述】输入一个正整数n,输出其转换为二进制后的形式。要求定义并调用函数dectobin(n),其功能是输出n的二进制(在函数中输出)。【输入形式】一个正整数【输出形式】该正整数的二进制形式【样例输入】100【样例输出】1100100#include<stdio.h>void dectobin(int n){ if (n/2!=0) { dectobin(n/2); printf("%d",n%2); } else原创 2020-11-30 22:25:54 · 1591 阅读 · 0 评论 -
实验9.2.1 用递归求阶乘的和
【问题描述】输入一个整数n(0<n<=10),求1!+2!+3!+……+n!。定义并调用函数fact(n),计算n!,函数类型是double。【输入形式】一个整数【输出形式】一个浮点数,但不保留小数部分。【样例输入】3【样例输出】9#include <stdio.h>double fact(int n){ int result = 0; if (n==1) result = 1; if (n>1) resul原创 2020-11-30 22:21:35 · 3788 阅读 · 0 评论 -
实验9.1 递归计算函数值Ack(m,n)的值
【问题描述】递归计算函数Ack(m,n)的值,输入两个整数m和n(m和n均大于0 ),输出函数Ack的值。Ack(m,n)的定义为:当m=0时,Ack(m,n)=n+1;当n=0且m>0时,Ack(m,n)=Ack(m-1,1);当n>0且m>0时,Ack(m,n)=Ack(m-1,Ack(m,n-1));【输入形式】两个整数m和n【输出形式】函数的名称,具体参数和计算结果。【样例输入】2 3【样例输出】Ack(2,3)=9#include <stdio.h&g原创 2020-11-30 22:20:15 · 4337 阅读 · 1 评论 -
实验8.4 有理数比较
【问题描述】编写函数CompareRational(),比较两个有理数的大小,该函数的参数为两个有理数(结构体类型,包含分子分母两个整数),若第一个有理数小于第二个,返回一个负数;若相等,返回0;若第一个有理数大于第二个,则返回正数。以分数的形式输入两个有理数,输出比较结果。【输入形式】两个有理数,分数形式,格式为:“分子/分母”【输出形式】输入的两个有理数,中间用比较运算符连接表示其大小关系。有理数格式同上。【样例输入】1/2 3/4【样例输出】1/2<3/4#include <原创 2020-11-26 16:16:22 · 4849 阅读 · 2 评论 -
实验8.3 从书籍结构体中查找定价最高的书籍
【问题描述】从键盘输入n(n<=10)本书的名称和定价并存入结构体数组中,从中查找定价最高的和最低的数的名称及定价,并输出,价格输出保留2位小数。【样例输入】3Programming_in_c 21.5Programming_in_VB 18.5Programming_in_Delphi 25.0【样例输出】18.50,Programming_in_VB25.00,Programming_in_Delphi#include <stdio.h>int main(){原创 2020-11-26 15:40:00 · 4417 阅读 · 0 评论 -
实验8.2 计算学生信息中成绩的平均值
【问题描述】建立一个学生的结构记录,包含学号、姓名和成绩,输入整数n(n<=10),再输入n个学时的基本信息,计算并输出他们的平均成绩。【样例输入】31 zhang 702 wang 803 qian 90【样例输出】80.00#include <stdio.h>int main(){ int n,i; float average,total=0;struct student{ int num; char name; int g原创 2020-11-26 15:38:36 · 4244 阅读 · 2 评论 -
实验8.1 时间换算
【问题描述】用结构体类型表示时间内容(时间以时分秒表示)输入一个时间数据,在输入一个秒数n(n<60),以h: m :s的形式输出过了n秒后的时间。(超过24点以0点开始)【输入形式】输入的时间必须是以"时:分:秒"格式输入【输出形式】同样以格式"时:分:秒"输出【样例输入】11:59:4030【样例输出】12:0:10#include <stdio.h>int main(){ int ss; struct time{ int h,m,s原创 2020-11-26 15:36:38 · 7165 阅读 · 0 评论 -
实验7.2.5 使用函数实现字符串复制
【问题描述】输入一个字符串t和正整数m,将字符串t中从第m个字符开始的全部字符复制到字符串s中,再输出字符串s。要求使用字符指针定义并调用函数strmcpy(s,t,m),其功能是将字符串t中的第m个字符开始的全部字符,复制到串s中。【样例输入】happy new year7【样例输出】new year#include<stdio.h> void strmcpy(char *sp,char *tp,int m){ int j,k; for (j=m-1,k原创 2020-11-24 08:50:49 · 8621 阅读 · 4 评论 -
实验7.2.4 字符串逆序
【问题描述】设计一个函数void f(char *p),对p指向的字符串进行逆序,要求函数不能定义任何数组、不能调用任何字符串处理函数。在主函数中输入字符串,调用f(),输出逆序后的字符串。【样例输入】abcd【样例输出】dcba#include<stdio.h>void f(char *p){ int i,t,n=0; while (p[n]!='\0') { n++; } for (i=0;i<=(n-1)/2; i++)原创 2020-11-24 08:48:20 · 1811 阅读 · 0 评论 -
实验7.2.3 在数组中查找指定元素
【问题描述】输入一个正整数n,再输入n个整数存入数组中,再输入一个整数x,在数组中查找x,如果找到则输出相应的下标,否则输出“Not found”。要求定义并调用函数search(list,n,x),其功能是在数组中查找元素x,若找到则返回相应下标,否则返回-1;【样例输入】31 2 -62【样例输出】1#include<stdio.h>void printArray(int a[],int n){ for(int i=0;i<n;i++)原创 2020-11-21 17:06:56 · 3695 阅读 · 0 评论 -
实验7.2.2 使用函数进行选择法排序
【问题描述】定义函数void sort(int a[], int n),用选择法对数组a中的元素升序排序。主函数中输入n(n<=10)再输入n个数放入数组,调用函数排序后输出数组内容。【样例输入】61 5 -9 2 4 -6【样例输出】-9 -6 1 2 4 5#include<stdio.h>void sort(int p[],int n){int i,j,t;for(i=0;i<n-1; i++){ for(j=i+1;j<n;j++) if原创 2020-11-21 16:52:13 · 5323 阅读 · 1 评论 -
实验7.2.1 利用指针实现拆分实数
【问题描述】拆分实数的整数和小数部分:要求自定义一个函数void splitfloat(float x,int *intpart,flaot *fracpart)。其中x是要被拆分的实数,intpart和fracpart分别是将实数拆分出来的整数和小数部分。通过定义的主函数,编写对应的splitflaot函数内容。【样例输入】12.4567【样例输出】The intpart is 12The fracpart is 0.456700#include<stdio.h> #includ原创 2020-11-21 16:49:46 · 1336 阅读 · 0 评论 -
实验7.1 寻找最长的字符串
【问题描述】输入5个字符串,输出其中最长的字符串。通过输入函数scanf("%s",sx)的形式输入字符串。【输入形式】li wang zhang jin xian【输出形式】zhang原创 2020-11-21 16:44:11 · 2898 阅读 · 4 评论 -
实验6.8 字符串转换成十进制整数
【问题描述】输入一个以’#‘结束的字符串,滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数的字符串,然后将其转化为十进制数后输出。如果过滤后字符串的首字符为’-’,代表的是负数。【输入形式】一个字符串【输出形式】一个十进制整数【样例输入】+P-xf4±1!#【样例输出】-3905【样例说明】输入的内容,按十六进制数要求将数值(09,AE)和符号(在数值之前的’-’)保留,得到-f41,转换为十进制后是-3905#include <stdio.h>#include原创 2020-11-18 22:37:21 · 1291 阅读 · 0 评论 -
实验6.7 输出螺旋方阵外边
【问题描述】螺旋方阵,是指对任意给定的n,将1到n×n的数字从左上角第一个格子开始,按顺时针螺旋方向顺序填入n×n的方阵里(向内螺旋)。输入一个正整数,输出螺旋方阵的外边内容(仅输出外边内容,有能力的同学可考虑输出整个螺旋方阵)。【输入形式】一个正整数n(n小于等于6)【输出形式】螺旋方阵外边。【样例输入】5【样例输出】1 2 3 4 516 0 0 0 615 0 0 0 714 0 0 0 813 12 11 10 9#include <st原创 2020-11-18 14:13:55 · 687 阅读 · 0 评论 -
实验6.6 查找指定字符
【问题描述】输入一个字符,再输入一个以回车结束的字符串(少于80个字符)在字符串中查找该字符。【输入形式】一个字符后,再输入一个字符串【输出形式】一个整数,说明该字符在字符串中的位置,若无该字符,则显示"Not Found"【样例输入】mprogramming【样例输出】7【样例说明】查找并输出第一个字符的位置,位置从1开始计数。#include <stdio.h>int main(){ int i,k,find=0; char letter原创 2020-11-18 11:38:00 · 5086 阅读 · 0 评论 -
实验6.5 寻找二维数组中的鞍点
【问题描述】输入一个4×4的矩阵中的所有元素,设其最多只有一个鞍点,寻找该鞍点,如果有,则输出其下标及对应的值,若没有,则输出"NO"。鞍点是指二维数组中的一个元素,在该行上最大,在该列上最小。【输入形式】输入16个整数,存放在一个4×4的二维数组中【输出形式】若有鞍点,则输出其下标(两个整数)和对应的值,若无鞍点,则输出"NO"。【样例输入】1 7 4 14 8 3 61 6 1 20 7 8 9【样例输出】[2][1] 6#include <stdio.h>原创 2020-11-18 11:14:48 · 2437 阅读 · 0 评论 -
实验6.4 对数组中数据进行排序
【问题描述】输入10个数到数组中,对数组中的数按由小到大排序并输出【输入形式】10个整数,用空格分隔【输出形式】10个由小到大的整数,用空格分隔【样例输入】1 3 5 2 9 4 6 0 7 8【样例输出】0 1 2 3 4 5 6 7 8 9#include <stdio.h>int main() { int i,j,a[10],index; for (i=0; i<=9; i++) { scanf("%d",&a[i]);原创 2020-11-17 09:42:18 · 1187 阅读 · 0 评论 -
实验6.3 找出不是两个数组共有的元素
【问题描述】输入一个正整数n(1<n<10),再输入n个整数数放入数组a中;然后输入一个正整数m(1<m<10),再输入m个整数数放入数组b中,找出所有不属于这两个数组的共有元素并输出。【输入形式】先输入一个正整数n后,输入n个整数,用空格分隔。再输入一个正整数m,再输入m个整数,用空格分隔。【输出形式】一组整数,用空格分隔数据【样例输入】51 3 5 7 961 2 3 4 5 6【样例输出】7 9 2 4 6...原创 2020-11-17 09:40:15 · 4514 阅读 · 2 评论 -
实验5.4 小数分数转换
【问题描述】从标准输入中输入一个小数,编写程序将其转换成相应的分数显示,即转换为几又几分之几。要求:1、输入的小数包括整数部分、小数点和小数部分;整数部分和小数部分分别最多有7位数字;整数部分可以为0,若整数部分为非零整数时,则其最高位不为0;小数部分的末尾数字不为零。2、输出的分数应为最简分数,由三部分数字组成:第一部分数字代表整数部分(若分数小于1,则为0,否则输出相应分数的整数部分,且最高位不为0),第二部分数字代表分子,第三部分数字代表分母,分子比分母小且不能再约分。【输入形式】从标准输原创 2020-11-16 22:50:45 · 3787 阅读 · 1 评论 -
实验6.2 将数组中的数逆序存放
【问题描述】输入一个正整数n(1<n<10),再输入n个整数,存入数组中,再将数组中的数,逆序存放并输出【输入形式】先输入一个整数n,再输入n个整数,用空格间隔【输出形式】输出n个整数,用空格间隔【样例输入】51 2 3 4 5【样例输出】5 4 3 2 1#include <stdio.h>int main(){ int num,i,j,index,temp; scanf("%d",&num); int a[num];原创 2020-11-16 22:25:08 · 5820 阅读 · 5 评论 -
实验6.1 在有序数组中插入数据并保持有序
【问题描述】已知一个整数数组大小为6,先输入6个有序数据。再输入一个正整数,将输入的整数放入到数组中,并使其依然保持有序(数组只存放6个元素,多出的数据会被舍弃)【输入形式】1 3 5 7 9 118【输出形式】1 3 5 7 8 9#include <stdio.h>int main (){ int a[6],n,i; for (i=0; i<=5; i++) scanf("%d",&a[i]); scanf("%d原创 2020-11-16 15:47:14 · 3598 阅读 · 2 评论 -
实验5.3 打印正六边形
【问题描述】编写一个程序,输入一个正整数N,在屏幕上用@,打印以N为边长的正六边形。【输入形式】输入一个正整数N。【输出形式】屏幕上输出以N为边长的正六边形。【样例输入】4【样例输出】@@@@【样例说明】输入的为一个正整数,打印输出一个以这个正整数为边长的正六边形.#include <stdio.h>#include <math.h>int main(){ int n,i; scanf("%d",&n); for (i=1; i&原创 2020-11-15 10:45:49 · 1136 阅读 · 0 评论 -
实验5.1 取只出现一次的数
【问题描述】从键盘输入10个整数,输出这10个数中仅出现一次的数。如果没有这样的数,则输出:None。【输入形式】从键盘输入10个整数。【输出形式】按出现的次序,输出该10个数中仅出现一次的数。如没有这样的数,则输出:None。【样例输入】-12 36 72 36 87 99 87 87 -12 -35【样例输出】72 99 -35【样例输入】-12 36 72 36 87 99 72 87 -12 99【样例输出】None#include <stdio.h>int原创 2020-11-12 14:59:58 · 1120 阅读 · 0 评论 -
实验4.4 水仙花数
水仙花数:输入两个正整数m和n(m>=1,n<=1000),输出m到n之间的所有水仙花数。水仙花数是指各位数字的立方和等于其自身的数,例如153的各位数字的立方和是13 +53+33=152,即为水仙花数。试编写相应。输入输出示例100400153370371#include <stdio.h>#include <math.h>int main() { int m,n,i; printf("enter m,n:"); scanf(原创 2020-11-08 16:00:06 · 1409 阅读 · 0 评论 -
实验4.3 换硬币
换硬币:将一笔零钱(大于8分,小于1元,精确到分)换算成1分、2分和5分的硬币组合。输入金额,输出共有多少种换法。要求硬币面值按5分、2分、1分顺序,各类硬币数量依次按从大到小的顺序,输出各种换法。试编写相应程序。输入输出示例10fen5=1,fen2=2,fen1=1,total=4fen5=1,fen2=1,fen1=3,total=5count=2#include <stdio.h>int main(){ int money,i; printf("e原创 2020-11-08 15:21:54 · 4838 阅读 · 0 评论 -
实验4.1 哥德巴赫猜想
验证哥德巴赫猜想:任何一个大于等于6的偶数均可表示为两个素数之和。例如6=3+3,8=3+5,……,18=5+13。要求将输入的一个偶数表示成两个素数之和。试编写相应程序。#include <stdio.h>#include <math.h>int main(){int n;printf(“enter n:”);scanf("%d",&n);for (int a=3; a<=n/2; a++) {//从3开始取素数是我没想到的 int b=n-a原创 2020-11-07 20:11:44 · 1311 阅读 · 0 评论 -
实验4.2 求值
用两种方法求e:输入一个正整数n,用两种方法分别计算下式的和(保留4位小数)。e=1+1/1!+1/2!+1/3!+……+1/n!1⃣️使用一重循环,不使用自定义函数。2⃣️定义和调用函数fact(n)计算n的阶乘。解1⃣️#include<stdio.h>int main(){int n,i,item;double sum;printf(“enter n:”);scanf("%d",&n);item=1;sum=1;for (i=1; i<=n; i+原创 2020-11-07 20:12:29 · 3217 阅读 · 0 评论