已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。 代码:
#include
{ int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1,temp2,number,end,i,j; printf(\ for (i=0;i<10;i++) printf(\ printf(\
printf(\ scanf(\ end=a[9];
if (number>end) a[10]=number; else
{for (i=0;i<10;i++) {if (a[i]>number) {temp1=a[i]; a[i]=number; for (j=i+1;j<11;j++) {temp2=a[j]; a[j]=temp1; temp1=temp2; } break; } } }
printf(\ for (i=0;i<11;i++) printf(\ printf(\ return 0; }
运算结果:
第三题:
有一篇文章,共有3行文字文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
代码:
#include
{int i,j,upp,low,dig,spa,oth; char text[3][80];
upp=low=dig=spa=oth=0; for (i=0;i<3;i++)
{ printf(\ gets(text[i]);
for (j=0;j<80 && text[i][j]!='\\0';j++) {if (text[i][j]>='A'&& text[i][j]<='Z') upp++;
else if (text[i][j]>='a' && text[i][j]<='z') low++;
else if (text[i][j]>='0' && text[i][j]<='9') dig++;
else if (text[i][j]==' ') spa++; else oth++; } }
printf(\ printf(\ printf(\ : %d\\n\ printf(\ : %d\\n\ printf(\ : %d\\n\ return 0; }
运行结果:
第四题:
找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。
应当至少准备两组测试数据: 1.二维数组有鞍点,例如:
99021080?60?32054096110189
二维数组没有鞍点,例如:
9902104580?60?35420540961101891567
用scanf函数从键盘输入数组各元素的值,检查结果是否正确。题目并未指定二维数组的行数和列数,程序应能处理任意行数和列数的数组。因此,从理论上来说,应当准备许多种不同行数和列数的数组,但这样的工作量太大,一般来说不需要这样做,只需准备典型的数据即可。
如果已指定了数组的行数和列数,可以在程序中对数组元素赋初值,而不必用scanf函数。请读者修改程序以实现之。 代码:
#include
#define M 3 /* 数组为3行3列 */ int main() {
int i,j,k,a[N][M],max,maxj,flag;
printf(\
for (i=0;i {max=a[i][0]; /* 开始时假设a[i][0]最大 */ maxj=0; /* 将列号0赋给maxj保存 */ for (j=0;j flag=1; /* 先假设是鞍点,以flag为1代表 */ for (k=0;k if(flag) /* 如果flag1为1表示是鞍点 */ {printf(\ /* 输出鞍点的值和所在行列号 */ break; } } if(!flag) /* 如果flag为0表示鞍点不存在 */ printf(\ return 0; } 运行结果:① ② 实验总结:本实验(3)与实验五中(1)个有些类似,故在此基础上,对程序 进行部分修改,即可运行出结果,其他程序运行过程中总是报错,调试了好多次才弄好。不得不说,c语言很强大,自己需要掌握的还有很多。