问题:1.编写一个程序。输出以下形式的前五行杨辉三角图案 (石峰)
思路提示:
注意拼凑
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 5
int main(int argc, const char *argv[])
{
int a[N][N]={0};
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++){
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} 进行由小到大的排序。(安在软件)
思路提示:
int a[]={3, 2, 10, 1, 23, 15, 82};
int n=sizeof(a)/sizeof(int);
要求使用冒泡排序 和 简单选择排序实现
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a[] = {1,9,3,4,6,8,7,5,2,0};
int n=sizeof(a)/sizeof(int);
int i, j, k, t;
for(i=1; i<n; i++){
for(j=0; j<n-i; j++){
if(a[j]>a[j+1]){
t=a[j],a[j] = a[j+1], a[j+1]=t;
}
}
}
for(i=0; i<n; i++){
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
问题:3.编写一个程序。假设你有一只刚出生的母兔,母兔第3年开始生小兔,以后每年生一只。如果生出的都是母兔,请代码实现:输入你拥有该母兔后的第几年,输出该年你拥有的兔子数。(北京信果科技)
思路提示:1 1 2 3 5 8 13 21
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int t, i;
printf("输入年份");
scanf("%d", &t);
int a[t];
for(i=0; i<=t-1; i++){
if(i==0 || i==1){
a[i]=1;
}else{
a[i] = a[i-1] + a[i-2];
}
printf("%4d\n", a[i]);
}
printf("在%d年后有%d只兔子\n", t, a[t-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>
int main(int argc, const char *argv[])
{
int i, j, m, n, sum=0;
printf("输入数列为几行几列");
scanf("%d%d", &n, &m);
int A[n][m], B[n][m], C[n][m];
for(i=0; i<n; i++){
for(j=0; j<m; j++){
printf("请输入A数列第%d行的第%d个数", i+1, j+1);
scanf("%d", &A[i][j]);
}
}
for(i=0; i<n; i++){
for(j=0; j<m; j++){
printf("请输入B数列第%d行的第%d个数", i+1, j+1);
scanf("%d", &B[i][j]);
}
}
for(i=0; i<m; i++){
for(j=0; j<n; j++){
C[j][i] = A[j][i] + B[j][i];
printf("%d ", C[j][i]);
}
printf("\n");
}
printf("总和为%d\n", sum);
return 0;
}
问题:5.编写一个程序。一个长度为10的数组中重复数据,现要求相同数据只保留一份,其他的用0来代替,被替换的数据移到数组末尾。(数组内容自定) (富士安全,云尖软件开发)
int a[]={3, 2, 10, 1, 23, 15, 82,1,2,78};
提示思路:
第一步:重复数组用0代替
for(i=0; i<10; i++){
for(j=i+1; j<10; j++){
if(a[i]==a[j]){
a[j] = 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,1,2,78};
int n=sizeof(a)/sizeof(int);
int i, j, k, t;
// for(i=1; i<n; i++){
//for(j=0; j<n; j++){
// if(a[i]==a[j]) a[j]=0;
// }
// }
for(i=1; i<n; i++){
for(j=0; j<n-i; j++){
if(a[i]==a[j]){
a[i]=0;
}else if(a[j]<a[j+1]){
t=a[j],a[j] = a[j+1], a[j+1]=t;
}
}
}
for(i=0; i<n; 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 a[]={6, 1, 8, 7, 5, 4, 3, 2, 9};
int i, j, k;
printf("输入一个数");
scanf("%d", &k);
for(i=0; i<9; i++){
for(j=0; j<10; j++){
if(a[i]+a[j]==k){
printf("%d %d\n", i, j);
}
}
}
return 0;
}