31、读懂以下程序,说明程序的功能
#include<stdio.h>
int main()
{
int m,n,r,m1,m2;
printf("请输入2个正整数:");
scanf("%d%d",&m1,&m2);
m=m1;
n=m2;
do{
r=m%n;
m=n;
n=r;
}while(r!=0);
printf("%d\n",m);
return 0;
}

//31、读懂以下程序,说明程序的功能
#include<stdio.h>
int main()
{
int m,n,r,m1,m2;
printf("请输入2个正整数:");
scanf("%d%d",&m1,&m2);
m=m1;
n=m2;
do{
r=m%n;
m=n;
n=r;
}while(r!=);
printf("%d\n",m);
return ;
}

32、一个数如果恰好等于它的所有的因子之和,则这个数就称为“完数”。例如6的因子有1、2、3,而1+2+3=6,因此6是一个完数。编程找出1000内所有的完数。


  #if 0
  32、一个数如果恰好等于它的所有的因子之和,则这个数就称为“完数”。例如6的因子有1、2、3,而1+2+3=6,因此6是一个完数。
  编程找出1000内所有的完数。

  思路分级:
  一。遍历2-1000内的所有数。
  二。寻找每个数所有的公约数累加等于本身则为完数。
  #endif

 #include<stdio.h>
int main(){ int num=;
for(num=;num<;num++){
int sum=;
int i=;
for(i=;i<=num/;i++){
if(num%i==){ sum+=i;
}
}
if(num==sum){
printf("%d:是一个完数\n",sum);
}
} return ;
}

33、(课堂)思考这个宏定义错在哪里
#define S (r) PI*r*r//注意S与(r)之间有空格

34、我们在头文件(.h文件)中,经常看到这样的内容
#ifndef __H_INCLUDE__
#define __H_INCLUDE__
//头文件的实际内容
#endif
思考头文件的开头和结尾需要这样书写的原因。

35、(课堂)运行以下程序
int main()
{
char a,b;
a = getchar();
b = getchar();
putchar(a);
putchar(b);
return 0;
}
运行程序,输入x回车y回车,会发现输出的并不是xy,而是
x

思考这是为什么。

36、(课堂)使用数组存储斐波那契数列前40项,并输出


  #if 0
  36、(课堂)使用数组存储斐波那契数列前40项,并输出

  解题思路:
  一。创建一个长度为40的数组。
  二。将第一第二个元素置为1;
  三。遍历数组 第N个元素的值为 元素(N-1)+元素(N-2);
  #endif

 #include<stdio.h>
#include<stdlib.h>
int *fibonacci(int len){
int *p;
int i; if(NULL==(p=(int *)malloc(sizeof(int)*len))){
perror("cannot malloc");
return NULL;
}
p[]=;
p[]=;
for(i=;i<len;i++){
p[i]=p[i-]+p[i-]; }
return p;
}
void print(int p[],int len){
int i;
for(i=;i<len;i++){
printf("p[%d]=%d\t",i+,p[i]); } } int main(){
int *fib;
fib=fibonacci(); print(fib,); return ;
}

37、(课堂)从键盘输入10个学生的成绩,如果遇到大于100或者小于0的成绩需要提示输入错误重新输入。之后计算10个学生的总成绩和平均成绩

  #if 0
  37、(课堂)从键盘输入10个学生的成绩,如果遇到大于100或者小于0的成绩需要提示输入错误重新输入。
  之后计算10个学生的总成绩和平均成绩

  解题思路:
  一。创建长度为十的数组表示学生成绩
  二。在输入时判断数值是否合法。
  三。遍历数组累加 求总成绩和平均成绩
  #endif

 #include<stdio.h>
