1.编写一个程序。输出以下形式的前五行杨辉三角图案
代码展示:
#include <stdio.h> #include <string.h> #include <stdlib.h> #define N 5 int main(int argc, const char *argv[]) { int a[N][N]; int i,j,k; for(i=0;i<N;i++){ for(j=0;j<=i;j++){ if(j==0||j==i){ a[i][j]=1; }else{ a[i][j]=a[i-1][j-1]+a[i-1][j]; } } } for (i = 0; i < N; i++){ for(k=0;k<N-i;k++){//在输出每行元素的前面输出N-i个空格 printf(" "); } for (j = 0; j <= i; j++) { printf("%d ", a[i][j]); } printf("\n"); } return 0; }
执行结果展示:
2.编写一个程序。请用 C、JAVA、C# 任一种语言,对数组 {3, 2, 10, 1, 23, 15, 82} 进行由小到大的排序。
冒泡排序代码展示:
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) { int a[7]={3,2,10,1,23,15,82}; int i,j,temp; for(i=1;i<7;i++){ for(j=0;j<7-i;j++){ if(a[j>a[j+1]){ temp = a[j];a[j]=a[j+1];a[j+1]=temp; } } } printf("由小到大为:"); for(i=0;i<7;i++){ printf("%d ",a[i]); } printf("\n"); return 0; }
简单选择排序:
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) { int a[]={3,2,10,1,23,15,82}; int i,j,MAX,temp; for(i=0;i<7-1;i++){ MAX = i; for(j=i+1;j<7;j++){ if(a[MAX]<a[j]){ MAX = j; } } if(i!=MAX){ temp=a[i]; a[i]=a[MAX]; a[MAX]=temp; } } printf("最后由大到小排序为:"); for(i=0;i<7;i++){ printf("%d ",a[i]); } printf("\n"); return 0; }
3.编写一个程序。假设你有一只刚出生的母兔,母兔第3年开始生小兔,以后每年生一只。如果生出的都是母兔,请代码实现:输入你拥有该母兔后的第几年,输出该年你拥有的兔子数。
代码展示:
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) { int i,a[100],years; printf("请输入年份:"); scanf("%d",&years); a[0]=1; a[1]=1; for(i=2;i<years;i++){ a[i] = a[i-1]+a[i-2]; } if(years==0||years==1){ printf("第%d年的兔子数量为:%d只\n",years,1); } else{ printf("第%d年的兔子数量为:%d\n",years,a[years-1]); } return 0; }
执行结果展示:
4.编写一个程序。输入两个n行m列的矩阵A和B,输出他们的和A+B
思路提示:定义两个二维数组 int a[10][10] , b[10][10];输入行数列数;然后对a数组元素和b数组元素对应求和【可以赋值给c数组】。最后输出求和后的结果
代码展示:
#include <stdio.h> #include <string.h> #include <stdlib.h> #define N 3 #define M 4 int main(int argc, const char *argv[]) { int a[N][M],b[N][M],c[N][M],i,j,temp; printf("请输入3行4列a数组中的元素:"); for(i=0;i<N;i++){ for(j=0;j<M;j++){ scanf("%d",&a[i][j]); } } printf("请输入3行4列b数组中的元素:"); for(i=0;i<N;i++){ for(j=0;j<M;j++){ scanf("%d",&b[i][j]); } } printf("每项求和后的数组结果为:\n"); for(i=0;i<N;i++){ for(j=0;j<M;j++){ temp = a[i][j]+b[i][j]; printf("c[%d][%d]=%d ",i,j,temp); } printf("\n"); } return 0; }
执行结果展示:
5.编写一个程序。一个长度为10的数组中重复数据,现要求相同数据只保留一份,其他的用0来代替,被替换的数据移到数组末尾。
代码展示:
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) { int a[10]={3, 2, 10, 1, 23, 15, 82,1,2,78}; int i,j,temp; for(i=0;i<10;i++){ for(j=i+1;j<10;j++){ if(a[i]<a[j]){ temp = a[i]; a[i]=a[j]; a[j]=temp; }else if(a[i]==a[j]){ a[j]=0; } } } printf("最终输出为:"); for(i=0;i<10;i++){ printf("%d ",a[i]); } printf("\n"); return 0; }
执行结果展示:
6.【选做题】编写一个程序。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值的那两个整数,并输出它们的数组下标。输入: nums = [3,2,4],target = 6 输出:[1,2]。
代码展示:
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) { int nums[3],i,j,target; printf("请输入target:"); scanf(" %d",&target); printf("请输入3位数组的数据:"); for(i=0;i<3;i++){ scanf("%d",&nums[i]); } for(i=0;i<3;i++){ for(j=i+1;j<3;j++){ if(nums[i]+nums[j]==target){ printf("两个坐标值为%d,%d\n",i,j); } } } return 0; }
执行结果展示: