自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 03-树2 List Leaves (25分)

思路跟何老师讲的一样,无非就是把队列和二叉树的层序遍历组合起来。#include<stdio.h>#include<stdlib.h>#define MAX 10#define null -1typedef struct QNode * Queue;struct QNode{ int front,rear; int *data; int Maxsize;};typedef struct TreeNode * Tree;struct TreeNode{ in.

2020-08-11 19:25:14 194

原创 02-线性结构1 两个有序链表序列的合并 (15分)

全文代码(含题目)#include <stdio.h>#include <stdlib.h>typedef int ElementType;typedef struct Node *PtrToNode;struct Node { ElementType Data; PtrToNode Next;};typedef PtrToNode List;List Read(); /* 细节在此不表 */void Print( List L ); /*.

2020-08-06 20:52:27 243

原创 C 语言 实验11-2-6 奇数值结点链表 (20分)

struct ListNode *readlist(){ struct ListNode *p, *head=NULL, *tail; int n; scanf("%d", &n); while (n != -1){ p = (struct ListNode*)malloc(sizeof(struct ListNode)); p->data = n; p->next = NULL; if (head == NULL) head = p; else..

2020-08-03 08:31:53 395

原创 C语言 实验11-2-5 链表拼接 (20分)

思路很简单,请听我娓娓道来。建立一个新链表,然后遍历两个链表,每次遍历记录下符合条件的,并且加入到新链表中。最后把没有遍历完的接到新链表上。struct ListNode *mergelists(struct ListNode *list1,struct ListNode *list2){ if (list1 == NULL) // 先处理一下某个为空的特殊情况 return list2; if .

2020-08-02 17:07:27 918

原创 C语言 实验11-1-9 藏尾诗 (20分)

思路:因为要找最后一个字,而每个字符串都是以 结束符’\0’ 作为最后一个元素。而且结束符的位置容易找到。找到以后减2,就是最后一个字的起始列下标拉#include<stdio.h>int main (void){ char poem[4][20], mean[10]; int i,j=0; for (i=0; i<4; i++) scanf("%s", poem[i]); for (i=0; i<4; i++){ while (poem[i].

2020-08-01 18:34:23 1720

原创 C语言 实验11-1-8 查找子串 (20分)

void ReadString (char s[]){ gets (s);}如下char *search (char *s, char *t){ int i,j,cnt; for (i=0; *(s+i) != '\0'; i++){ int flag = 1; // flag为 1:字符相同 0:反之 if (*(s+i) == *t){ cnt = i; .

2020-08-01 17:52:29 387

原创 C语言 实验11-1-6 指定位置输出字符串 (20分)

小菜鸡心态炸了wwwwwwwww#include<string.h>char *match (char *s, char ch1, char ch2){ char *a,*h; while (*s != '\0'){ if (*s == ch1){ a =s; // 用 a记录此位置,只有 s才能作为返回值,下面的循环又不能改变 s for ( ; *a != '\0'; a++){ printf("%c.

2020-08-01 17:13:15 924

原创 C语言 实验11-1-1 英文单词排序 (25分)

#include<stdio.h>#include<string.h>int main (void){ char str[20][10], temp[10]; int i=0,j,k; gets(str[i]); // 先读入第一个作为循环判断 while (str[i][0] != '#'){ i++; .

2020-08-01 10:36:11 1290

原创 C语言 实验10-5 递归求简单交错幂级数的部分和 (15分)

解法一,借用math库,直接根据题目即可写出#include<math.h>double fn (double x, int n){ double sum; if (n == 1) sum = x; else sum = pow(x,n)*pow(-1,n-1) + fn(x,n-1); return sum;}解法二,比较难理解double fn( double x, int n ){ double sum; if(n==1) sum .

2020-07-31 15:57:05 582

原创 C语言 实验10-1 圆形体体积计算器 (20分)

课本例题啦,细节稍微有点不同。友情提示,此题验证一直错误的,建议看一下PI的精度哦(别问我是怎么知道的,一个小时的代价。。。。。)#include<stdio.h>#define PI 3.1415926535void cal(int sel);double v_ball (void);double v_cylinder (void);double v_cone (void);int main (void){ int sel; while (1) { printf(".

2020-07-31 13:24:50 1010 1

原创 C语言 实验9-10 平面向量加法 (15分)

有个坑,如果两个向量分别是(-0.02,-0.02)和(0,0),如果没有判断那一步的话,答案会出现 -0.0的情况#include<stdio.h>struct xiang{ double x; double y;};int main (void){ struct xiang a,b,t; scanf("%lf %lf %lf %lf", &a.x, &a.y, &b.x, &b.y); double x,y; t.x = a.x + .

2020-07-30 18:02:21 920

原创 C语言 实验9-5 查找书籍 (20分)

噗 没读清题,用了个动态内存分配。。。原来这道题给定了不超过10本书,那就也可以定义数组来做啦。另外求大佬解释一下float和double#include<stdio.h>#include<stdlib.h>struct book{ char name[31]; double price; // 俺也不知道为啥价格要用双精度}; .

2020-07-30 16:10:46 1007

原创 C语言 实验9-1 计算职工工资 (15分)

因为没有给出N的范围,为了节约内存,最好选用动态内存分配。总的来说就是 动态内存分配+结构+结构指针#include<stdio.h>#include<stdlib.h>struct em { char name[10]; float jiben; float fudong; float zhichu; float gongzi;};int main (void){ int n,i; struct em *s; scanf("%d", &n);.

2020-07-30 13:34:17 2267

原创 C语言实验8-1-9 输出学生成绩 (20分)

亮点在动态内存分配#include<stdio.h>#include<stdlib.h>int main (void){ int n,i,*p; double sum=0,max=0,min=100; scanf("%d", &n); p = (int *)calloc(n,sizeof(int)); for (i=0; i<n; i++){ scanf("%d", p+i); if (*(p+i) > max) max = *(.

2020-07-29 18:56:15 1565

原创 C语言 实验8-2-10 IP地址转换 (20分)

思路:八个一组,分四组计算。找到每组开始和结束时临界条件的特点即可。#include<stdio.h>#include<math.h>int main (void){ char str[33]; // 字符串要比需输入的多一个长度,别忘啦结束符 '\0' scanf("%s",str); int i,n=1,sum=0,k=7; for (i=(n-1)*8; i<8*n; i++){ su.

2020-07-29 17:04:21 2450

原创 C语言 实验8-2-9 长整数转化成16进制字符串 (15分)

思路:累除,从16进制的个位开始得到。因此从数组s的末位下标9开始,逐个往前填。最后再把填的元素 提到下标0开始的位置。void f (long int x, char *p){ if (x<0){ *p = '-'; p++; x = -1*x; } if (x == 0) *p = '0'; // 以上先处理一下非正的情况 int m,cnt=0; while (x != 0){ m = x%16; x /.

2020-07-29 14:00:10 1439

原创 C语言 实验8-2-8 字符串排序 (20分)

核心就是选择排序法,注意一点细节问题即可#include<stdio.h>#include<string.h>#define MAXN 80int main (void){ char a[5][80]; int i,j; for (i=0; i<5; i++){ scanf("%s", &a[i]); } char temp[80]; // 中交换两个字符串时 作中间变量 for (i.

2020-07-29 11:12:58 957 2

原创 C语言 实验8-2-7 字符串的连接 (15分)

按照题目说的,调用库函数连接,然后返回基地址即可char *str_cat (char *s, char *t){ strcat(s,t); return s;}

2020-07-29 10:24:27 1048

原创 C语言 实验8-2-5 判断回文字符串 (20分)

思路:把逆序的字符串s存到一个新字符串a里,然后调用函数比较bool palindrome (char *s){ int n=0,i,j=0; char a[MAXN]; // 用来存放逆序的字符串 for ( ; *s != '\0'; s++) //统计一下多少个字符 n++; for (i=n-1; i>=0; i--){ // 把逆序的字符串赋给 a s--; a[j] = *(s); j++; } .

2020-07-29 09:17:13 767

原创 实验8-2-4 使用函数实现字符串部分复制 (20分)

void strmcpy( char *t, int m, char *s ) { char *p; p = t; // 用 p记录一下下标 0的位置,第五行要用 for ( ; *t != '\0'; t++){ if (t >= p+m-1){ // 第五行 *s = *t; s++; } } *s = '\0'; }

2020-07-29 08:30:28 436

原创 C语言 实验8-2-3 删除字符 (20分)

跟数组的思路一样void delchar (char *str, char c){ int i,j=0; for (i=0; *(str+i) != '\0'; i++){ if (*(str+i) != c){ *(str+j) = *(str+i); j++; } } *(str+j) = '\0'; }

2020-07-28 20:25:21 299

原创 实验8-1-7 数组循环右移 (20分)

这道题为啥放在指针这里。。。话说用指针的话咋做呀int ArrayShift (int a[], int n, int m){ int i,b[MAXN]; for (i=0; i<n; i++){ if (i+m < n) //直接后移即可 b[i+m] = a[i]; else //后移超出范围,要从头开始 b[i+m-n] = a[i]; } for (i=0; i<n; i++) .

2020-07-27 14:27:13 317

原创 C语言 实验8-1-3 拆分实数的整数与小数部分 (15分)

用一个强制类型转换即可void splitfloat (float x, int *intpart, float *fracpart){ *intpart = (int)x; *fracpart = x - (int)x;}

2020-07-27 12:29:39 1064

原创 C语言 实验7-3-10 删除重复字符 (20分)

思路:先输入,再去除重复(貌似可以边输入边去除?)最后用一维数组学的“选择排序法”。#include<stdio.h>int main(void){ int i=0,k,j=0; char str[80],news[80]; while ((str[i]=getchar()) != '\n') // 输入 i++; str[i]='\0'; for (i=0; str[i] != '\0'; i++){ int flag =1; .

2020-07-26 21:14:12 1091

原创 C语言 实验7-3-2 查找指定字符 (15分)

既然要找最大的下标,那么从最后一个元素(当然除了结束符‘\0’)开始找不就行拉。#include<stdio.h>int main(void){ int i=0,j=0; char ch,str[80]; ch = getchar(); getchar(); while ((str[i] =getchar()) != '\n') i++; str[i] = '\0'; for (i=i-1; i>=0; i--){ if (str[i] == ch){.

2020-07-26 17:20:59 2559

原创 C语言 实验7-3-5 输出大写英文字母 (15分)

思路:把读到的大写字母存到新数组里,然后每次读到大写字母都要判断“ 新数组里是否已存在该字母”。#include<stdio.h>int main(void){ int i=0,j=0,k,cnt=0; char str[80],new_str[80]; while ((str[i]=getchar()) != '\n') // 输入 i++; str[i] = '\0'; for (i=0; str[i]!='\0'; i++){ int fla.

2020-07-26 17:15:29 4282

原创 C语言 实验7-2-9 螺旋方阵 (20分)

#include<stdio.h>int main (void){ int n,i,j,a[10][10]={0},s=1; scanf("%d", &n); int end=n,st=0; // end:每次循环的最大下标 st:最小下标 int k=n; //记录一下 n的初始值,遍历输出时用 while (n > 1){ for (j=st; j<end-1; j++) // n-1个数字一组 a[st][j] = s++.

2020-07-26 09:05:18 260

原创 C 实验7-2-8 找鞍点 (20分)

#include<stdio.h>int main(void){ int n,i,j,k,a[6][6],row[6],col[6],max,min; scanf("%d", &n); for (i=0; i<n; i++){ for (j=0; j<n; j++) scanf("%d", &a[i][j]); } for (i=0; i<n; i++){ // 找到每一行的最大值,存到row[]里 max =.

2020-07-25 18:09:09 245

原创 实验7-2-7 方阵循环右移 (20分)

偷个懒,思路懒得写了O(∩_∩)O#include<stdio.h>int main(void){ int m,n,i,j,a[6][6],b[6][6]; scanf("%d %d", &m, &n); for (i=0; i<n; i++){ for (j=0; j<n; j++) scanf("%d", &a[i][j]); } for (j=0; j<n; j++){ for (i=0; i<n; i++){.

2020-07-25 15:56:11 199

原创 C 实验7-2-6 打印杨辉三角 (20分)

triangle数组里是这样排列的:0 0 ···0 1 0···0 1 1 0···0 1 2 1 0···0 1 3 3 1 0········阔以看出,只需定义[1][1]下标的元素为1。那么后面的每一个元素,都等于它头顶上的 + 头顶左边的元素 。#include<stdio.h>int main(void){ int n,i,j,k,triangle[11][11]={0}; scanf("%d", &n); triangle[1][1] = 1.

2020-07-25 14:38:42 302

原创 C 实验7-2-5 判断上三角矩阵 (15分)

思路写在注释里拉。单独用一个数组记录,打印输出。注意k是最外层的循环,处理数组的时候k不能改变#include<stdio.h>int main (void){ int T,i,j,n,k,pri[10]; // pri用来存储输出 scanf("%d", &T); for (k=1; k<=T; k++){ // k个矩阵 scanf("%d", &n); int a[10][10]; for (i=0; i<n; i.

2020-07-25 12:07:15 759

原创 C语言 实验7-1-13 装箱问题 (20分)

#include<stdio.h>#define N 1000int main(void){ int n,i,j,goods[N],box[N]={0}; // goods为货物 , box为箱子(一开始箱子是空的,无货物,所以初值为 0) scanf("%d", &n); for (i=1; i<=n; i++) // 为了方便统计,因此货物和箱子都是从 1开始 ,到等于 n结束 scanf("%d", &goods[i]); int

2020-07-24 22:14:27 1051

原创 实验7-1-12 组个最小数 (20分)

思路写在注释里啦。如果你有更简单的,欢迎交流!#include<stdio.h>int main(void){ int i,j,n,a[10],b[50]; // 数组 a是题目输入的十个数字 ,数组 b是 a所代表的所有数字 for (i=0; i<10; i++) scanf("%d", &a[i]); int x=0; for (i=0; i<10; i++){ // 把 a代表的所有数字都输入到 b里 for (..

2020-07-24 19:29:49 110

原创 实验7-1-8 输出数组元素 (15分)

#include<stdio.h>int main(void){ int n,x,a[20]; scanf("%d", &n); int i; for (i=0; i<n; i++) scanf("%d", &a[i]); int index = 0; for (i=1; i<n; i++){ x = a[i] - a[index]; index = i; if (index % 3 !=0 && index...

2020-07-24 13:31:55 746

原创 实验7-1-6 求一批整数中出现最多的个位数字 (20分)

思路都写在注释里了,慢慢享用#include<stdio.h>int main(void){ int n,i,x,count[10],cnt=0,index; // count是统计次数的 ,index是表示出现次数最多的下标 scanf("%d", &n); for (i=0; i<10; i++) //初始化数组 count count[i] = 0; for (i=0; i<n; i++){ scanf("%d..

2020-07-24 10:57:50 411

原创 C语言 实验7-1-5 选择法排序 (20分)

#include<stdio.h>int main(void){ int n,a[10],i,j,t; scanf("%d", &n); for (i=0; i<n; i++) scanf("%d", &a[i]); for (i=0; i<n-1; i++){ //最后一个数字无需排序,故到 n-1即可 for (j=i+1; j<n; j++){ if (a[j] > a[i]){ ...

2020-07-24 08:43:58 838

原创 实验7-1-4 找出不是两个数组共有的元素 (20分)

#include<stdio.h>int compare(int x, int n, int a[]);int main(void){ int n1,n2,a1[20],a2[20],s[40],i,index=0; // 用 s来存储不一样的数 scanf("%d", &n1); for (i=0; i<n1; i++) scanf("%d", &a1[i]); scanf("%d", &n2); for (i=0; i&l...

2020-07-23 21:03:07 1079

原创 实验7-1-1 简化的插入排序 (15分)

看了很多人的,感觉都很麻烦,不知道我这个算不算最优解,欢迎大家交流更好的写法#include<stdio.h>int main(void){ int n,x,a[10],i,t; scanf("%d", &n); for (i=0; i<n; i++) scanf("%d", &a[i]); scanf("%d", &x); for (i=0; i<n; i++){ if (x < a[i]){ // 找..

2020-07-23 15:30:49 2360 1

原创 7-6 选择法排序 (20分)

#include<stdio.h>int main (void){ int n,i,j,a[10],t; scanf("%d", &n); for (i=0; i<n; i++) scanf("%d", &a[i]); for (i=0; i<n-1; i++){ for (j=i+1; j<n; j++){ if (a[j]> a[i]){ t = a[j]; a[j] = a[i]; a [...

2020-07-23 11:58:45 1952

原创 实验6-9 统计一行文本的单词个数 (15分)

#include<stdio.h>int main(void){ char ch; int count=0,F=1; ch = getchar(); while (ch != '\n'){ //没读到换行就一直循环完事了 if (ch != ' ' && F == 1){ // F等于 1代表单词开始,此时才 count加一 count ++; F = 0; } if (ch == ' ') F = 1; ch =...

2020-07-22 17:44:08 1444 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除