31
7. 编写程序,求一个正整数的位数(提示:关系表达式的值可以参与算术运算)。(此题为选做)
#include
{long a,n=0,m=1;
printf(\请输入一个正整数a=\ scanf(\do
{if(a/m!=0){n++;m=m*10;} else break; } while(1);
printf(\正整数%ld的位数是:%ld\\n\} 实验九
1、求一个3×3的整数矩阵的副对角线上所有奇数的和sum2。 #include
{int a[3][3],sum2=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++)
{scanf(“%d”,&a[i][j]);
32
if(i+j==2&&a[i][j]%2)
sum2+=a[i][j]; }
printf(“sum2=%d”,sum2); }
2、输入一个正整数n(1 ⑴ 输出这些数的平均值(保留2位小数)。 ⑵ 把这些数逆序后再输出。 ⑶ 输出它们中的最大值及其下标(设最大值唯一,下标从0开始)。 ⑷ 将它们中的最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。 #include {int a[10],n,min,max,xb0,xb1,i,sum,t; float aver; printf(\scanf(\for(i=0;i 33 max=a[0];xb1=0; sum=a[0]; for(i=1;i {if(min>a[i]){min=a[i];xb0=i;}; if(max aver=1.0*sum/n; printf(\平均值为:%3.2f\\n\printf(\逆序输出:\ for(i=0;i printf(\最大值为:%d,其下标为:%d\\n\t=a[0];a[0]=a[xb0];a[xb0]=t; for(i=0;i t=a[n-1];a[n-1]=a[xb1];a[xb1]=t; printf(\经交换后输出:\for(i=0;i 34 printf(\} 3. 定义一个含有30个整型元素的数组a,按顺序分别赋予从2开始的偶数;然后按顺序每5个数求出一个平均值,放在另一个数组b中存储,输出数组b中6个元素的值。 #include float b[6]={0,0,0,0,0,0}; for(i=0;i<30;i++)a[i]=(i+1)*2; for(i=0;i<6;i++) {for(j=0;j<5;j++) b[i]+=a[i*5+j]; b[i]=b[i]/5.; printf(\ } } 4. 通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半角元素的值。 #include 35 for(i=0;i<5;i++) for(j=0;j<5;j++)a[i][j]=i*5+j+1; for(i=0;i<5;i++) {for(j=0;j<=i;j++) printf(\ printf(\} } 5. 从键盘输入两个字符串a和b,要求不使用库函数strcat,把串b的前5个字符连接到串a中;如果b中的长度小于5,则把b的所有元素都连接到a中。 #include {char a[20],b[20]; int i,j; gets(a); gets(b); for(i=0;a[i]!='\\0';i++); for(j=0;b[j]!='\\0'&&j<5;j++) a[i+j]=b[j]; a[i+j]='\\0'; puts(a); }

