1. 用链表实现单词序列倒序输出

题目

用链表实现单词序列倒序输出。与以往不同,请考虑采用一种完全的动态分配方式! 为降低难度,“仁慈”的我已经给出了输出和释放的代码,你只要写出创建链表的creat函数定义就可以了。

比如输入为: abc bcd cde

则输出为: cde bcd abc

见题干!

你只能在代码输入框中:"//start(或#start)"行的下面,"//end(或#end)"行的上面输入你的代码, 而不能改变"//start(或#start)"以及其上所有行的代码,包括添加空格与空行, 也不能改变"//end(或#end)"以及其下所有行的代码,包括添加空格与空行.

代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
struct node
{
char * data;
struct node *next;
};
typedef struct node NODE;
NODE* creat()
{
NODE *head,*cur;
char in[N];
//start
head=(NODE *)malloc(sizeof(NODE));
head->next=NULL;
while(scanf("%s", in)!=EOF)
{
cur=(NODE *)malloc(sizeof(NODE));
cur->data=(char *)malloc(sizeof(char) * N);
strcpy(cur->data, in);
cur->next=head->next;
head->next=cur;
}
//end
return head;
}
int main()
{
NODE *head,*cur,*pre;
/*creat list*/
head = creat();
/*print list*/
cur = head->next;
while(cur!=NULL&&cur->next!=NULL)
{
printf("%s ",cur->data);
cur = cur->next;
}
if(cur!=NULL)
printf("%s\n",cur->data);
/*release list*/
while(head->next!=NULL)
{
pre = head;
cur = head->next;
while(cur->next!=NULL)
{
pre = cur;
cur = cur->next;
}
free(cur->data);
free(cur);
pre->next = NULL;
}
return 0;
}

2. 二值图像处理

题目

别紧张,你只把这个简单的二值图像处理的问题当成C语言的一道题目就可以。 输入为一个nn的二维整型矩阵(矩阵中元素的最小值为0,最大值不超过1),输出其中0、1这两种值的个数。输入数 据有多组,首先输入一个整数n(0<n<10),代表矩阵的维数,接着是nn个0或者1。

比如输入为:

8

0 0 0 0 0 0 0 0

0 0 1 1 1 1 1 0

0 0 0 0 0 1 0 0

0 0 0 0 1 0 0 0

0 0 0 1 0 0 0 0

0 0 1 0 0 0 0 0

0 1 0 0 0 0 0 0

1 0 0 0 0 0 0 0

则输出为: 53 11

代码

#include<stdio.h>
#include<stdlib.h> int main()
{
int n, ans0=0, ans1=0;
scanf("%d", &n);
for(int i=0;i<n*n;i++)
{
int tmp;
scanf("%d", &tmp);
if(!tmp) ans0++;
else ans1++;
}
printf("%d %d", ans0, ans1);
return 0;
}

3.计算不同类型字符的数量

题目

如标题所示。数据数据有多组,每组为一个用空白符分隔的字符串(长度<100),请试着统计其中字母(大小写均为字 母)、数字(0~9)和其它字符的个数并输出。

比如输入为: Iloveprograming1@2#3

则输出为: 15 3 2

注意:字符串可能以'\0'或者"\r\0"作为结束标志!

见题干!

代码

#include<stdio.h>
#include<stdlib.h>
#include<ctype.h> int main()
{
char str[110];
while(scanf("%s", str)!=EOF)
{
int ansalpha=0, ansnum=0, ansother=0;
int len=strlen(str);
for(int i=0;i<len;i++)
{
if(isalpha(str[i])) ansalpha++;
else if(isalnum(str[i])) ansnum++;
else ansother++;
}
printf("%d %d %d\n", ansalpha, ansnum, ansother);
}
return 0;
}

PS

这道题题目里面还给了结束符的类型,应该还要做具体的判定,在这里就先不用了,到时候具体问题还需要根据调试做修改

4. 实现字符串排序

题目

实现字符串排序。与以往不同,请考虑采用一种完全的动态分配方式。请你: 1. 定义一个整型变量n,用于确定数组字符串的个数; 2. 用动态分配定义一个指针数组,用于存储每一个待排序字符串的首地址; 3. 定义一个输入缓冲区(长度不超过100的一维字符数组),用于存储不带分隔符的字符串; 4. 根据输入缓冲区中当前串的长度,动态分配空间,并将其复制到新分配的空间中; 5. 用函数实现字符串按字典升序排序,并输出排序后的字符串(每串一行); 6. 记得释放所有之前动态分配开辟的空间!

比如输入为: 3 banana apple peach

则输出为: apple banana peach

