一、Xmind整理:
二、课上练习:
练习1:循环嵌套【三个循环结构可以任意嵌套】
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
for(int i=1;i<=5;i++)
{
for(int j=1;j<=i;j++)
{
printf("*");
}
printf("\n");
}
for(int i=1;i<=5;i++)
{
for(int j=5;j>=i;j--)
{
printf("*");
}
printf("\n");
}
for(int i=1;i<=5;i++)
{
for(int j=1;j<=6-i;j++)
printf(" ");
for(int j=1;j<=i;j++)
{
printf("*");
}
printf("\n");
}
for(int i=1;i<=5;i++)
{
for(int j=1;j<=i;j++)
printf(" ");
for(int j=5;j>=i;j--)
{
printf("*");
}
printf("\n");
}
return 0;
}
练习2:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
for(int i='F';i>='A';i--)
{
for(int j='F';j>i;j--)
{
printf("_");
}
for(int j='F';j>=i;j--)
{
printf("%c",j);
}
printf("\n");
}
return 0;
}
练习3:穷举算法: 我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五, 鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
x:公鸡的个数0---20
y:母鸡的个数0----33
z:小鸡的个数0---100
100元:5*x+3*y+z/3==100
100值:x+y+z==100
鸡雏三值钱一: z%3==0
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int x,y,z;
for(x=0;x<=20;x++)
{
for(y=0;y<=33;y++)
{
for(int z=0;z<=100;z++)
{
if(5*x+3*y+z/3==100&&x+y+z==100&&z%3==0)
printf("x=%d y=%d z=%d\n",x,y,z);
}
}
}
return 0;
}
练习4:一维数组的循环输入和输出
int main(int argc, const char *argv[])
{
int arr[4];
for(int i=0;i<4;i++)
{
scanf("%d",&arr[i]);
}
for(int i=0;i<4;i++)
{
printf("%d ",arr[i]);
}
}
练习5: 地址加1,表示向后移动一个元素大小字节,打印地址的格式控制符%p
int main(int argc, const char *argv[])
{
int arr[4]={11,22,33,44};
printf("arr=%p",arr);
printf("&arr[0]=%p\n",&arr[0]);
for(int i=0;i<4;i++)
{
printf("&arr[%d]=%p\n",i,&arr[i]);
printf("arr+%d=%p\n",i,arr+i); arr+i 等价于&arr[i]
}
练习6: 循环输入n数组元素,计算和
int n;
printf("please enter n:");
scanf("%d",&n);
int arr[n];
int sum=0;
for(int i=0;i<n;i++)
{
scanf("%d",&arr[i]);
sum+=arr[i];
}
printf("sum=%d\n",sum);
练习7: 循环输入n个数组元素,计算最大值,最小值
int n;
printf("please enter n:");
scanf("%d",&n);
int arr[n];
for(int i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
int max=arr[0];
int min=arr[0];
for(int i=0;i<n;i++)
{
if(max<arr[i])
max=arr[i];
if(min > arr[i])
min=arr[i];
}
printf("max=%d min=%d\n",max,min);
练习8: 对数组初始化以下【2,3,4,76,8,5】元素,查找key=100是否存在
int arr[]={2,3,4,76,8,5};
// sizeof(arr)/sizeof(int);
int len=sizeof(arr)/sizeof(arr[0]);
int key,count=0;
printf("please enter key:");
scanf("%d",&key);//3
//循环输入比较key
for(int i=0;i<len;i++)//
{
if(key==arr[i])
{
count++;//计算key出现的次数
printf("存在\n");
break;
}
}
if(count==0)//if(i==len)
printf("不存在\n");
练习9: 循环输入5个数组元素,冒泡排序
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int n,t,i,j,k,count;
printf("请问您想输入几个数组:");
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
{
printf("请输入第%d个数组:",i+1);
scanf("%d",&a[i]);
}
for(j=1;j<n;j++)
{
count=0;
for(k=0;k<n-j;k++)
{
if(a[k]>a[k+1])
{
t=a[k];
a[k]=a[k+1];
a[k+1]=t;
count++;
}
}
if(count==0)
break;
}
for(j=0;j<n;j++)
printf("%d\n",a[j]);
return 0;
}
三、课后作业:
1.循环输入二维数组,计算所有元素的和
ubuntu@ubuntu:7.6$ cat 11.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int m,n,i,j;
printf("请问您想输入几行几列的数组:");
scanf("%d%d",&m,&n);
int arr[m][n];
int sum=0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&arr[i][j]);
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
sum=sum+arr[i][j];
}
}
printf("所有元素和为:%d\n",sum);
return 0;
}