安徽大学_C语言平时作业 下载本文

/*printf(\ s=s+t; }

printf(\}

5. 编写程序,输出下列形式的杨辉三角形的前10行。(此题为选做) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 ……

#include main()

{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 main()

{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 main()

{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 main()

{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 main()

{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 main()

{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 main()

{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 main()

{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 main()

{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 main()

{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 main()

{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 main()

{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 main()

{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 main()