#include<stdlib.h> int *getmemory(int len){
int *p;
if(NULL==(p=(int *)malloc(sizeof(int)*len))){
perror("cannot malloc");
return NULL; }
return p;
} void my_scanf(int p[],int len){
int i; for(i=;i<len;i++){
printf("请输入第%d个学生成绩:\n",i+);
//scanf("%d",&p[i]);
int grade=;
scanf("%d",&grade);
if(grade<||grade>){
printf("成绩区间为1至100");
i--;
}else{
p[i]=grade;
}
} } void my_printf(int p[],int len){
int i; for(i=;i<len;i++){ printf("第 %d个学生的成绩;%d",i+,p[i]);
} } int my_sum(int p[],int len){
int i=;
int sum=; for(i=;i<len;i++){
sum+=p[i]; }
return sum; } double my_ave(int p[],int len){
double ave; ave=my_sum(p,len)/len; return ave; } int main(){
int num;
int *stu; printf("需要输入几个学生的成绩");
scanf("%d",&num);
stu=getmemory(num);//创建容器 my_scanf(stu,num);//输入数据 //my_printf(stu,num);//输出数据 int sum=my_sum(stu,num);//求和
printf("学生的总成绩:%d",sum); double ave=my_ave(stu,num);//求平均
printf("学生的平均成绩:%lf",ave); return ;
}

38、(课堂)冒泡排序
从键盘输入10个各不相同的整数,存储在数组中,使用冒泡排序法将数组排序并输出
冒泡排序:是一种简单的排序算法
1)比较相邻的元素和其身后的元素。如果第一个比第二个大,就交换他们两个。
2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。一次循环过后,最后的元素应该会是最大的数。
3)针对所有的元素重复以上的步骤,除了最后一个。
4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

 #if 0
、(课堂)冒泡排序
从键盘输入10个各不相同的整数,存储在数组中,使用冒泡排序法将数组排序并输出
冒泡排序:是一种简单的排序算法
)比较相邻的元素和其身后的元素。如果第一个比第二个大,就交换他们两个。
)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。一次循环过后,最后的元素应该会是最大的数。
)针对所有的元素重复以上的步骤,除了最后一个。
)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 #endif
#include<stdio.h> void my_scanf(int a[],int len){
int i=;
for(i=;i<len;i++){ printf("请输入第 %d个元素",i+);
scanf("%d",&a[i]); } }
void bubblesort(int a[],int len){
int i,j;
for(i=;i<len-;i++){ for(j=;j<len--i;j++){
if(a[j]<a[j+]){
a[j]^=a[j+];
a[j+]^=a[j];
a[j]^=a[j+]; } }
} } void my_printf(int a[],int len){
int i=;
for(i=;i<len;i++){
printf("a[%d]=%d\n",i+,a[i]); } }
int main(){
int a[]={};
my_scanf(a,); bubblesort(a,); my_printf(a,); return ;
}

39、(课堂)自定义一个3*4的矩阵,输出矩阵中值最大的元素,并输入其数组下标


  #if 0
  39、(课堂)自定义一个3*4的矩阵,输出矩阵中值最大的元素,并输入其数组下标
  解题思路:
  一。构建一个3*4的矩阵,然后给矩阵内的每个元素赋值。
  二。创建三个变量分别存放最大值及其坐标
  三。遍历矩阵得到最大值及其坐标

  错误分析:
  应该定义一个结构体来存放最大值及其坐标
  #endif

 #include<stdio.h>
