1、打印杨辉三角
程序分析:
结构如下所示:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
代码如下:
#include <stdio.h>int main()
{int i,j;int a[10][10];printf("\n");for(i=0;i<10;i++) {a[i][0]=1;a[i][i]=1;}for(i=2;i<10;i++)for(j=1;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i<10;i++) {for(j=0;j<=i;j++)printf("%5d",a[i][j]);printf("\n");}
}
结果:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
2、输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
代码如下:
#include<stdio.h>
#include<stdlib.h>void fun(int *s,int n)
{int i;int max=s[0];int a=0;for(i=0;i<n;i++){if(s[i]>max){max=s[i];a=i;}}s[a]=s[0];s[0]=max;int j;int min=s[n-1];int b=n-1;for(j=0;j<n;j++){if(s[j]<min){min=s[j];b=j;}}s[b]=s[n-1];s[n-1]=min;
}void printf_s(int *s,int n)
{int i;for(i=0;i<n;i++)printf("%d ",s[i]);printf("\n");
}int main()
{int s[20];int i,n;printf("设置数组长度(<20):");scanf("%d",&n);printf("输入 %d 个元素:\n",n);for(i=0;i<n;i++)scanf("%d",&s[i]);fun(s,n);printf_s(s,n);return 0;
}
结果:
设置数组长度(<20):5
输入 5 个元素:
12 123 4 65 21
123 12 21 65 4
3、输入一个整数,并将其反转后输出。
代码如下:
#include <stdio.h>
int main()
{int n, reversedNumber = 0, remainder;printf("输入一个整数: ");scanf("%d", &n);while(n != 0){remainder = n%10;reversedNumber = reversedNumber*10 + remainder;n /= 10;}printf("反转后的整数: %d", reversedNumber);return 0;
}
结果:
输入一个整数: 12345
反转后的整数: 54321
4、编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)。
代码如下:
#include<stdio.h>
#include<stdlib.h>
double evenumber(int n);
double oddnumber(int n);int main()
{int n;double r;double (*pfunc)(int);printf("请输入一个数字:");scanf("%d",&n);if(n%2==0) pfunc=evenumber;else pfunc=oddnumber;r=(*pfunc)(n);printf("%lf\n",r);system("pause");return 0;
}
double evenumber(int n)
{double s=0,a=0;int i;for(i=2;i<=n;i+=2){a=(double)1/i;s+=a;}return s;
}
double oddnumber(int n)
{double s=0,a=0;int i;for(i=1;i<=n;i+=2){a=(double)1/i;s+=a;}return s;
}
结果:
请输入一个数字:2
0.500000
5、对10个数进行排序。
分析:
利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。
代码如下:
#include<stdio.h>
#define N 10
int main()
{int i,j,a[N],temp;printf("请输入 10 个数字:\n");for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N-1;i++){int min=i;for(j=i+1;j<N;j++)if(a[min]>a[j]) min=j;if(min!=i){temp=a[min];a[min]=a[i];a[i]=temp;}}printf("排序结果是:\n");for(i=0;i<N;i++)printf("%d ",a[i]);printf("\n");return 0;
}
结果:
请输入 10 个数字:
23 2 27 98 234 1 4 90 88 34
排序结果是:
1 2 4 23 27 34 88 90 98 234