以下程序教材基于 谭浩强C程序设计(第四版)
第1题 求整型一维数组中所有元素的和(假定数组长度为10)。
/*求整型一维数组所有元素的和*/
# include<stdio.h>
int main(void)
{
int a[10],sum=0,i;
printf("请输入10个整数\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
printf("\n");
printf("十个整数的和为:%d\n",sum);
return 0;
}
第2题 教材P.168习题5,将一个整型数组中的值按逆序重新存放(假定数组长度为5)。例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。
/*将一个数组中的值按逆序重新存放。*/
# include<stdio.h>
int main(void)
{
int a[5],i;
printf("请输入五个整数\n");
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
printf("其逆序为:\n");
for(i=4;i>=0;i--)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
第3题 从键盘读取10个整数存入数组,找出其中最大值和最小值。
/*从键盘输入十个整数,输出其最大值和最小值*/
# include<stdio.h>
int main(void)
{
int a[10],i,max,min;
printf("请输入十个整数\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
max=a[0];
min=a[0];
if(a[i]>max)
{
max=a[i];
}
if(a[i]<min)
{
min=a[i];
}
}
printf("最大值为:%d,最小值为:%d\n",max,min);
return 0;
}
第4题 用起泡法对10个整数排序(从小到大递增排序)。
/*练习:冒泡排序*/
# include<stdio.h>
int main(void)
{
int a[10];
int i,j,t;
printf("请输入10个数字:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]<a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("该数列降序排列为:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
第5题 教材P.168习题2,用选择法对10个整数排序(从小到大递增排序)。
/*选择法对10个整数排序*/
# include<stdio.h>
int main(void)
{
int a[10],i,j,k=0,t=0;
printf("请输入10个数: \n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
if(a[k]>a[j])
{
k=j;
}
if(k!=i)
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
printf("升序排列为:\n");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
第6题 实现3×4整型矩阵的输入和按行输出。
/*实现3*4矩阵的输入和按行输出*/
# include<stdio.h>
int main(void)
{
int a[3][4];
int i,j,n;
printf("请输入12个整数\n");
for(i=0;i<3; i++)
for(j=0;j<4;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
printf("按行输出为:\n");
for(i=0;i<3;i++)
for(j=0,n=0;j<4;j++,n++)
{
if(n%4==0)
printf("\n");
printf("%d ",a[i][j]);
}
printf("\n");
return 0;
}
第7题 分别求一个3×3矩阵的主对角线、副对角线、靠边元素和。
/*分别求一个3*3矩阵的主对角线,副对角线,靠边元素之和*/
# include<stdio.h>
int main(void)
{
int a[3][3];
int i,j,c=0,d=0,e=0,f;
printf("请输入9个整数\n");
for(i=0;i<3; i++)
for(j=0;j<3;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
for(i=0;i<3;i++)
{
c+=a[i][i];
}
d=a[2][0]+a[1][1]+a[0][2];
for(i=2;i>=0;i--)
for(j=0;j<3;j++)
{
e+=a[i][j];
}
f=e-a[1][1];
printf("主对角线之和为%d 副对角线之和为%d 靠边元素之和为%d\n",c,d,f);
return 0;
}
第8题 完成例6.4,将一个二维数组行和列元素互换,存到另一个二维数组中。
/*二维数组转置*/
# include<stdio.h>
int main(void)
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("array a:\n");
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("array b:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n");
}
return 0;
}
第9题 完成例6.5,有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
# include<stdio.h>
int main(void)
{
int i,j,row=0,colum=0,max;
int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]>max)
{
max=a[i][j];
row=i;
colum=j;
}
printf("max=%d\nrow=%d\ncolum=%d\n",max,row,colum);
return 0;
}
第10题 教材P.169习题10。
/*有一篇文章,共有3行文字,每一行80个字符。要求分别统计出其中
英文大写字母,小写字母,数字,空格,以及其他字符的个数*/
# include<stdio.h>
# include<string.h>
int main(void)
{
char a[3][80];
int i,j,daxie,xiaoxie,num,space,other;
daxie=xiaoxie=num=space=other=0;
for(i=0;i<3;i++)
{
printf("请输入一行字符\n");
gets(a[i]);
for(j=0;j<80&&a[i][j]!='\0';j++)
{
if(a[i][j]>='A'&&a[i][j]<='Z')
daxie++;
else if(a[i][j]>='a'&&a[i][j]<='z')
xiaoxie++;
else if(a[i][j]>='0'&&a[i][j]<='9')
num++;
else if(a[i][j]==' ')
space++;
else
other++;
}
}
printf("\n大写字母:%d\n小写字母:%d\n数字:%d\n空格:%d\n其他字符:%d\n",daxie,xiaoxie,num,space,other);
return 0;
}
第11题 在长度为10的数组中生成互不相同的0-9之间的随机整数。
/*在长度为10的数组中生成互不相同0~9之间的随机整数*/
# include<stdio.h>
# include<stdlib.h>
int main(void)
{
int a[10],i,x,j;
for(i=0;i<10;i++)
{
x=rand()%10; //产生随机数,rand函数功能为获取一个伪随机数//
for(j=0;j<i;j++)
{
if(a[j]==x)
break;
}
if(j>=i)
a[i]=x;
else
i--;
}
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}