小总结:
1.数组名是一种地址常量,存放数组内存空间的首地址
2.数组元素的引用要指定下标
数组名 【下标】
3.一维数组初始化
类型名 数组名 【数组长度】= {出值表}
eg.int a [3] = {1,2,3};
规定:c语言只有静态存储数组才能初始化,但c编译系统都被允许赋初值
,静态储存的数组没有初始化直接赋值零
如果只对部分元素初始化,数组长度是不能省略的
4.斐波那数列
f [0] = f [1] =1
f [n] =f [n-1] =f [n-2]
5.注意:
<1>for () 后面没有;
<2> define SIZE 5 -----5指输入个数
6. 投票情况统计重点:count [response] ++;
7. 二维数组找出最大小值及行列下标:
先输入数:
printf ("");
for()
for()
scanf ("%d", &a[][])
按矩阵形式输出:
for () {
for ()
printf ("%4d", a[i][j]);
printf ("\n");
}
找最值以最大值为例:
先假设a[0][0]最大
如果a[i][j]比假设值大
再假设a [i][j]是新的最大值row=i;col=j;
8.转置行列互换
temp=a[i][j];
a [i][j] =a [j][i];
a[i][j] =temp;
9.闰年:能被4整除但不能被100整除或者能被400整除
闰年二月29天平年二月28天
10.回文就是字符串中心对称
eg:abcba abccba
11.结束符’\n’
12.
printf("%p\n", &a[0]);
printf("%p\n", &a[1]) ;这两行代码:能实现储存方式
一维数组
数组的定义和使用
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main()
{
int a[3]={1,2,3};
printf("%d\n", a[0]);
a[0]=a[2];
a[1]=a[0]*2;
for (int i=0;i<3;i++)
{
printf("%d\n",a[i]);
}
printf("%p\n", &a[0]);
printf("%p\n", &a[1]) ;
return 0;
}
小猪称重
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define SIZE 5
int main()
{
int a[SIZE];
for (int i=0;i<SIZE;i++)
{
scanf ("%d", &a[i]);
}
int max=0;
for(int i=0;i<SIZE;i++)
{
if(a[i]>max)
{
max=a[i];
}
}
printf("最重小猪体重为:%d\n", max);
return 0;
}
输出斐波那契数列
#include <stdio.h>
int main (void)
{
int i;
int fib [10] = {1,1};
for (i=2;i<10;i++)
fib [i] =fib [i-1] +fib [i-2];
for (i=0;i<10;i++){
printf ("%6d",fib [i]);
if ((i+1)%5==0)
printf ("/n");
}
return 0;
}
输出所有大于平均值的数
#include <stdio.h>
int main (void)
{
int i;
double average,sum;
int a [10];
printf ("Enter 10 integers:");
sum=0;
for (i=0;i<10;i++){
scanf("%d", &a[i]);
sum=sum+a[i];
}
average=sum/10;
printf("averge=% .2f\n", average);
printf(">average:");
for (i=0;i<10;i++){
if(a[i]>average)
printf("%d",a[i]);
}
printf ("\n");
return 0;
}
输入一个以回车符为结束标志字符串
#include <stdio.h>
int main (void)
{
int i,number;
char str [10];
printf ("Enter a string:");
i=0;
while ((str [i] =getchar ())!='\n')
i++;
str [i] ='\0';
number=0;
for (i=0;str [i]!='\0';i++)
if (str [i]>='0'&&str [i]<='9')
number=number*10+str [i]-'0';
printf ("digit=%d\n",number);
return 0;
}
统计字符串中数学字符的个数
#include <stdio.h>
int main (void)
{
int count,i;
char str [80]="apple12345";
printf ("Enter a string:");
i=0;
while ((str [i] =getchar())!= '\n')
i++;
str [i]='\0';
count =0;
for (i=0;str [i]!='\0';i++)
if (str [i] <='9'&&str [i] >='0')
count++;
printf ("count=%d\n", count);
return 0;
}
选择法排序
#include <stdio.h>
int main(void)
{
int i,index,k,n,temp;
int a [10];
printf("Enter n:");
scanf("%d", &n);
printf("Enter %d integers:",n);
for(i=0;i<n;i++)
scanf("%d", &a[i]);
for (k=0;k<n-1;k++){
index=k;
for (i=k+1;i<n;i++)
if(a[i]<a[index]) index=i;
temp=a[index];
a[index]=a[k];
a[k]=temp;
}
printf ("After sorted:");
for (i=0;i<n;i++)
printf ("%d", a[i]);
printf("\n");
return 0;
}
在数组中查找一个给定的数
#include <stdio.h>
int main (void)
{
int i,flag,x;
int a[5];
printf("Enter 5 integers:");
for(i=0;i<5;i++)
scanf("%d", &a[i]);
printf("Enter x:");
scanf ("%d", &x);
flag=0;
for(i=0;i<5;i++)
if (a[i] ==x){
printf ("Index is %d\n", i);
flag=1;
break;
}
if(flag==0)
printf ("Not Found\n");
return 0;
}
找出数组的最小值和它所对应的下标
#include <stdio.h>
int main(void)
{
int i,index,n;
int a [10];
printf ("Enter n:");
scanf ("%d", &n);
printf ("Enter %d integers:",n);
for (i=0;i<n;i++)
scanf("%d", &a[i]);
index=0;
for (i=1;i<n;i++)
if (a[i]<a[index])
index=i;
printf("min is %d\tsub is %d\n",a[index],index);
return 0;
}
二维数组
方阵转置
#include <stdio.h>
int main(void)
{
int i,j,n,temp;
int a[6][6];
printf ("Enter n:");
scanf ("%d", &n);
for (i=0;i<n;i++)
for (j=0;j<n;j++)
a[i][j]=i*n+j+1;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
if(i<=j){
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
for (i=0;i<n;i++){
for (j=0;j<n;j++)
printf("%4d", a[i][j]);
printf ("\n");
}
return 0;
}
计算某个日期对应该年的第几天
#include <stdio.h>
#include <math.h>
int day_of_year (int year,int month,int day)
{
int k,leap;
int tab[2][13] = {
{0,31,28,31,30,31,30,31,31,30,31,30,31 },
{0,31,29,31,30,31,30,31,31,30,31,30,31 }
};
leap=(year %4==0 &&year%100!=0 ||year%400==0);
for (k=1;k<month;k++)
day=day+tab[leap][k];
return day;
}
找出矩阵中的最大值及其行下标和列下标
#include <stdio.h>
int main(void)
{
int col,i,j,row;
int a[3][2];
printf ("Enter 6 integers:\n");
for (i=0;i<3;i++)
for (j=0;j<2;j++)
scanf ("%d", &a[i][j]);
for(i=0;i<3;i++){
for (j=0;j<2;j++)
printf ("%d", a[i][j]);
printf ("\n");
}
row=col=0;
for(i=0;i<3;i++)
for(j=0;j<2;j++)
if(a[i][j]>a[row][col]){
row=i;
col=j;
}
printf("max=a[%d][%d]=%d\n",row,col,a[row][col]);
return 0;
}
自我总结
时间不够了,还得继续加油,欠下了好多知识,现在不学习等着什么时候后悔!!!再难也得坚持再不会也得学完再慢也得学懂。
小总结: 1.数组名是一种地址常量,存放数组内存空间的首地址 2.数组元素的引用要指定下标 数组名 【下标】 3.一维数组初始化 类型名 数组名 【数组长度】= {出值表} eg.int a [3] = {1,2,3}; 规定:c语言只有静态存储数组才能初始化,但c编译系统都被允许赋初值 ,静态储存的数组没有初始化直接赋值零 如果只对部分元素初始化,数组长度是不能省略的 4.斐波那数列 f [0] = f [1] =1 f [n] =f [n-1] =f [n-2] 5.注意: <1>for () 后面没有; <2> define SIZE 5 -----5指输入个数 6. 投票情况统计重点:count [response] ++; 7. 二维数组找出最大小值及行列下标: 先输入数: printf (""); for() for() scanf ("%d", &a[][]) 按矩阵形式输出: for () { for () printf ("%4d", a[i][j]); printf ("\n"); } 找最值以最大值为例: 先假设a[0][0]最大 如果a[i][j]比假设值大 再假设a [i][j]是新的最大值row=i;col=j; 8.转置行列互换 temp=a[i][j]; a [i][j] =a [j][i]; a[i][j] =temp; 9.闰年:能被4整除但不能被100整除或者能被400整除 闰年二月29天平年二月28天 10.回文就是字符串中心对称 eg:abcba abccba 11.结束符’\n’ 12. printf("%p\n", &a[0]); printf("%p\n", &a[1]) ;这两行代码:能实现储存方式
|