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

##设计题目

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.多做多练是重点:熟能生巧

第二次C语言实验报告的更多相关文章

  1. 20145307第二次JAVA学习实验报告

    20145307<Java程序设计>实验报告二:Java面向对象程序设计 实验要求 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4 ...

  2. C语言实验报告二

    实验一:第11次实验作业报告 题目:方阵循环右移 实验要求:将给定n×n方阵中的每个元素循环向右移m个位置,即将第0.1.⋯.n−1列变换为第n−m.n−m+1.⋯.n−1.0.1.⋯.n−m−1列. ...

  3. 第二次C语言实验

    Part1: printf(),scanf()函数的用法 /* C语言程序设计教程学习指导>p119 实验内容(2) 这是一个格式化输入输出函数及格式符使用练习 找出两处错误,修改并运行程序 为 ...

  4. c语言实验报告

    实验项目:分支结构实验   姓名:熊承启 4.3.1if语句的应用 问题描述: 读入三个分别表示箱子长宽高的整数值,判断并输出该箱子是长方体还是正方体. 程序框图: 程序实现: #include< ...

  5. R语言- 实验报告 - 利用R语言脚本与Java相互调用

    一. 实训内容 利用R语言对Java项目程序进行调用,本实验包括利用R语言对java的.java文件进行编译和执行输出. 在Java中调用R语言程序.本实验通过eclipse编写Java程序的方式,调 ...

  6. 第一次C语言实验报告

    一.实验题目,设计思路,实现方法 实验四4-2-9三个数由小到大输出,要求比较三数大小并按顺序输出.运用穷举法列举所有可能性再对应输出.运用多分支结构. 实验四4-2-4 三天打鱼两天晒网,运用循环结 ...

  7. c语言实验报告(四) 从键盘输入字符串a和字符串b,并在a串中的最小元素(不含结束符)后面插入字符串b.

    a串中最小元素后的字符被舍弃了. #include<stdio.h>#include<string.h>void main(){  int i,min=0;  char a[2 ...

  8. C语言实验报告(五) 用自定义函数求2~n之间的素数

    #include<stdio.h>#include <math.h>int main(){  int i,n;  printf("input n:");  ...

  9. C语言实验报告(五) 两个正整数的最大公约数

    编程实现求两个正整数的最大公约数,要求计算最大公约数用函数fun(int a,int b)实现. #include<stdio.h>void main(){  int n,a,b;  in ...

随机推荐

  1. 关于UIView的hitTest:withEvent:方法的理解

    闲来无事 观摩别人的项目 常常发现对UIView的hitTest:withEvent:方法的重写,以前也查过这个方法的用法作用,但是时间一长又忘记了.今天再次看到,就记录一下. 用户触摸屏幕后事件的传 ...

  2. Linux安装virtualenvwrapper详细步骤

    1.[root@localhost ~]# pip install virtualenvwrapper 2.[root@localhost ~]# pip list [root@localhost ~ ...

  3. 我的Android进阶之旅------>Android关于ImageSpan和SpannableString的初步了解

    最近要实现一个类似QQ聊天输入框,在输入框中可以同时输入文字和表情图像的功能.如下图所示的效果: 为了实现这个效果,先去了解了一下ImageSpan和SpannableString的用法.下面用一个小 ...

  4. windows下的mysql闪退问题

    早上来启动MySQL发现输入密码就闪退,连续试了好几次,最后到网上查到了解决方案. 与Linux系统下MySQL密码丢失的操作步骤基本一样. 首先要跳过密码启动MySQL服务. 启动服务必须使用全路径 ...

  5. rails 注释

    view -# js.erb <%# xxxx %> 单行注释

  6. [原创]Scala学习:编写Scala脚本

    scala支持脚本 1)在/opt/scala-script下创建一个文件hello.scala 编辑内容如下: $ hello ,this is the first scala script 2)运 ...

  7. 【leetcode刷题笔记】Set Matrix Zeroes

    Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. 题解:因为题 ...

  8. [算法]K-SUM problem

    一.Two Sum Given an array of integers, find two numbers such that they add up to a specific target nu ...

  9. linux基本使用

    (待完善,想到哪就写到哪,目前内容大幅度参考中文man手册) 最重要的命令(man) 在 Linux 下遇到问题,最重要的是要自己寻求帮助, google是个好东西 man 是 Linux 的帮助手册 ...

  10. 《python基础教程(第二版)》学习笔记 列表/元组(第2章)

    <python基础教程(第二版)>学习笔记 列表/元组(第2章)序列中的下标从0开始x='ABC' ==> x[0]='A', x[1]='B', x[2]='C'负数索引从右边开始 ...