#include<stdlib.h> void my_scanf(int (*a),int x,int y){
int i=,j=;
for(i=;i<x;i++){
for(j=;j<y;j++){
printf("请输入第 %d行%d 列的值:\n",i+,j+);
scanf("%d",&a[(i*(x+)+j)]); } } for(i=;i<x;i++){
for(j=;j<y;j++){
printf("a[%d][%d]=%d\t",i+,j+,a[(i*(x+)+j)]);
//printf("%d\n",(i*(x+1)+j)); } } } void max(int (*a),int x,int y){
int num,i=,j=,sub_i=,sub_j=;
num=a[];
for(i=;i<x;i++){
for(j=;j<y;j++){
if(num<a[(i*(x+)+j)]){
num=a[(i*(x+)+j)];
sub_i=i+;
sub_j=j+; } } } printf("\nmax:a[%d][%d]=%d",sub_i,sub_j,num); } int main(){
//printf("哈哈哈999\n");
int a[][]={};
//int (*a)=(int *)malloc(sizeof(int)*3*4); //int i=3,j=4;
my_scanf(a,,); max(a,,); //free(a);
//a=NULL; return ;
}

C基础的练习集及测试答案(31-39)的更多相关文章

  1. C基础的练习集及测试答案(提高题)

    提高题:1.编写程序,随机生成一个1~10内的数,让对方猜3次.如果3次内能猜中则输出“恭喜你”:若3次内猜不中则输出正确答案.C语言中提供生成随机数的函数rand()用法:①所需头文件:#inclu ...

  2. C基础的练习集及测试答案(1-15)

    练习题:注:标有(课堂)字样的为课上练习,其他为课下练习基础题(50题)1.(课堂)编写程序,输出“XXX欢迎来到动物园!”(XXX是自己的名字). //1.(课堂)编写程序,输出“XXX欢迎来到动物 ...

  3. C基础的练习集及测试答案(40-50)

    40.(课堂)打印杨辉三角型前10行 #if 0 40.(课堂)打印杨辉三角型前10行 思路分析: 一.打印十行杨辉三角得第十行长度为十,所以建立一个长度为十的数组,作为每行的数据存储 二.按 0-9 ...

  4. C基础的练习集及测试答案(16-30)

    16.(课堂)输入一个年份(正整数),判断这年是否是闰年.闰年判断标准:年份能被4整除:如若遇到100的倍数,则需判断年份能否被400整除.(逢4一闰,逢百不闰,逢400又闰) #if 0 .(课堂) ...

  5. ML基础 : 训练集,验证集,测试集关系及划分 Relation and Devision among training set, validation set and testing set

    首先三个概念存在于 有监督学习的范畴 Training set: A set of examples used for learning, which is to fit the parameters ...

  6. Python sklearn拆分训练集、测试集及预测导出评分 决策树

    机器学习入门 (注:无基础可快速入门,想提高准确率还得多下功夫,文中各名词不做过多解释) Python语言.pandas包.sklearn包   建议在Jupyter环境操作 操作步骤 1.panda ...

  7. zookeeper部署及集群测试

    zookeeper部署及集群测试 环境 三台测试机 操作系统: centos7 ; hostname: c1 ; ip: 192.168.1.80 操作系统: centos7 ; hostname: ...

  8. hdu 1829 基础并查集,查同性恋

    A Bug's Life Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  9. Dubbo入门实例 本地伪集群测试Demo

    1.   概述 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案 Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提 ...

随机推荐

  1. JAVA企业级开发-BOM&DOM(03)

    一.BOM对象介绍 BOM对象:Browser Object Model 浏览器对象模型.把整个浏览器当做一个对象来处理. 一个浏览器对象中又包含了其他的对象. 重点介绍:window.history ...

  2. lightoj1010【规律】

    思路: 根据案例的规律其实已经猜的差不多了,answer=n*m/2; 有一条边是1的情况,也很好判断,answer=n*m; 就是有一条边是2的时候比较隐秘:是连续2*2一块可以填,然后2*2不填, ...

  3. django视图 CBV 和 FBV

    目录 视图 CBV 和 FBV 什么是视图? FBV function based view 基于函数的视图 CBV class based view 基于类的视图 小技巧 CBV 如何获取页面请求类 ...

  4. 通过node.js读取html页面及其页面中引入的css样式

    Node 是什么? Node 是一个基于Chrome V8 引擎的JavaScript 运行环境. Node 不是一种独立的语言.Node不是 JavaScript 框架, Node是一个除了浏览器之 ...

  5. MySQL注释符号

    今天在执行mysql语句时很奇怪为什么没有执行,查询后发现“-- ”是mysql的注释符号,不会执行的  mysql注释符有三种: 1.#... 2."-- ",注意--后面有一个 ...

  6. 16.创建与操纵表--SQL

    一.新建表 利用CREA TE TA BLE创建表,必须给出下列信息: 新表的名字,在关键字CREA TE TA BLE之后给出: 表列的名字和定义,用逗号分隔: 有的DBMS还要求指定表的位置. C ...

  7. [TCP/IP]IP协议

    IP数据报 IP是TCP/IP协议族中最核心的协议,所有的TCP.UDP.ICMP.IGMP数据都以IP数据报的格式传输.IP仅提供尽力而为的传输服务,如果发生某种错误,IP会丢失该数据,然后发送IC ...

  8. 安装redis服务器

    安装redis服务器 Windows环境下安装: 第一步:下载压缩包(地址:https://github.com/MicrosoftArchive/redis/releases) 第二步:解压并打开 ...

  9. Java中

  10. window.addeventlistener使用方法

    http://www.jb51.net/article/49858.htm .................................................... (要注意的是div ...