文章目录
前言
本文是关于学习c语言数组的基本题目练习
一、一维数组
1.输入6个数,找出其中最大的数
代码如下:
#include<stdio.h>
int main()
{
int a[40],i,max;
for(i=0;i<6;i++)
scanf("%d",&a[i]);
max=a[0];
for(i=0;i<6;i++)
if(a[i]>max)
max=a[i];
printf("%d",max);
return 0;}
注意:这里不能只用一个循环就能搞定,还是定义两个循环,第一个输入数组,第二个进行比较。
2.把N个数按从小到大的顺序(升序)排列(冒泡法)
代码如下:
#include<stdio.h>
#define N 5
int main(void)
{
int a[N],i,j,t,m;
printf("please input %d numbers:\n",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
/*排序开始*/
for(i=0;i<N-1;i++)
for(j=0;j<N-1-i;j++)
{ if(a[j]>a[j+1])
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;}
}
/*排序结束*/
printf("the sorted numbers:\n");
for(m=0;m<N;m++)
printf("%d ",a[m]);
printf("\n");
return 0;
}
运用宏定义,冒泡法进行排序
二、二维数组
1.矩阵转置
#include<stdio.h>
int main()
{
int a[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
b[j][i]=a[i][j];
for(j=0;j<3;j++)
{ for(i=0;i<2;i++)
printf("%d ",b[j][i]);
printf("\n");}
return 0;}
二维数组的赋值及输入输出,一般都要用二重循环
2.找出二维数组中的最大数及其所在位置
#include<stdio.h>
int main()
{
int a[3][4],max,c,b,i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
max=a[0][0];
c=0;
b=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(a[i][j]>max)
{max=a[i][j];
c=i;
b=j;}
printf("\nmax: %d row: %d col: %d\n",max,c,b);
return 0;}
注意:数组名不能和变量名重合,int a[3][4],a;这样就会出错
三、字符数组
1.一维字符数组输入
#include<stdio.h>
int main()
{
char a[30];int i;
i=-1;
do
{i++;
scanf("%c",&a[i]);
}while(a[i]!='\n');
a[i]='\0';
for(i=0;a[i]!='\0';i++)
printf("%c",a[i]);
printf("\n");
return 0;}
注意:循环结束的条件是a[i]!='\n',输入回车符则循环结束
#include<stdio.h>
int main()
{
char s[30];
scanf("%s",s);
printf("%s\n",s);
return 0;}
遇到空格‘\0’输入结束
2.统计字符串中的字符总个数,字母个数以及数字个数
#include<stdio.h>
#include<string.h>
int main()
{
char a[80];
int i,t,l=0,d=0;
gets(a);
t=strlen(a);
strlwr(a);
for(i=0;a[i]!='\0';i++)
{if(a[i]>='0'&&a[i]<='9')
d++;
else if(a[i]>='a'&&a[i]<='z')
l++;}
printf("total=%d,letter=%d,digit=%d\n",t,l,d);
return 0;}
字符总和用的是strlen函数,将所有字母转换成小写字母用的是strlwr函数
3.查找人员是否为羊村人员
#include<stdio.h>
#include<string.h>
#define N 3
int main()
{
char a[N][20]={"喜羊羊","美羊羊","懒羊羊"};
char name[20];
int i;
gets(name);
for(i=0;i<N;i++)
if(strcmp(name,a[i])==0) break;
if(i<N)
printf("%s是羊村的\n",name);
else
printf("%s不是羊村的\n",name);
return 0;}