代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h> void sort(char **prelist, int n)
{
char tmp[110];
for(int i=0;i<n;i++)
{
for(int j=i;j<n;j++)
{
if(strcmp(prelist[i], prelist[j])>0)
{
strcpy(tmp, prelist[i]);
strcpy(prelist[i], prelist[j]);
strcpy(prelist[j], tmp);
}
}
}
} int main()
{
int n;
scanf("%d", &n);
char **prelist=(char **)malloc(sizeof(char *)*n);
char str[110];
for(int i=0;i<n;i++)
{
scanf("%s", str);
int len=strlen(str);
char *p=((char *)malloc(sizeof(char)*len));
strcpy(p, str);
prelist[i]=p;
}
sort(prelist, n);
for(int i=0;i<n;i++)
{
printf("%s ", prelist[i]);
}
return 0;
}

代码(重构)

#include<stdio.h>
#include<stdlib.h>
#include<string.h> void sort(char **prelist, int n)
{
char tmp[110];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(strcmp(prelist[i], prelist[j])<0)
{
strcpy(tmp, prelist[i]);
strcpy(prelist[i], prelist[j]);
strcpy(prelist[j], tmp);
}
}
}
} int main()
{
int n;
scanf("%d", &n);
char **prelist;
prelist=(char **)malloc(sizeof(char *)*n);
for(int i=0;i<n;i++)
{
char str[110];
scanf("%s", str);
char *newarr=(char *)malloc(sizeof(char) * strlen(str));
strcpy(newarr, str);
prelist[i]=newarr;
}
sort(prelist, n);
for(int i=0;i<n;i++)
printf("%s ", prelist[i]);
return 0;
}

5. 战旗游戏

题目

我知道你们男生女生都喜欢打游戏,下面这道简单的编程题是某战棋游戏的一部分,实现的功能是向上、向下、向左、 向右、向左上、向左下、向右上、向右下这八个方向移动一格。请编写一个process函数,实现对上述八个函数的调 用。 比如:

输入2 3

则输出为:3 3

代码

#include <stdio.h>
#include <stdlib.h>
void process(int *x, int *y, void (*fun)(int *x, int *y))
{
//start
fun(x, y);
//end
}
void up(int *x, int *y)
{
*y = *y - 1;
return ;
}
void down(int *x, int *y)
{
*y = *y + 1;
return ;
}
void left(int *x, int *y)
{
*x = *x - 1;
return ;
}
void right(int *x, int *y)
{
*x = *x + 1;
return ;
}
void up_left(int *x, int *y)
{
*x = *x - 1;
*y = *y - 1;
return ;
}
void up_right(int *x, int *y)
{
*x = *x + 1;
*y = *y - 1;
return ;
}
void down_left(int *x, int *y)
{
*x = *x - 1;
*y = *y + 1;
return ;
}
void down_right(int *x, int *y)
{
*x = *x + 1;
*y = *y + 1;
return ;
}
int main(void)
{
int x,y;
while(scanf("%d%d",&x,&y)==2)
{
process(&x,&y,up);
process(&x,&y,right);
process(&x,&y,right);
process(&x,&y,up_right);
process(&x,&y,left);
process(&x,&y,down);
process(&x,&y,down_left);
process(&x,&y,up_left);
process(&x,&y,down_right);
printf("%d %d\n",x,y);
}
return 0;
}

6. 期末成绩统计

题目

期末大考周即将到来了。诸位要面临C语言、高数、大物的期末考试。请你编写一个程序,记录全班同学的三科成绩并 按C语言成绩的降序排序输出。 输入数据有多组:先用一个整型变量n存储班级同学的人数;接着存储这n名同学的三科(C语言、高数、大物)成绩 (类型为整型);排序后输出。 比如,

输入为: 3 张三 80 70 60 李四 90 80 70 王五 100 90 80

则输出为: 王五 100 90 80 李四 90 80 70 张三 80 70 60

代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LEN 20
#define N 40
struct stu
{
char name[LEN];
int scores[3];
}student[N];
int main(void)
{
int n;
void input(struct stu *s,int n);
void sort(struct stu *s,int n);
void print(struct stu *s, int n);
while(scanf("%d",&n)==1)
{
input(student,n);
sort(student,n);
print(student,n);
}
return 0;
}
void input(struct stu *s,int n)
{
int i,j;
for(i=0;i<n;i++)
{
scanf("%s",s[i].name);
for(j=0;j<3;j++)
scanf("%d",&s[i].scores[j]);
}
return ;
}
void sort(struct stu *s,int n)
{
//start
struct stu tmp;
for(int i=0;i<n;i++)
for(int j=i;j<n;j++)
{
if(s[i].scores[0]<s[j].scores[0])
{
tmp=s[i];
s[i]=s[j];
s[j]=tmp;
}
}
//end
}
void print(struct stu *s, int n)
{
int i,j;
for(i=0;i<n;i++)
{
printf("%s ", s[i].name);
for(j=0;j<3;j++)
if(j<2)
printf("%d ",s[i].scores[j]);
else
printf("%d\n",s[i].scores[j]);
}
return ;
}

