for循环的一些应用
1.for循环打印出大写字母的ASCLL码的对照表。
#include <stdio.h>
int main()
{
char a;
for(a='A';a<='Z';a++)
{
printf("%c:%d\t",a,a);
}
return 0;
}
2.输出0-100之间不能被3整除的数。(for循环,continue语句)
#include <stdio.h>
int main()
{
int i,j;
for(i=0;i<=100;i++)
{
j=i%3;
if(j==0)
{
continue;
}
printf("输出整数:%d\n",i);
}
return 0;
}
数组
数组下标是从0开始的!无论一维数组还是二维数组下标都可以是整型常量或整型表达式!
数组中的每个元素要保存字符串的类型,要使用字符指针!
例、
char* a[2];
a[0]="wang";
a[1]="li";
一维数组
1.使用数组保存数据
#include <stdio.h>
int main()
{
int a[5],i,temp;
printf("请逐个输入元素:\n");
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
printf("显示数组中的元素:\n");
for(i=0;i<5;i++)
{
printf("%d",a[i]);
}
printf("\n");
for(i=0;i<2;i++) //用for循环掉换位置
{
temp=a[i];
a[i]=a[4-i];
a[4-i]=temp;
}
printf("输出现在的数组值:\n");
for(i=0;i<5;i++)
{
printf("%d",a[i]);
}
printf("\n");
return 0;
}
2.使用数组保存姓名。(数组中的每个元素都能保存字符串,要使用字符指针类型)
#include <stdio.h>
int main()
{
char* a[3];
int i;
a[0]="wang";
a[1]="li";
a[2]="gu";
for(i=0;i<3;i++)
{
printf("%s\n",a[i]);
}
return 0;
}
3.赋值数组(指定数组变量长度)
#include <stdio.h>
int main()
{
int i;
int a[6]={1,2,3};
for(i=0;i<6;i++)
{
printf("%d",a[i]); //观察输出的元素
}
return 0;
}
输出结果
123000
(不指定数组变量长度)
#include <stdio.h>
int main()
{
int i;
int a[]={1,2,3};
for(i=0;i<3;i++)
{
printf("%d",a[i]);
}
return 0;
}
输出结果
123
二维数组
1.通过二维数组保存数据,并且求最大数组元素,最小数组元素及其下标,将二维数组转换为另一个二维数组并显示。
#include <stdio.h>
int main()
{
int a[2][3],b[3][2];
int max,min;
int i,j,h,l;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
printf("输出二维数组:\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
//求数组元素的最大值及下标
max=a[0][0];
h=0;
l=0;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
if(max<a[i][j])
{
max=a[i][j];
h=i;
l=j;
}
}
}
printf("数组中最大元素是:\n");
printf("a[%d][%d]=%d\n",h,l,max);
//求数组元素的最小值及下标
min=a[0][0];
h=0;
l=0;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
if(min>a[i][j])
{
min=a[i][j];
h=i;
l=j;
}
}
}
printf("数组中最小元素是:\n");
printf("a[%d][%d]=%d\n",h,l,min);
//将数组a转换后存入数组b
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
b[j][i]=a[i][j];
}
}
printf("输出数组b:\n");
for(j=0;j<3;j++)
{
for(i=0;i<2;i++)
{
printf("%d\t",b[j][i]);
}
printf("\n");
}
return 0;
}
2.任意输入一个3行3列的二维数组,求其对角元素之和。
#include <stdio.h>
int main()
{
int a[3][3];
int i,j,sum=0;
printf("输入数组元素:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
printf("\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(i==j)
{
sum=sum+a[i][j];
}
}
}
printf("结果为:%d\n",sum);
return 0;
}
字符数组
字符数组的结束标志
字符串总是以"\0"作为结束符,字符数组保存字符串,系统会自动添加"\0"。
用字符串方式赋值比字符逐个赋值要多占一个字节!
要点:Linux下gcc编译不支持gets命令,会有warning,所以我们应该使用fgets,使用方法如下: 格式: fgets(变量名,变量长度,stdin)
例、
#include<stdio.h>
int main()
{
char a[20];
fgets(a,20,stdin); //stdin 键盘输入
fputs(a,stdout); //stdout输出
return 0;
}
1.利用二维字符数组输出一个钻石。
#include <stdio.h>
int main()
{
int i,j;
char a[][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%c",a[i][j]);
}
printf("\n");
}
return 0;
}
2.计算字符串中单词个数。
#include <stdio.h>
int main()
{
int i,w=1;
char a[100];
char b;
printf("输入一段英文:\n");
fgets(a,100,stdin);
if(a[0]=='\0')
{
printf("There is no char!\n");
}
else if(a[0]==' ')
{
printf("First char is a blank!\n");
}
else
{
for(i=0;a[i]!='\0';i++)
{
b=a[i];
if(b==' ')
{
w++;
}
}
printf("单词个数:%d\n",w);
}
return 0;
}