指针【C语言程序设计】

来源:互联网 发布:dos命令查看mac地址 编辑:程序博客网 时间:2024/06/06 01:42

一.实验目的:

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");

}

原创粉丝点击