C语言上机答案

发布 2022-09-05 11:13:28 阅读 9581

一次。编程题:1.编程完成如下功能:“将1元人民币兑换成1分、2分、5分的硬币,输出所有的兑换法”。

比如:“1 fen:0 ,2 fen:

50 ,5 fen:0”即为其中的一种兑换法。将该程序文件以“的名字保存到 “my”文件夹中。

提示:用三重循环。 思考:能统计出一共有多少种兑换法吗?】

因为共有541种兑换法,屏幕显示不全,故保存到文件中。

#include <>

main() 穷举法*/

int y,e,w,n=0;

file *fp;

fp=fopen("d:\\my\\"w");

for(y=0;y<=100;y++)

for(e=0;e<=50;e++)

for(w=0;w<=20;w++)

if(y*1+e*2+w*5==100)

printf("all:%d",n);

fclose(fp);

2.编程输出所有这样的四位正整数:“千位上的数字与个位上的数字相同”。将该程序文件以“的名字保存到 “my”文件夹中。

#include <>

main() 穷举法*/

int x,q,g;

for(x=1000;x<=9999;x++)

3.任意读入一个正整数,输出它的所有因子。将该程序以“的名字保存到 “my”文件夹中。

#include <>

#include <>

main()

int x,k;

doscanf("%d",&x);

while(x<=0); 确保读入的是正整数*/

for(k=1;k<=sqrt(x);k++)

if(x%k==0)printf("%d,%d",k,x/k);

第二次。1、冒泡排序(起泡排序)

假设要对含有n个数的序列进行升序排列,冒泡排序算法步骤是:

从存放序列的数组中的第一个元素开始到最后一个元素,依次对相邻两数进行比较,若前者大后者小,则交换两数的位置;

第①趟结束后,最大数就存放到数组的最后一个元素里了,然后从第一个元素开始到倒数第二个元素,依次对相邻两数进行比较,若前者大后者小,则交换两数的位置;

重复步骤①n-1趟,每趟比前一趟少比较一次,即可完成所求。

题目:任意读入10个整数,将其用冒泡法按升序排列后输出。

#define n 10

main()

int a[n],i,j,t;

for(i=0;i for(j=1;j<=n-1;j++)n个数处理n-1趟*/

for(i=0; _i<=n-1-j___i++)每趟比前一趟少比较一次*/

if(a[i]>a[i+1])

for(i=0;i2、选择法排序。

选择法排序是相对好理解的排序算法。假设要对含有n个数的序列进行升序排列,算法步骤是:

从数组存放的n个数中找出最小数的下标,然后将最小数与第1个数交换位置;

除第1个数以外,再从其余n-1个数中找出最小数(即n个数中的次小数)的下标,将此数与第2个数交换位置;

重复步骤①n-1趟,即可完成所求。

题目:任意读入10个整数,将其用选择法按升序排列后输出。

#define n 10

main()

int a[n],i,j,k,t;

for(i=0;i for(i=0; _i<=n-2___i处理n-1趟*/

for(i=0;i printf("%d",a[i]);

3、归并排序

即将两个都升序(或降序)排列的数据序列合并成一个仍按原序排列的序列。

题目:有一个含有6个数据的升序序列和一个含有4个数据的升序序列,将二者合并成一个含有10个数据的升序序列。

#define m 6

#define n 4

main()

int a[m]= b[n]=;

int i,j,k,c[m+n];

___i=j=k=0;__

while(i

___k++_

while(__i>=m &&j

while(_j>=n &&i

for(i=0;i}

4、折半查找(即二分法)

顺序查找的效率较低,当数据很多时,用二分法查找可以提高效率。使用二分法查找的前提是数列必须有序。

二分法查找的思路是:要查找的关键值同数组的中间一个元素比较,若相同则查找成功,结束;否则判别关键值落在数组的哪半部分,就在这半部分中按上述方法继续比较,直到找到或数组中没有这样的元素值为止。

题目:任意读入一个整数x,在升序数组a中查找是否有与x等值的元素。

#define n 10

main()

int a[n]=;

int x,high,low,mid;/*x为关键值*/

scanf("%d",&x);

high=__n-1_; low=0; mid=(high+low)/2;

while(a[mid]!=x&&low

if(_x==a[mid]_)printf("found %d,%d",x,mid);

else printf("not found");

第三次。1、矩阵转置的算法要领是:将一个m行n列矩阵(即m×n矩阵)的每一行转置成另一个n×m矩阵的相应列。

题目:编程将以下2×3矩阵转置后输出。

即将 1 2 3 转置成 1 4

main()

int a[2][3],b[3][2],i,j,k=1;

for(i=0;i<2;i++)

for(j=0;j<3;j++)

a[i][j]=k++;

/*以下将a的每一行转存到b的每一列*/

for(i=0;i<2;i++)

for(j=0;j<3;j++)

b[j][i]=a[i][j];

for(i=0;i<3;i输出矩阵b*/

2、杨辉三角形。

杨辉三角形的每一行是(x+y)n的展开式各项的系数。例如第一行是(x+y)0,其系数为1;第二行是(x+y)1,其系数为1,1;第三行是(x+y)2,其展开式为x2+2xy+y2,系数分别为1,2,1;……直观形式如下:

分析以上形式,可以发现其规律:是n阶方阵的下三角,第一列和主对角线均为1,其余各元素是它的上一行、同一列元素与上一行、前一列元素之和。

题目:编程输出杨辉三角形的前10行。

#define n 10

main()

int a[n][n],i,j;

for(i=0;i for(i=2;i for(j=1;j<=i-1;j++)

a[i][j]=a[i-1][j-1]+a[i-1][j];

for(i=0;i

3、完善如下程序:

本程序的功能是:利用指针将数组中的元素逆序存放后输出。

#include <>

main()

int a[10]=;

int *p,*q;

int t;

p=a;q=__a+9__;

c语言上机答案

2010c语言实验报告参 实验一熟悉c语言程序开发环境及数据描述。四 程序清单。1 编写程序实现在屏幕上显示以下结果 the dress is long the shoes are big the trousers are black 答案 include main printf the dress...

C语言上机题库答案

1 程序填空题。给定的程序的功能是调用fun函数建立班级通讯录。通讯录中记录。填空 1 stype 2 file 3 fp 改错 1 for i 0 i sl i 2 t 2 sl 0 或t sl sl 0 编程 c a 10 1000 b 10 100 a 10 10 b 10 2 程序填空题。给...

C语言上机作业12答案

data next struct link node 5 变量root有如图所示的存储结构,其中sp是指向字符串的指针的指针域,next是指向该结构的指针域,data用以存放整型数。请填空,完成此结构的类型说明和变量root的定义。rootstruct list char sp root 6 以下函...