/*printf(\ s=s+t; }
printf(\}
5. 编写程序,输出下列形式的杨辉三角形的前10行。(此题为选做) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 ……
#include
{int i,j,a[10]={1,1};
printf(\ for(i=2;i<10;i++) {a[i]=1;
for(j=i-1;j>=1;j--)a[j]+=a[j-1]; for(j=0;j<=i;j++)
printf(\ printf(\}
getch(); }
实验八
1、打印输出由1,2,3,4四个数字组成的4位数,并统计它的个数(允许该4位数中有相同的数字,例如:1111,1122,,1212等).。
#include
{int n,a,b,c,d,num=0; for(a=1;a<=4;a++) for(b=1;b<=4;b++) for(c=1;c<=4;c++) for(d=1;d<=4;d++)
{n=1000*a+100*b+10*c+d; printf(“]”,n); num++;
}
printf(“\\nnum=%d\\n”,num); }
2、从键盘输入10个正整数进行求和,如果错误地输入了负数,则求和结束。请分别用break和不用break编写相应程序。
解(1) 用break编写程序
#include
{int i,n,sum=0; for(i=1;i<=10;i++) {scanf(“%d”,&n); if(n>=0)sum+=n;
else break; }
printf(“sum=%d”,sum); }
解(2) 不用break编写程序 #include
{int i=1,n=0,sum=0; while(i<=10&&n>=0) {scanf(“%d”,&n); if(n>=0)
sum+=n; i++; }
printf(“sum=%d”,sum); }
3. 勾股定理为:a2+b2=c2,编写程序,输出30以内满足上述关系的整数组合,例如3,4,5就是一个整数组合。
#include
{int a,b,c,n;
for(a=1;a<=30;a++) for(b=a;b<=30;b++) for(c=a;c<=30;c++) {if(c*c==a*a+b*b)
printf(\ } }
4. 计算并输出500以内最大的10个素数之和。 #include
{int a,b,s=0,n=0; for(a=500;a>=2;a--) {for(b=2;b<=a-1;b++) if(a%b==0)break;
if(b==a){n++;s=s+a;printf(\ \ if(n==10) break; }
printf(\}
5. 请验证2000以内的哥德巴赫猜想,对于任何大于4的偶数均可以分解为两个素数之和。
#include
{int n,m,a,b;
for(n=6;n<=2000;n+=2) for(m=3;m if(m%a==0)break; if(a==m) {for(b=2;b if((n-m)%b==0)break; if(b==n-m) { printf(\ } } } 6. 编写程序:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5(此题为选做) #include {int n,m,k=1; printf(\请输入一个正整数n=\scanf(\printf(\for(m=2;m<=n;m++) if(n%m==0) {if(k==1) printf(\else printf(\k++; n=n/m; m--; continue; } } printf(\} 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]); if(i+j==2&&a[i][j]%2) sum2+=a[i][j]; } printf(“sum2=%d”,sum2); } 2、输入一个正整数n(1 ⑶ 输出它们中的最大值及其下标(设最大值唯一,下标从0开始)。 ⑷ 将它们中的最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。 #include {int a[10],n,min,max,xb0,xb1,i,sum,t; float aver; printf(“n=”); scanf(“%d”,&n); for(i=0;i scanf(“%d”,&a[i]); min=a[0];xb0=0; max=a[0];xb1=0; sum=a[0]; for(i=1;i {if(min>a[i]){min=a[i];xb0=i;}; if(max sum+=a[i]; } aver=1.0*sum/n; printf(“(1)平均值为:%3.2f\\n”,aver); printf(“(2)逆序输出:”); for(i=n-1;i>=0;i--) printf(“M”,a[i]); printf(“\\n”); printf(“(3)最大值为:%d,其下标为:%d\\n”,max,xb1); t=a[0];a[0]=a[xb0];a[xb0]=t; t=a[n-1];a[n-1]=a[xb1];a[xb1]=t; printf(“(4)经交换后输出:”); for(i=0;i 3. 定义一个含有30个整型元素的数组a,按顺序分别赋予从2开始的偶数;然后按顺序每5个数求出一个平均值,放在另一个数组b中存储,输出数组b中6个元素的值。 #include {int a[30],i,j; 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 {int a[5][5],i,j; 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