一次。编程题: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 以下函...