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. AIGC 至少能在两个方面改变当前的世界-纯银

    互联网圈一个正在形成的共识是,web3 只是金融领域的创新,还没有任何征兆能进入大众社会,但 AIGC 对世界的改变正在眼前发生.AIGC 至少能在两个方面改变当前的世界.1.对于缺乏创造力的(文字) ...

  2. 算法题:消除字符串中全部的b和连续的ac

    最近碰到了一道面试题,虽然不难但是临试没想出好的解法,记录下来以作分享. 题目:消除字符串中全部的b和连续的ac 用例: 'aabbc' -> 'a' 'aaabbbccc' -> '' ...

  3. Treewidget节点的删除

    父节点的删除 // 第一种 // 树状列表父节点的删除 // 有点莽 不支持这种操作 delete ui->treeWidget->topLevelItem(0); //  第二种 QTr ...

  4. Jndi结合DynamicDataSource实现多数据源配置

    首先注意本框架是SSM,配置主要在两个地方.第一个是applicationContext.xml,第二个文件是Tomcat下面的context.xml里面 1.context.xml文件配置的代码如下 ...

  5. 修改tomcat启动时,修改默认访问的页面

  6. redis 配置哨兵模式时出现的问题(redis 版本 6.2.5)

    今天准备搭建一个 redis 集群(redis 版本 6.2.5),在这之前要先配置好哨兵模式. 但是在配置哨兵模式时出现了问题.之前没有搭建集群时(一主两从,三台虚拟机)可以顺利配置好,而搭建集群时 ...

  7. Java中继承相关知识点

    继承 1.继承概述 继承是面向对象的三大特征之一.可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法 1.1 继承的格式 格式:public class 子类名 extends ...

  8. HTML Cookie

    目录 Cookie是什么 Cookie的属性 Cookie的作用域 Domain 属性 Path 属性 SameSite 属性 Cookie密码验证小案例 效果展示 代码 Cookie是什么 HTTP ...

  9. swagger 兼容 docker 转发 配置

    app.UseSwagger(c => { c.PreSerializeFilters.Add((swagger, httpReq) => { string swagger_index_u ...

  10. 前端复习之DOM、BOM

    BOM VS DOM: 1 BOM:浏览器对象模型(API),专门操作浏览器窗口的API 2 没标准! 3 DOM:文档对象模型(API),专门操作网页内容的API 4 可以对网页中任意对象,做任意修 ...