一.实验目的:
1.掌握变量的指针使用方法
2.掌握通过指针传递数组的方法
3. 掌握指针与数组和函数编程的应用方法
4.学习和掌握基本的递归的程序设计方法
二、实验内容和步骤 |
1.分析并修改下面程序错误,使之能够正常运行。
错误代码一:
程序实现:将字符串 s 连接到t 的后面。如输入 Birthday 和 Happy ,则程序输出Happy Birthday。
#include <stdio.h>
void mystrc(char s,char t);
int main()
{ chars[80],t[80];
gets(s); gets(t);
mystrc(s,t);
puts(t);
return 0;
}
void mystrc(char s,char t);
{ while(*t !=0) t++;
while(*t=*s);
}
错误分析:
1. 缺少头文件#include<string.h>
2. 定义函数时声明语句后不用逗号,形参要定义成指针变量
3. mystrc函数的第二个while循环中,缺少两个指针变量的移动
2. 编写程序实现以下功能
(1).main函数带命令行参数的使用
假设程序编译后生成的可执行文件为mycal.exe.。在命令行提示符下,通过在windows开始菜单执行cmd命令,出现:c:\>,键入mycal 100+200 运行的结果为 300;键入mycal 100*200 运行的结果为20000 等。
代码:#include<stdio.h>
#include<stdlib.h>
int main(int a,int *b[])
{
if(strcmp(b[2],"+")==0)
printf("%d",atoi(b[1])+atoi(b[3]));
return 0;
}
(2).字符串合并
输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到大排列。
如:输入1223aabcc 和233abbdkm
输出:1222333aaabbbccdkm
编程要求:
a) 较好的用户输入输出提示
b) 先用普通数组编程方式编写,测试好后改用指针方式逐个访问字符数组元素
代码:
#include<stdio.h>
#include<string.h>
void merge(char x[],char y[],char z[])
{
while(*x!='\0'||*y!='\0')
{
if(*x>*y)
*z++=*y++;
else
*z++=*x++; *z='\0';
}
if(*x)
*z++=*x++;
if(*y)
*z++=*y++;
}
void main()
{
chara[100],b[100],c[200];
int l,i;
printf("Pleaseinput string a:\n");
gets(a);
printf("Pleaseinput string b:\n");
gets(b);
merge(a,b,c);
l=strlen(c);
printf("Thenew string:\n");
for(i=0;i<l;i++)
{
printf("%c",*(c+i));
}
printf("\n");
}