当前位置: 首页 > news >正文

第二次C语言实验报告

#一、设计题目,设计思路,实现方法

##设计题目

15-10 找最长的字符串,14-5 指定位置输出字符串,13-6 数组循环右移,12-5 查找指定字符,11-5 打印杨辉三角。

##设计思路

15-10:通过strlen()函数比较字符串长度。

14-5:通过数组遍历找到指定位置。

13-6 :定义两个数组,进行赋值,进而改变数组的下标。

12-5 :数组遍历,找到指定字符。

11-5:定义一个二维数组,先对特殊部分处理(即杨辉三角外围的一)。

##实现方法

15-10:与数组比较大小的代码相似,但其运用了strcpy()函数,操作步骤上也有细微差别。

14-5:运用指针,通过返回指针地址实现最终目的

13-6 :通过index = (j+m)%n语句将数组向右移,并通过for循环进行循环。

12-5 :通过for循环遍历

11-5:双重for循环,规律为一个数为其肩上两个数之和。

————————————————————————————

#二、源程序

##15-10 找最长的字符串
本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。

输入格式:

输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。

输出格式:

在一行中用以下格式输出最长的字符串:

The longest is: 最长的字符串
如果字符串的长度相同,则输出先输入的字符串。

输入样例:

5
li
wang
zhang
jin
xiang
输出样例:

The longest is: zhang

#include<stdio.h>
#include<string.h>
int main()
{
int n,i;
scanf("%d\n",&n);
char s[80],max[80];
scanf("%s",s);
strcpy(max,s);
for(i=0;i<n;i++)
{
scanf("%s",s);
if(strlen(s)>strlen(max))
{
strcpy(max,s);
}
}
printf("The longest is: %s\n",max);
return 0;
}

 

 

##14-5 指定位置输出字符串(20 分)
本题要求实现一个函数,对给定的一个字符串和两个字符,打印出给定字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。

函数接口定义:

char *match( char *s, char ch1, char ch2 );
函数match应打印s中从ch1到ch2之间的所有字符,并且返回ch1的地址。

裁判测试程序样例:

#include <stdio.h>

#define MAXS 10

char *match( char *s, char ch1, char ch2 );

int main()
{
char str[MAXS], ch_start, ch_end, *p;

scanf("%s\n", str);
scanf("%c %c", &ch_start, &ch_end);
p = match(str, ch_start, ch_end);
printf("%s\n", p);

return 0;
}

/* 你的代码将被嵌在这里 */
输入样例1:

program
r g
输出样例1:

rog
rogram
输入样例2:

program
z o
输出样例2:

(空行)
(空行)
输入样例3:

program
g z
输出样例3:

gram
gram

char *match( char *s, char ch1, char ch2 ){

int i,j;
char *p=NULL;
for(i=0;s[i]!='\0';i++){
if(s[i]==ch1){
p=&s[i];

for(j=i;s[j]!='\0';j++){
if(s[j]!=ch2){
printf("%c", s[j]);
}
if(s[j]==ch2){
printf("%c\n", s[j]);
return p;
}
}
printf("\n");
return p;
}
}

s[i-1]='\n';

p=&s[i-1];
return p;
}


##13-6 数组循环右移(20 分)
本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a
​0
​​ a
​1
​​ ⋯a
​n−1
​​ )变换为(a
​n−m
​​ ⋯a
​n−1
​​ a
​0
​​ a
​1
​​ ⋯a
​n−m−1
​​ )(最后m个数循环移至最前面的m个位置)。

函数接口定义:

int ArrayShift( int a[], int n, int m );
其中a[]是用户传入的数组;n是数组的大小;m是右移的位数。函数ArrayShift须将循环右移后的数组仍然存在a[]中。

裁判测试程序样例:

#include <stdio.h>
#define MAXN 10

int ArrayShift( int a[], int n, int m );

int main()
{
int a[MAXN], n, m;
int i;

scanf("%d %d", &n, &m);
for ( i = 0; i < n; i++ ) scanf("%d", &a[i]);

ArrayShift(a, n, m);

for ( i = 0; i < n; i++ ) {
if (i != 0) printf(" ");
printf("%d", a[i]);
}
printf("\n");

return 0;
}

/* 你的代码将被嵌在这里 */
输入样例:

6 2
1 2 3 4 5 6
输出样例:

5 6 1 2 3 4


int ArrayShift( int a[], int n, int m )
{
int i,index,j,b[100];
for(j=0;j<n;j++)
{
index = (j+m)%n;
b[index]=a[j];
}
for(i=0,j=0;i<n;i++,j++)
{
a[i]=b[j];
}
return a;
}


##12-5 查找指定字符(15 分)
本题要求编写程序,从给定字符串中查找某指定的字符。

输入格式:

输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。

输出格式:

如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。

输入样例1:

m
programming
输出样例1:

index = 7
输入样例2:

a
1234
输出样例2:

Not Found

#include<stdio.h>
int main(void)
{
int i,flag,index;
char s[80],ch;
scanf("%c",&ch);
s[0]=getchar();
i=0;
while((s[i]=getchar())!='\n')
i++;
s[i]='\0';
flag=0;
for(i=0;s[i]!='\0';i++){
if(s[i]==ch){
index=i;
flag=1;
}
}
if(flag==0)
printf("Not Found");
else
printf("index = %d",index);
return 0;
}
提交返回
编程题
1234567

 

##11-5 打印杨辉三角(20 分)
本题要求按照规定格式打印前N行杨辉三角。

输入格式:

输入在一行中给出N(1≤N≤10)。

输出格式:

以正三角形的格式输出前N行杨辉三角。每个数字占固定4位。

输入样例:

6
输出样例:

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
作者: 徐镜春
单位: 浙江大学
时间限制: 400ms
内存限制: 64MB
代码长度限制: 16KB

for( i=0;i<10;i++)
{
a[i][i]=1;
a[i][0]=1;
}

scanf("%d",&n);
if(n>2){

for( i=1;i<n;i++)
{
for ( j=1;j<i;j++)
{
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
}
}


for( i=0;i<n;i++)
{
for(k=n-i-1;k>0;k--)printf(" ");
for( j=0;j<=i;j++)
{

printf("%4d",a[i][j]);
}
printf("\n");
}
return 0;
}

 ————————————————————————————

#三、遇到的问题,心得及体会。

##问题:

1.审题不清:在15-10 找最长的字符串中误以为找的是最大字符串

2.对数组的界限不清:导致运行结果出现乱码

 

##心得与体会:

1,审清题意是关键,一定要认真看题

2.多做多练是重点:熟能生巧

转载于:https://www.cnblogs.com/lizhiting/p/8331467.html

相关文章:

  • ThinkPHP3.2 下载、导入Excel表格内容、导出内容到Excel表格功能的设计与实现
  • CORS跨域cookie传递
  • Python3 的元组
  • 【转】四款经典3.7v锂电池充电电路图详解
  • [TJOI2013]循环格
  • 6. python 字符串格式化表达式
  • tomcat 取消项目名访问路径
  • 【Python】学习笔记5-模块pymysql操作mysql数据库
  • mysql innodb myisam 比较
  • Git 安装配置
  • typeof面试题解答
  • 辩证看待 iostat
  • RpcContext
  • mysql学习笔记(1)--varChar和char类型的区别
  • etcd raft library
  • [译] React v16.8: 含有Hooks的版本
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • Android Volley源码解析
  • AWS实战 - 利用IAM对S3做访问控制
  • css属性的继承、初识值、计算值、当前值、应用值
  • OSS Web直传 (文件图片)
  • windows-nginx-https-本地配置
  • 从0实现一个tiny react(三)生命周期
  • 对象引论
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 扑朔迷离的属性和特性【彻底弄清】
  • 为视图添加丝滑的水波纹
  • 小程序 setData 学问多
  • ​​​​​​​​​​​​​​Γ函数
  • ​低代码平台的核心价值与优势
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # Redis 入门到精通(九)-- 主从复制(1)
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #传输# #传输数据判断#
  • ()、[]、{}、(())、[[]]命令替换
  • (1)(1.13) SiK无线电高级配置(五)
  • (7)摄像机和云台
  • (8)STL算法之替换
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (C#)获取字符编码的类
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二)PySpark3:SparkSQL编程
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (四)进入MySQL 【事务】
  • (转)ORM
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .gitignore文件—git忽略文件
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .net 怎么循环得到数组里的值_关于js数组
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .net反编译工具