一.数组
1.一维数组
(1)定义数组;
(2)使用数组;
(3)引用数组求学生成绩的输入、输出、求最大、最小、平均值、排序等操作:
#include <stdio.h>
#define N 10
int main(int argc,char *argv[])
{
int score[N];
for(int i = 0;i<N;i++)
{ printf("\n请输入第%d个学生成绩",i);
scanf("%d",&score[i]);
}
for(int j = 0;j<N;j++)
{
printf("\n第%d个学生成绩为%d\n",j,score[j]);
}
int max = score[0];
int min = score[0];
for(int j = 1;j<N;j++)
{
if(max<score[j])
{
max=score[j];
}
}
printf("\n max = %d\n",max);
for(int j = 1;j < N;j++)
{
if(min>score[0])
{
min = score[j];
}
}
printf(" min = %d\n",min);
int sum = 0;
for(int i = 0;i<N;i++)
{
sum +=score[i];
}
float aver = sum/N;
printf("aver = %.3f\n",aver);
for(int i =0;i<N-1;i++)
for(int j = i+1;j<N;j++)
{
if(score[i]>score[j])
{
int t = score[i];
score[i] = score[j];
score[j] = t;
}
}
printf("输出按从小到大排好序后的学生成绩:\n");
for( int i = 0;i < N;i++)
{
printf("%d\n",score[i]);
}
for( int i = 0; i < N - 1; i++)
for(int j = i+1;j < N;j++)
{
if(score[i]<score[j])
{
int t = score[i];
score[i] = score[j];
score[j] = t;
}
}
printf ("输出按从大到小排好序后的学生成绩:\n");
for(int i = 0; i < N; i++)
{
printf("%d\n",score[i]);
}
return 0;
}
二.多维数组
(1)定义多维数组;
(2)使用多维数组;
(3)要求用二维数组处理学生成绩问题:
如果学院有5个班,每个班30人,求所有成绩中最高分是哪个班的,第几个学生?
三.函数 (系统函数和自定义函数)
(1)函数是将程序中的功能模块化处理;
(2)函数的定义格式:
返回值 函数名(参数列表)
{
函数体
}
(3)自定义下列函数:
void arrayinput(int *array,int count)
{
for(int i = 0; i< count;i++)
{ printf("输入第%d个学生成绩",i);
scanf("%d",&array[i]);
}
}
void arrayprintf(int *array,int count)
{
for(int i = 0;i < count;i++)
{
printf("\n第%d个学生成绩为%d \n",i,array[i]);
}
}
int arrayMax(int *array,int count)
{
int max = array[0];
for(int i = 1;i < count;i++)
{ if(max < array[i])
{
max = array[i];
}
}
return max;
}
int arrayMin(int *array,int count)
{
int min = array[0];
for(int i = 1;i < count;i++)
{ if(min > array[i])
{
min = array[i];
}
}
return min;
}
void arraySort(int *array,int count,int order)
{
if(order == 0)
{
for( int i = 0;i < count-1;i++)
{
for( int j = i + 1;j < count;j++ )
{
if(array[i] >array[j])
{
int t = array[i];
array[i] = array[j];
array[j] = t;
}
}
}
printf("输出按从小到大排好序后的学生成绩:\n");
for(int i = 0;i <count;i++)
{
printf("%d\n",array[i]);
}
}
else if(order == 1)
{
for( int i = 0;i < count-1;i++)
{
for( int j = i + 1;j < count;j++ )
{
if(array[i] < array[j])
{
int t = array[i];
array[i] = array[j];
array[j] = t;
}
}
}
printf("输出按从大到小排好序后的学生成绩:\n");
for(int i = 0;i <count;i++)
{
printf("%d\n",array[i]);
}
}
}
四.指针的操作
(1)指向变量的指针
(2)指针作为函数参数
(3)指向数组的指针
(4)有关指针程序:
#include <stdio.h>
#include <stdlib.h>
#define N 10
int main (int argc,char * argv[])
{
int *p;
p =(int*) malloc(sizeof(int)*10);
int *temp = p;
for(int i = 0;i < N;i++)
{
printf("\n请输入?第%d个学生成绩",i);
scanf("%d",temp);
temp++;
}
temp = p;
for( int i = 0; i<N;i++)
{
printf("\n第%d个学生成绩为%d\n",i,*temp);
temp++;
}
temp = p;
int max = *temp;
for(int i = 1;i<N;i++)
{ temp++;
if(max < *temp )
max = *temp;
}
printf("\n max = %d",max);
temp = p;
int min = *temp;
for(int i = 1;i < N;i++)
{
temp ++;
if(min > *temp)
min = *temp;
}
printf("\n min = %d",min);
temp = p;
float sum = 0;
float aver ;
for( int i = 0; i < N;i++)
{
sum += *temp;
temp++;
}
aver = sum/N;
printf("\n aver = %.3f",aver);
五.字符串处理
(1)用字符处理字符数组
(2)自定义有关字符串的函数:
int mystrlen(char *s)
{
int n=0;
while(*s){n++;s++;}
return n;
}
int mystrcat(char *s,char *t)
{
int i,n=mystrlen(s);
for (i=0;i<mystrlen(t);i++)
{
s[i+n]=t[i];
}
s[n+mystrlen(t)]='\0';
return 0;
}
int mystrcmp(char str1[],char str2[])
{
int flag=0;
int i=0;
while(str1[i]!='\0'||str2[i]!='\0')
{
if(str1[i]>str2[i])
{
flag=1;break;
}
if(str1[i]<str2[i])
{
flag=-1;break;
}
i++;
}
if(flag==0)
{
if(str1[i]!='\0')
flag=1;
else if(str2[i]!='\0')
flag=-1;
}
return flag;
}
int strfind(char * str,char ch,int * loc)
{
int i;
for(i=0;str[i] != '\0'; i++){
if(str[i] == ch){
*loc = i+1;
return *loc;
}
}
*loc = -1;
return 0;
}