C语言程序设计实训教程答案

  • 格式:wps
  • 大小:220.00 KB
  • 文档页数:33

下载文档原格式

  / 33
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上
想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。
#include<stdio.h> void main() { int i,n=1; for(i=9;i>0;i--)
n=(n+1)*2; printf("%d\n",n); }
4、打印九九乘法表。
#include <stdio.h> void main() { int x,y,z; for(x=0;x<34;x++)
for(y=0;y<51;y++) { z=100-(x+y); if(z%2==0&&x*3+y*2+z/2==100)
printf("x=%d,y=%d,z=%d\n",x,y,z); } }
for(j=0;j<4;j++) printf("%4d",b[i][j]);
printf("\n"); } }
(4)输出 Fibonacci 数列的前 20 项。
#include <stdio.h> void main() {
int i; long a[20]={1,1}; for(i=2;i<20;i++)
5、利用循环语句编写程序以实现以下功能:对一个正整数,讲各位
数字反序后的数组成一个整数输出。例如:输入 12345,输出 54321。
(方法一) #include<stdio.h> void main() {
int m,n; scanf("%d",&n); while(n!=0) {
m=n%10; n=n/10; printf("%d",m); }
for(i=2;i<n;i++) if(n%i==0) break;
if(i>=n) printf("\t%d",n);
} printf("\n"); }
实验二 综合运用 3 种基本结构进行程序设计
1、百马百担。100 匹马,驮 100 担,大马 3 担,中马 2 担,2 个小马
1 担,问大、中、小马各多少?
printf("\n"); } for(i=3;i>0;i--) { for(j=1;j<5-i;j++)
printf(" "); for(k=1;k<=2*i-1;k++)
printf("*"); printf("\n"); } }
3、猴子吃桃。猴子第一天摘下若干个桃子,当即吃了一半,还不过
瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一
2、打印一下图案(用循环实现)
*
***
*****
*******
*****
***
*
#include<stdio.h> void main() { int i,j,k; for(i=1;i<5;i++) {
for(j=1;j<5-i;j++) printf(" ");
for(k=1;k<=2*i-1;k++) printf("*");
if(a[j]<a[min]) min=j;
t=a[i]; a[i]=a[min]; a[min]=t; } for(i=0;i<n;i++) printf("%d ",a[i]); printf("\n"); }
2、编程并上机调试运行。
(1)将一个数组中的值逆序存储,然后按顺序输出数组。如原来数组
仅供参考,理论上都能运行出结果。
2.5 循环结构程序设计
实验一 循环结构程序设计
1、求 1!+2!+……+10!。
#include<stdio.h> void main() { long i,n=1,s=0; for(i=1;i<=10;i++) { n*=i; s+=n; } printf("1!+2!+……+10!=%d\n",s); }
6、一个素数加上 1000 以后是 37 的倍数,求满足这个条件的最小素
数。
#include<stdio.h> void main() {
int i,n; for(n=2;n<=1000;n++) { for(i=2;i<n;i++)
if(n%i==0) break; if(i==n) {
if((n+1000)%37==0) { printf("%d\n",n);
储存为 1、2、3、4、5 的,按要求重新存为 5、4、3、2、1.
#include<stdio.h> #include<string.h> void main() {
int i,l; char a[100]; scanf("%s",a); l=strlen(a); for(i=l-1;i>=0;i--) printf("%c",a[i]); printf("\n"); }
2、编写程序并上机调试运行。
(1)输入 10 个整数,采用冒泡法排序后输出。
#include <stdio.h> void main() {
int i,j,t;
int a[10]; printf("Input 10 numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) {
(2)打印出一下杨辉三角(要求打印 8 行)。
#include <stdio.h> void main() {
int i,j,k,a[8][8]={{1},{1,1}}; for(i=2;i<8;i++) {
a[i][0]=1; for(j=1;j<=i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j]; } for(i=0;i<8;i++) {
int a[10],n,i,j,min,t; scanf("%d",&n); for(i=0;i<n;i++)
scanf("%d",&a[i]); for(i=0;i<n;i++)
printf("%d ",a[i]); printf("\n"); for(i=0;i<n;i++) {
min=i; for(j=i+1;j<n;j++)
}
(方法二) #include<stdio.h> #include<string.h> void main() {
int i,l; char a[100]; scanf("%s",a); l=strlen(a); for(i=l-1;i>=0;i--)
printf("%c",a[i]); printf("\n"); }
for(j=0;j<10-i;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; }
} printf("the sorted numbers:\n"); for(i=0;i<10;i++)
printf("%4d",a[i]); printf("\n"); }
break; } } } }
7、找 1000 以内的所有“完数”。一个数如果恰好等于它的因子之和,
这个数就称为“完数”,如 6 就是一个完数,因为 6=1+2+3。
#include<stdio.h> void main() {
int i,j,s; for(i=3;i<=1000;i++)
{ s=0; for(j=1;j<i;j++) if(i%j==0) s=s+j; if(i==s) printf("\t%d",s); }
3、打印输出“水仙花数”。“水仙花数”是指一个 3 位数,其各位数
字的立方和等于该数本身,如 153 就是一个水仙花数。
#include <stdio.h> void main() { int i,a,b,c; for(i=100;i<1000;i++) { a=i/100; b=(i-a*100)/10; c=i%10; if(a*a*a+b*b*b+c*c*c==i) printf("\t%d",i); } }
printf("Array a:\n"); for(i=0;i<4;i++) { for(j=0;j<4;j++) printf("%4d",a[i][j]); printf("\n"); }
printf("s=%d\n",s); printf("Array b:\n");
for(i=0;i<4;i++) {
4、将一个正整数分解成每个质因数的乘积。例如:输入 90,打印
90=2*3*3*5.
#include <stdio.h> void main() { int i,n; printf("please input a number:"); scanf("%d",&n);
printf("%d=",n); for(i=2;i<=n;i++) while(n!=i) { if(n%i==0) { printf("%d*",i); n=n/i; } else break; } printf("%d",n); }
#include <stdio.h> #include <string.h> void mБайду номын сангаасin() {
int n=0,i; char s[81]; gets(s); i=0; while(s[i]!='\0') {
if(!(s[i]>='A'&&s[i]<='Z')) s[n++]=s[i];
i++; } s[n]='\0'; puts(s); }
a[i]=a[i-1]+a[i-2]; for(i=0;i<20;i++) {
if(i%5==0) printf("\n"); printf("%-10ld",a[i]); } printf("\n"); }
(5)按公式计算,求 A20 的值。
A1=1,A2=1;
A3=3*A1+A2;
A4=3*A2+A3;
printf("\n"); }
2.6 数组
实验一 数组的定义及使用Ⅰ
1、从键盘输入一个整数 n(n<=10)和 n 个整数,存入数组 a 中,先
依次输出各个数组元素的值,然后对数组 a 的所有元素值从小到大的
顺序重新排列后,再依次输出。
#include <stdio.h> void main() {
……
#include <stdio.h> void main() {
int i; long a[20]={1,1}; for(i=2;i<20;i++)
a[i]=3*a[i-2]+a[i-1]; printf("A20=%d\n",a[19]); }
实验二 数组的定义及使用Ⅱ
1、输入并改正源程序中的错误。
2、输入一行字符,分别统计其中英文字母、空格、数字和其他字符
个数。
#include <stdio.h> void main() { int i,zm=0,kg=0,sz=0,qt=0; char c[100]=" ";
printf("字符串:"); gets(c); for(i=0;c[i]!='\0';i++) {
for(k=0;k<3*(8-i);k++) printf(" ");
for(j=0;j<=i;j++) printf("%-6d",a[i][j]);
printf("\n"); } }
(3)求 4*4 方正阵两对角线元素之和及其转置矩阵。
#include <stdio.h> void main() {
if(c[i]>='a'&&c[i]<='z'||c[i]>='A'&&c[i]<='Z') zm++;
else if(c[i]==' ') kg++;
else if(c[i]>='0'&&c[i]<='9') sz++;
else qt++;
} printf("zm=%d kg=%d sz=%d qt=%d\n",zm,kg,sz,qt); }
#include<stdio.h> void main() { int i,j; for(i=1;i<10;i++) {
for(j=1;j<=i;j++) printf("%d*%d=%d, ",i,j,i*j);
printf("\n"); } }
5、输出 10~100 之间的全部素数。
#include<stdio.h> void main() { int i,n; for(n=10;n<101;n++) {
int a[4][4],b[4][4],i,j,s=0; for(i=0;i<4;i++)
for(j=0;j<4;j++) scanf("%d",&a[i][j]);
for(i=0;i<4;i++) s+=a[i][i]+a[3-i][i];
for(i=0;i<4;i++) for(j=0;j<4;j++) b[j][i]=a[i][j];