实验九aaa
- 格式:doc
- 大小:291.00 KB
- 文档页数:4
程序设计基础
1
班级:电气12-1 成绩:
实验九 指针
【实验目的】
(1)能正确使用数组的指针和指向数组的指针变量;
(2)学习字符串数据的组织和处理;
(3)学习标准c++库的使用。
【实验内容】
一 、改错题
(1)输出数组元素的值
有错误的源程序
#include"iostream.h"
void main()
{
int i;
char c[20]={'c','h','i','n','a'};
char b[]="china";
for(i=0;c*i+!=’\n’;i++)
printf(“%c ”,c[j]);
printf(“\n%s\n”,c);
puts(b);
for(i=0;b*i+!=’\n’;i++)
printf(“%c”,b[i]);
printf(“\n\s”,b);
}
正确的程序:
#include
void main()
{
int i;
char c[6]={'c','h','i','n','a',};
char b[]={"china"};
for(i=0;c[i]!='\0';i++)
printf("%c ",c[i]);
printf("\n%s\n",c);
puts(b);
for(i=0;b[i]!='\0';i++)
printf("%c",b[i]);
printf("\n%s",b);
}
程序设计基础
2
(2)用指针方法,输出数组元素的值。
#include
void main()
{
int a[]={1,2,3,4,5,6,7,8,9};
int *p;
p=&a; 把“&”去掉。
for( ;*p<=9;p++)
printf(“%d ”,*p);
}
二、程序填空题
将字符串str1复制为字符串str2
#include
void main()
{
char str1[]="I love CHINA!",str2[20],*p1,*p2;
p1=str1;
p2=str2;
for(;*p1!='\0';p1++,p2++)
____*p2=*p1;______________
*p2='\0';
____p1=str1;___________
_____p2=str2;__________
printf(“str1 is:%s\n”,p1);
printf(“str2 is:%s\n”,p2);
}
三、编程题
(1)将一个长度为n的字符串,实现其逆序输出。
#include
#include
void main()
{
程序设计基础
3
char s[50];
printf("请输入字符串:");
gets(s);
int len=strlen(s);
printf("逆序输出:");
for (int i=len;i>=0;i--)
printf("%c",s[i]);
printf("\n");
}
(2)把十六制转换成十进制。
#include
#include
#include
void main()
{
int i=0,n=0,j,sum=0;
char a[20];
scanf("%s",a);
j=strlen(a)-1;
for (i=j; i>=0;i-- )
{if (a[i]>='0'&&a[i]<='9')
sum=sum+(pow(16,n++)*(a[i]-'0'));
if (a[i]>='A'&&a[i]<='F')
sum=sum+(pow(16,n++)*(a[i]-'A'+10));
}
printf("%d\n",sum);
(3)有一行电文,按某规律译成密码。规律:第i个字母变成第(26-i+1)个字母。
要求:用字符串变量;编程将密码译回原文,并打印密码和原文。
#include
程序设计基础
4
void main()
{
char a[81],b[81];
gets(a);
for(int i=0;a[i];i++)
{
if(a[i]>='A' && a[i]<='Z')
b[i]='A'+'Z'-a[i];
else if(a[i]>='a' && a[i]<='z')
b[i]='a'+'z'-a[i];
else
b[i]=a[i];
}
b[i]='\0';
puts(b);
}
(4)编写一个程序,用来从字符串str中找出指定子串substr在该字符串中第一次出现
的位置,此位置用子串第一个字符在字符串中的位置来表示。