当前位置:
文档之家› C语言程序设计实验4 数组 周信东
C语言程序设计实验4 数组 周信东
实验4数组
姓名:XXX学号:XXX实验日期:XXX
1.实验目的和要求
(1)掌握一维数组与二维数组的定义、使用及初始化方法。
(2)学习数组作为函数参数的用法。
(3)掌握字符数组和字符串函数的使用方法。
(4)掌握与数组有关的常用排序算法,进一步理解模块化程序设计的方法。
(5)掌握字符、字符串的输入/输出方法。
printf ("Enter your number\n") ;
for (i=1; i<=20;++i)
{scanf (" %d",&number) ;
if (!number) break;
++vote[number];
}
printf (" \n\nResalt of vote\n") ;
printf (" --------------------------\n") ;
if((password[i]>='a'&&password[i]<='z'))
{
password[i]=password[i]+3;
if(password[i]>'z')
{
password[i]='a'-1+password[i]-'z';
}
}
i++;
}
printf("对应的明文为:\n");
puts(password);
i=-1;
break;
}
}
if(i!=-1)
{
if(res>0)
{
printf("字符串1包含字符串2");
}
else
{
printf("字符串2包含字符串1");
}
}
}
getchar();
}
程序运行结果如下图所示:
4实验小结
通过本实验的学习,学会了数组的应用和字符数组的应用。
printf("请输入字符串2:\n");
gets(s2);
res=strcmp(s1,s2);
if(res==0)
{
printf("两个字符串相同!");
}
else
{
for(;s1[i]!='\0'&&s2[i]!='\0';i++)
{
if(s1[i]!=s2[i])
{
printf("两个字符串第1个不相同字符的ASCII码之差为:%d",s1[i]-s2[i]);
程序运行结果如下图所示:
6-5:我使用的算法为:
#include<stdio.h>
#include<string.h>
void main()
{
char str1[100],str2[100];/*str2表示要在str1中寻找的字符串*/
int len1,len2;/*str1,str2的长度*/
int i,j,k;/*循环变量*/
{
nNum++;
}
else
nOther++;
}
printf("您刚才输入的小写字母个数为:%d\n",nLower);
printf("数字字符个数为: %d\n",nNum);
printf("其他字符个数为:%d\n",nOther);
}
程序运行结果如下图所示:
7-4:我使用的算法为:
#include<stdio.h>
getchar();
}
程序运行结果如下图所示:
6-6(选作):我使用的算法为:请用文字描述一下
程序运行结果如下图所示:
6-7(选作):我使用的算法为:请用文字描述一下
程序运行结ห้องสมุดไป่ตู้如下图所示:
7-1该程序的功能是:
程序运行结果如下图所示:
将字符串a中的数字去掉,形成新的字符串b
7-2:我使用的算法为:
程序运行结果如下图所示:
6-3:该程序的功能是:
对a数组中n种商品价格进行分段统计,商品各段价格的数目存放到b数组中。
程序运行结果如下图所示:
6-4.:我使用的算法为:
先对11个元素进行定义,在对10个元素进行排序,之后读入一个待插入的数,与排好的10个数进行比较,找到插入位置,之后的数组元素进行后移,数组后移的实现,是将j赋值给j+1,最后,将待插入的数赋值到空位。
void main()
{
char a[]="this is a program";
int i=0;
while(a[i]!='a')
{
i++;
}
printf("字符'a'第1次出现的位置(从0开始记)是%d\n",i);
}
程序运行结果如下图所示:
7-5:我使用的算法为:
#include<stdio.h>
int count;/*计数*/
/*输入*/
printf("请输入原始字符串:");
gets(str1);
printf("请输入要在原始字符串中查找的子字符串:");
gets(str2) ;
/*初始化变量*/
len1=strlen(str1);
len2=strlen(str2);
count=0;
/*开始计数,请务必读懂如下程序段*/
for (i=1;i<=5;++i)
printf (" %4d %d\n",i,vote[i])
程序的运行测试结果如下图所示(考虑各种情况下的运行结果):
6-2:该程序的功能是:
用循环,先把数组的第一个元素暂存起来,为了实现数组的前移,把j赋给j-1;再将暂存的第一个元素赋给最后一个元素;再用循环输出数组。
{
str3[i]=str1[i];
}
j=i;
for(i=0;str2[i]!='\0';i++,j++)
{
str3[j]=str2[i];
}
printf("两个字符串的组合结果为:\n");
puts(str3);
}
程序运行结果如下图所示:
7-3:我使用的算法为:
#include<stdio.h>
void main()
#include <ctype.h>
void main()
{
char password[100];
int i=0;
printf("请输入原始密码(以@作为结束符号):\n");
gets(password);
while(password[i]!='@')
{
password[i]=tolower(password[i]);
getchar();
}
程序运行结果如下图所示:
7-6:我使用的算法为:
#include<stdio.h>
#include<string.h>
void main()
{
char s1[100];
char s2[100];
int i=0;
int res;
printf("请输入字符串1:\n");
gets(s1);
(6)掌握字符数组的使用。
(7)学会使用字符串的指针和指向字符串的指针变量。
2.实验内容:实验指导书中的实验六、实验七
3.实验步骤
实验六数组部分:
6-1:我使用的算法:
先使投票初始化为0
int vote[6];
int i,number;
for (i=1;i<=5;++i)
vote[i]=0;
之后用一个循环进行投票进行叠加
for(i=0;i<len1-len2+1;i++)
{
k=i;
//从str1的下标为k的元素开始,逐个
for(j=0;j<len2;j++,k++)
{
if(str2[j]!=str1[k])
{
break;
}
}
if(j==len2)
{
count++;
i=k-1;
}
}
/*输出*/
printf("字符串\"%s\"中包含%d个子字符串\"%s\"",str1,count,str2);
#include<stdio.h>
#include<conio.h>
main()
{
char str1[100],str2[100],str3[202];
int i,j;
printf("请输入字符串1:\n");
gets(str1);
printf("请输入字符串2:\n");
gets(str2);
for(i=0;str1[i]!='\0';i++)