C语言程序设计习题5
- 格式:doc
- 大小:68.50 KB
- 文档页数:19
}
解:
3
9.求一个3×3矩阵对角线元素之和。
解:
#include<stdio.h>
main()
{
float a[3][3],sum=0;
int i,j;
printf("请输入矩阵元素:\n");
for (i=0;i<3;i++)
for (j=0;j<3;j++)
scanf("%f",&a[i][j]);
t=a[i];
a[i]=a[min];
a[min]=t;
}
printf("\n排序结果如下:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
}
程序运行情况如下:
请输入10个数:
6 90 45 56 1 15 44 78 58 101
排序结果如下:
1 6 15 44 45 56 58 78 90 101
void main()
{
int i,j,min,t,a[10];
printf("请输入10个数:\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<10-1;i++)
{
min=i;
for(j=i;j<10;j++)
if(a[min]>a[j]) min=j;
4.常用的字符处理函数有哪些?
解:常用的字符处理函数有以下8个。
(1)puts(字符串):作用为将一个字符串输出到终端。
(2)gets(字符数组):作用为从终端输入一个字符串到字符数组,并且得一个函数值。
(3)strcat(字符串1,字符串2):作用为进行字符串的连接。
(4)strcpy(字符串1,字符串2):作用为进行字符串的复制。
printf("%5d",a[i]);
return 0;
}
解:
1 5 9 11 11 13 15
(2)#include<stdio.h>
intmain()
{
int a[3][3],i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=i;
for(i=0;i<3;i++)
解:下标的意义是对数组的各个数组元素进行标识和区分。由数组名和下标结合起来形成数组元素的名字。
3.使用字符数组来存储字符串应注意什么问题?
解:需要注意的问题是字符数组在存储字符串时是以'\0'作为结束标记的。这个'\0'是系统自动加上的。所以字符数组的长度需要比它要存储的字符串的长度至少多1。例如,要存储字符串"abcd",因为它的长度为4,所以存储它的字符数组的长度至少为5。
for (i=0;i<3;i++ )
sum=sum+a[i][i];
printf("对角线元素之和=%.2f\n",sum);
}
程序运行情况如下:
请输入矩阵元素:
1 2 3 4 5 6 7 89↙
对角线元素之和=15.00
10.找出一个二维数组中的鞍点,所谓鞍点是指该位置上的数在该行最大,在该列最小。需要注意的是,并不是所有的二维数组都有鞍点。
if(strcmp(p[i],p[j])>0)
{strcpy(t,p[i]); strcpy(p[i],p[j]); strcpy(p[i],t); }
}
int main()
{
char p[5][10]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[0]));
{
if(a[x]>max)
max=a[x];
printf("%4d",a[x]);
}
printf("\nmax=%d\n",max);
return 0;
}
程序运行结果如下:
41 67 34 0 69 24 78 58 62 64
max=78
6.输入10个整数,要求按照从小到大的顺序输出。
解:
#include<stdio.h>
if (max>a[k][maxj])
flag1=0;
if (flag1)
{
printf("\n第%d行,第%d列的%d是鞍点\n",i,maxj,max);
flag2=1;
}
}
if(!flag2)
printf("\n矩阵中无鞍点!\n");
}
矩阵中有鞍点,运行情况如下:
输入行数n:2↙
输入列数m:2↙
9876543210
8.写出下列程序的运行结果。
(1)#include<stdio.h>
void fun(int b[])
{
int i=0;
while(b[i]<=10)
{
b[i]+=2;
i++;
}
}
int main()
{
int i,a[]={1,5,7,9,11,13,15};
fun(a+2);
for(i=0;i<7;i++)
}
/*顺序颠倒*/
for(i=0;i<N/2;i++)
{
t=a[i];
a[i]=a[N-i-1];
a[N-i-1]=t;}来自printf("顺序颠倒后的字符:\n");
for(i=0;i<N;i++)
printf("%c",a[i]);
}
程序运行情况如下:
请输入10个字符:
0123456789↙
顺序颠倒后的字符:
7.输入10个字符,并将它们的顺序颠倒后输出。
解:
#include<stdio.h>
#define N 10
void main()
{
char a[N],t;
int i;
/*输入10个字符并输出*/
printf("请输入10个字符:\n");
for(i=0;i<10;i++)
{
scanf("%c",&a[i]);
for(j=1;j<=5;j++)
scanf("%d",&score[i][j]);
}
for(i=1;i<=30;i++)
{
score[i][6]=0;
for(j=1;j<=5;j++)
score[i][6]+=score[i][j];
}
printf("期末成绩单\n");
printf("%10s%10s%10s%10s%10s%10s%10s\n","学号","课程1","课程2","课程3","课程4","课程5","总分");
解:
#define N 10
#define M 10
#include <stdio.h>
void main()
{
int i,j,k,m,n,flag1,flag2,a[N][M],max,maxj;
printf("\n输入行数n:");
scanf("%d",&n);
printf("\n输入列数m:");
}
解:
3 5 7
(4)#include <stdio.h>
#include <string.h>
int main()
{
char p[20]={'a','b','c','d'},q[]="abc",r[]="abcde";
strcpy(p+strlen(q),r); strcat(p,q);
printf("%d\n%d\n",sizeof(p),strlen(p));
printf("%6d",a[i][j]);
printf("\n");
}
printf("\n");
}
程序运行结果如下:
1
11
121
1331
14641
15101051
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
voidmain()
{
int i,j,a[N][N];
for(i=1;i<N;i++)
{
a[i][i]=1;
a[i][1]=1;