大四中软实习笔记20130226

1 循环
do
{

}while(条件);

for()
{

}
题目:连续给变量a输入5次数据,每次都打印出结果。


2 函数
2.1 自定义函数的定义
函数原型(函数名、输入参数、返回值):

int main()
{
    int a=20;
    ing b=30;
    int c=max_etc(a,b);
    printf("2个数的最大值是:%d\n",c);
    return 0;
}

int max_etc(int a,int b)
{
    int result;
    if(a>b)
    {
        result=a;
    }
    else
    {
        result=b;
    }
    return result;
}

知识点:
1 自定义函数如果放在main函数的后面,则main函数调用自定义函数时,会默认自定义函数的返回值为int,而且有告警。所以,必须修改。
    修改方法:
    方法一、将自定义函数写在main函数的前面
    方法二、在main函数前面,增加1条语句----自定义函数的原型,即声明自定义函数
    方法三、使用多文件的工程,包括多个.c和.h文件
2 多工程文件的使用步骤
  1、将main函数放在a.c文件中
  2、将max_etc函数的定义放在max_etc.c文件中
  3、将max_ect函数的原型放在max_etc.h文件中
  4、在main函数前增加头文件   #include "max_etc.h"
   

3 数组
int a[10];
char a[10];
float a[10];   
double a[10];

3.1 整型数组
怎样定义1个整型数组
int a[5];

怎样给数组的每个元素赋值
方法一:
int a[5]={0};
上面是特殊用法

方法二:
先定义数组,再给每个元素赋值
int a[5];
a[0]=2;
a[1]=5;
a[2]=7;
a[3]=9;
a[4]=10;

特殊用法:
使用for循环,给每个元素赋值

题目:定义1个数组,给这个数组赋值前20个奇数。赋完20个奇数后,倒序打印出来。

题目:自定义1个函数,可以对整型数组中的元素进行排序。在main函数定义1个数组,并赋5个整型数,然后调用该函数,进行排序,最后打印输出。

5  9   2   7  4

5  2   7   4   9   第1轮结束
*

代码:
#include <stdio.h>

void sort_etc(int a[],int count)
{
    int temp;
    int i;
    int j;
   
    for(j=0;j<count-1;j++)
    {       
        for(i=0;i<count-1-j;i++)
        {   
            if(a[i]>a[i+1])
            {
                temp=a[i];
                a[i]=a[i+1];
                a[i+1]=temp;
            }
            else
            {
                ;
            }
        }
    }
   
    return;
}


int main()
{
    int a[5]={5,9,2,7,4};
    int i;
    sort_etc(a,5);
    for(i=0;i<5;i++)
    {
        printf("%d\n",a[i]);
    }
   
    return 0;
}

3.2 字符型数组
3.2.1怎样定义1个字符型数组
int a[5]={5,3,4,6,7};
char b[5]={'h','e','l','l','o'};
char b[6]="hello";
char b[]="hello";

3.2.2 字符串
就是特殊的字符型数组:最后1个字符是'\0'

题目:定义1个函数,实现字符串复制功能。
在main函数中,定义1个字符串char a[20]="hello",再定义1个字符串b为"zhangsan",调用该自定义函数,将字符串b复制并粘贴到到字符串a上,然后在main函数中打印出字符串a,进行验证。
分析:
hello                 zhangsan
a[0]=b[0];
a[1]=b[1];

while(b[i]!='\0')
{

}
a[i]='\0';

题目:定义1个函数,实现字符串连接功能。
分析:
hello                 zhangsan


4 指针----地址
就是1种数据类型
四大基本数据类型
数组数据类型  int a[5];//   在JAVA中也可以这样定义  int[5]  a;
地址数据类型:
int * p1;
char *p2;
float *p3;
double *p4;
4.1 整型地址
4.1.1 如何定义1个整型地址变量
int *p;
注意:p是地址变量,而且它只能存1个整型数的地址,如存的是100这个整型数的地址(0x27ff0001)

4.1.2 给整型地址变量赋值
方法一:
int a=100;
int *p=&a;    //&是取地址 运算符

方法二:
int *p;
int a;
a=100;
p=&a;

注意:
有的项目要求,单独定义地址变量的时候,必须赋值为NULL;

题目:自定义1个函数,可以实现2个整型数的交换。在main函数中,调用该函数,验证结果。

知识点:
1 函数参数的传递方式
方式一:值传递(参数是4大基本数据类型)
参数是复制粘贴关系
被调用函数中的参数(形参),是复制品


方式二:地址传递(参数是地址类型)
参数是复制粘贴关系
被调用函数中的参数(形参),是复制品
注意:
但此时,自定义函数的函数体里,不是进行简单的地址的四则运算,还可以进行*运算(地址就变成 整型变量,而且这个变量是main函数里的真品)

题目:自定义1个函数,可以返回2个数的和、差、积、商。在main函数,定义2个整型数,让调用该函数,来验证结果。
代码:
#include <stdio.h>
void fun(int m,int n,int *a,int *b,int *c,int *d)
{
    *a=m+n;
    *b=m-n;
    *c=m*n;
    *d=m/n;
    return;
}

int main()
{
    int a=10;
    int b=20;
    int sum;
    int sub;
    int mulity;
    int shang;
    fun(a,b,&sum,&sub,&mulity,&shang);
    printf("sum is %d\n sub is %d\n mulity is %d\n shang is %d\n",sum,sub,mulity,shang);   
    return 0;
}

知识点:
1 如果,函数中的形参是数组名,则本质上是地址变量
如:
int fun(int a[]);    //以后不要这样用了,虽然符合语法规范。
int fun(int *a);      //二者完全等价,而且理解时要用地址变量来理解。
2 数组名
数组名是常量,所以不能进行a++这样的运算。但可以进行a+1这样的运算
这个常量是第1个元素的地址(一维数组是这样)


2 走读代码:
从main函数开始

2 怎样调试
设置断点
go
F10
F11
点memory
 
课后作业:自定义1个函数,可以求出某个数值范围内的所有质数。 在main函数中调用,进行验证。比如参数可能为100,或200

原文地址:https://www.cnblogs.com/blueswitkey/p/2934877.html