8. 编程输出所有不超过100 的其平方具有对称性质的正整数(也称回文数)。输出格式如下: number square
1 1 2 4 3 9 11 121 22 484 26 676 答:
#include
For (i=0;j<100;j++) If (m[j]!=m[i]) Break; If (j>=i) Printf(n,n*n); }
Return o; }
9. 编写程序,打印如下杨辉三角。
1 1 1
1 2 1
1 3 3 1 1 4 6 4 1
答:
#include
#include
void main() {
const int m = 5; int a[m][m]; for(int i = 0; i < m; i++) {
a[i][0] = 1; a[i][i] = 1; }
for(int j = 2; j < m; j++) {
for(int k = 1; k < j; k++) a[j][k] = a[j-1][k-1] + a[j-1][k]; }
for(int i = 0; i < m; i++) {
cout< for(int j = 0; j <= i; j++) cout<< a[i][j] <<\ cout< 10.定义一个函数,计算长度为k的整型数组元素的平均值及大于平均值的元素个数。调用函数的语句为: count(a,k,ave,num); 其中a是数组名,k是数组元素个数,ave返回的平均值,num返回大于平均值的元素个数。 答: #include int count = 0,sum = 0; int i; for(i = 0; i < a; i++) { sum += a[i]; } ave = (float)sum / (float)a; for(i = 0; i < a; i++) { if(a[i] > ave) count++; } num = count; 一、分析程序,写输出结果 1. #include 201709#include for( m=1; m<=10; m+=2 ) { k = m/3; for( i=2; i<=k; i++ ) if( m%i ) cout << m << \ } } 解:m 的取值为1,3,5,7,9 对应k的取值为0,1,1,2,3, 第二个for循环:只有当k=2和k=3时 才执行, 当k=2,i=2,m%i等于1为真,输出m为7 当k=3,i=2,m%i等于1为真,输出m为9, i=3,m%i等于0为假,无输出 结果为: 7 9 2. #include void fun(); void main() {int i; for(i=1;i<5;i++) fun(); cout< void fun() { static int a; int b=2; a += 2 ; cout<< a+b <<'\\t'; } 解:主函数循环4次调用fun(); fun()函数内定义了静态局部变量a,所以a的值会保持到下一次调用。 结果为: 4,6 ,8,10 3. #include int fun(int n) { if(n==0) return 1; return 2*fun(n-1); } void main() { int a=5; cout< 解:fun()函数用递归求出2的n次方, 结果为: 32 4. #include void main() { char *cp=\ for (int i=0 ; i<4; i++ ) cout< 解:主函数4次循环中, 第一次输出cp+i,此时cp指向“word”的第一个字符,所以输出“word”, 之后cp依次往后移一个位置,输出此位置及后面的字符 结果为: word ord rd d 二、.根据程序功能填空。 1. 程序把10个数存储到一维数组a中,并求该数组中最大值。 #include int a[10]={76,55,95,87,85,83,65,90,77,85}; int *p= a ; max=*p; for( ; p< &a[10] ; p++) if( *p>max ) max= *p ; cout<<\} 2.下面程序的功能是输出1至100之间每位数字的乘积大于每位数的和的数。例如,45两位数字的乘积为4×5=20,和为4+5=9。 #include { int n, k=1, s=0, m; for(n=1; n<=100; n++) { k=1; s=0; m=n ; } while( m>0 ) { k*=m; s+=m; m=m/10 ; } if(k>s) cout< } 3.程序对输入的n求s = 1 + 1/23 + 1/33 + ? + 1/n3 。 #include {double s; int i, n; cout<<\ s = 0; for (i=1; i 4.函数create从键盘输入整数序列,以输入0为结束。按输入顺序建立单向链表并返回表头。 struct node{int data; node * next;}; node * create() { node *head, *p, *q; p = new node; head = p; cin>>p->data; while( p ) { q = p; p=->data ; q->next = p; cin>>p->data; } if (head == p) head = NULL; else p=0 ; ; return head; } 5.以下程序求方程的全部整数解: 3x + 2y - 7z = 5 ( 0 ≤ x, y, z ≤ 100 ) #include for( x=0; x<=100; x++ ) for( y=0; y<=100; y++ ) { if( ( z=3*x+2*y-5 ) % 7 ) continue ; //求出z的值 z=z/7 ; if( z>=0 && z<100 ) //检查z的范围 cout << \ } } 三、程序设计 1. 编写函数输出以下形状的图形,其中构成图形的数字和输出的行数通过参数传送。 1 2 2 2 3 3 3 3 3 4 4 4 4 4 4 4 答: void PrintFigure(int num, int row) { int i, j, k; num = num - row +1; for(i = 1; i <= row; i++) { j = 2*i-1; for(k = 1;k <= j; k++) cout< 2. 请编程序,输入两个正整数啊a和b(a the factors of 6 : 2 3 the factors of 7 : no factor the factors of 8 : 2 4 答: #include for(i = a; i <= b; i++) { count = 0; printf(\ for(j = 2; j < i; j++) { if(i % j == 0) { printf(\ count++; } } if(count == 0)printf(\ } } 3.请编程序,找出1至99之间的全部同构数。同构数是这样一组数:它出现在平方数的右边。例如:5是25右边的数,25是625右边的数,所以5和25都是同构数。 答: #include int i, j, k; k = 10; for(i = 1; i <= 99; i++) { if(i == k) k *= 10; j = i * i; if(j % k == i) cout<< i << \ } cout< 4. 编写一个程序,实现如下功能: (1)从键盘输入a op b。其中a, b为数值;op为字符,限制为+、-、*、/ 。 (2)调用函数count(op,a,b),计算表达式a op b的值。由主函数输出结果。 答:#include \ class cal { public: int add(int x,int y) //加法定义函数 { return x+y; } int sub(int x,int y) //减法定义函数 { return x-y; } int mul(int x,int y) //乘法定义函数 { return x*y; } int div(int x,int y) //除法定义函数 { if(y==0) cout<<\不能作除数\ int main() { cal c; //定义对象 int x,y; char ID; cout<<\请输入要计算的两个数及运算符,中间用空格隔开比如2 3 +\cin>>x>>y>>ID; switch (ID) { case '+': cout< case '-': cout< case '*': cout< case '/': cout< 5. 编写一个程序,实现如下功能: (1)输入k(<100)个整数到数组x[100]中; (2)计算k个数的平均值及大于平均值的元素个数。 答: #include for(i=0;i ave=sum/k; n=0; for(i=0;i cout<<\ } if(x[i]>ave)n++; 6. 定义函数 void reversion(int ary[],int size); 逆置数组ary的元素。例如实参数组原来为 [ 1,5,3,2,6,8,9,4 ],调用函数 reversion后变成为 [ 4,9,8,6,2,3,5,1 ]。 答: void reversion(int ary[],int size) { int temp; for(int i = 0; i < size/2; i++) { temp = ary[i]; ary[i] = ary[size -1 -i]; ary[size -1 -i] = temp; } } 7. 数组a包含50个整数,把a中所有的后项除以前项之商取整后存入数组b(即b[i]=a[i]/a[i-1],并且b[0]=a[0]/a[49]),最后按每行5个元素的格式输出数组b。 答: # include int a[50],b[5],i,,j; printf (\请输入50个数\ for (i=0;i<50;i++); scanf(\ for (i=9;i>0;i-2) { for (j=0;j<5;j++) b[j]=a[i]%a[i-1]; } for(j=0;j<5;j++) for (i=1;i<5;i++) printf(\ printf(\ }