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

##设计题目

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. transport connector和network connector

    1 什么是transport connector 用于配置activemq服务器端和客户端之间的通信方式. 2 什么是network connector 用于配置activemq服务器之间的通信方式, ...

  2. 18.Django原生SQL语句查询返回字典

    在django中执行自定义语句的时候,返回的结果是一个tuple ,并我不是我所期望的dict.当结果是tuple 时,如果要取得数据,必须知道对应数据在结果集中的序号,用序号的方式去得到值. 如果是 ...

  3. l如何把SQLServer表数据导出CSV文件,并带列名

    http://jingyan.baidu.com/article/4b07be3c466b5d48b280f37f.html 微信公众号:

  4. 【模式识别】CART和GML AdaBoost MATLAB TOOLBOX

    GML AdaBoost Matlab Toolbox是一款很优秀的AdaBoost工具箱,内部实现了Real AdaBoost, Gentle AdaBoost和Modest AdaBoost三种方 ...

  5. Write 语句

    ABAP Write 语句 转载▼http://blog.sina.com.cn/s/blog_5ccd375b0100ghhi.html   1.Write 叙述 ABAP/4 用来在屏幕上输出数据 ...

  6. 坑爹的shell 空格

    shell 空格很敏感,被线上代码坑了,占个位,回头好好整理一下

  7. Ruby 循环

    Ruby while 语句: 语法: while conditional [do] codeend 执行代码当条件为true时.while循环的条件是代码中的保留字,换行,反斜杠()或一个分号隔开. ...

  8. 利用CocoaPods管理本地工程和发布开源框架

    发布自己三方框架 发布云端库 1.创建spec pod spec create xxx 2.编辑spec s.name:名称,pod search 搜索的关键词,注意这里一定要和.podspec的名称 ...

  9. 每天一个Linux命令(34)grep命令

          grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...

  10. 每天一个Linux命令(26)chown命令

          chown命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组.     (1)用法:     用法:  chown [选项 ...