NEFU高级程序设计-期末复习习题组的更多相关文章

  1. C++面向对象程序设计期末复习笔记[吉林大学](结合历年题速成85)

    1.头文件 头文件的作用就是被其他的.cpp包含进去的.它们本身并不参与编译,但实际上,它们的内容却在多个.cpp文件中得到了编译.根据"定义只能一次"原则我们知道,头文件中不能放 ...

  2. 《JavaScript高级程序设计》学习笔记(4)——引用类型

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第五章内容. 在ECMAScript中, ...

  3. 《JavaScript高级程序设计》学习笔记

    系统学习JS, 从<JavaScript高级程序设计>入门,通过学习jQuery或者angularJS源码来进阶. 第1章 JavaScript简介 1.JS问世的目的是处理以前由服务器端 ...

  4. JavaScript高级程序设计学习(四)之引用类型

    在javascript中也是有引用类型的,java同样如此. javascript常见也比较常用的引用类型就熟Object和Array. 一个对象和一个数组,这个在前后端分离开发中也用的最多.比如aj ...

  5. javascript 高级程序设计 一

    前言: 作为一个即将毕业.正在实习的大学生,我也默默的进入了开发者的行列.从一开始的c#编码狗到java程序员再到现在的JS开发者,我一直 希望自己可以在这个'万恶'的互联网时代走的更远.但是我还是一 ...

  6. 《Javascript高级程序设计》阅读记录(六):第六章 下

    这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ...

  7. 《Javascript高级程序设计》阅读记录(三):第五章 上

    这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 这个系列,我会把阅读< ...

  8. javascript高级程序设计学习笔记

    javascript高级程序设计,当枕头书已经好久了~zz  现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...

  9. JS高级程序设计拾遗

    <JavaScript高级程序设计(第三版)>反反复复看了好多遍了,这次复习作为2017年上半年的最后一次,将所有模糊的.记不清的地方记录下来,方便以后巩固. 0. <script& ...

  10. 读书笔记 - js高级程序设计 - 第十五章 使用Canvas绘图

    读书笔记 - js高级程序设计 - 第十三章 事件   canvas 具备绘图能力的2D上下文 及文本API 很多浏览器对WebGL的3D上下文支持还不够好   有时候即使浏览器支持,操作系统如果缺缺 ...

随机推荐

  1. Mybatis框架中 collection 标签 和 association标签中关于 columnPrefix 属性的底层逻辑

    columnPrefix的作用是给column自动拼接上前缀, 已知多重嵌套的collection 和 association的columnPrefix属性的值是会叠加的 <associatio ...

  2. 浙大版《C语言程序设计(第3版)》题目集 练习3-3 统计学生平均成绩与及格人数 (15 分)

    练习3-3 统计学生平均成绩与及格人数 (15 分) 本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数.题目保证输入与输出均在整型范围内. 输入格式: 输入在第一行中给出非 ...

  3. zynq 中断

    #include "stdio.h"#include "xparameters.h"#include "xgpiops.h"#include ...

  4. kubernetes系列—Ubuntu下搭建Kubernetes集群--k8s部署

    1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 2.安装kubernetes 2.1  关闭防火墙 在每台机器上关闭防火墙: ① 关闭服务,并设为开机不自启 $ ...

  5. 20220720 第七组 陈美娜 Java String用法

    关于String引用数据类型 1.字符串中,两个变量的==指的是虚地址 2.String一旦声明不可改变:赋值进去,原值不会被替代.原值也可能指向其他地址: 3.s.length():字符的个数 4. ...

  6. Verilog 变量中位的数值类型

    Verilog 变量中位的数值类型 Verilog变量中每个位(bit)的数值类型有四种,分别为1,0,Z,X.其中1,0比较明确就是高.低电平.而x, z在逻辑设计中也经常用到来建模.X,Z既可以大 ...

  7. Spring Boot中开启Spring Security

    Spring Boot中开启Spring Security Spring Security是一款基于Spring的安全框架,主要包含认证和授权两大安全模块,和另外一款流行的安全框架Apache Shi ...

  8. Unity学习笔记——坐标转换(2)

    子物体与父物体 子物体与父物体的关系类似于人与地球的关系,地球无论自转还是公转,对于地球上的我们来说,前后左右的方向不会变,因此在Unity中当我们旋转或是移动父物体时,子物体跟随父物体变化,但tra ...

  9. 调用mglearn时的报错 TypeError: __init__() got an unexpected keyword argument 'cachedir'

    import mglearn的时候发生的报错 原因是调用了joblib包中的memory类,但是cachedir这个参数已经弃用了 查到下面帖子之后改掉cachedir解决问题 https://blo ...

  10. Windows查看CUDA版本

    桌面右击,查看是否有NVIDIA控制面板 打开控制面板->帮助->系统信息->组件,可以看到CUDA版本