c语言问题

(1) 定义一个全局的数组,在main函数读取用户输入,存到此数组中。允许输入小数。 注意:要记录用户输入了多少个数。(2) 写一个函数,求出该数组的最大值、最小值。#include <stdio.h>#include <stdlib.h>// 因为我们还不知道怎么把数组传递给函数,所以只好定义一个全局变量int g_numbers[128]; int g_count = 0;int g_max = 0; // 最大值int g_min = 0; // 最小值// 让用户输入若干个数,经'x'结束输入,保存到全局变量里void get_input(){ // 在函数内直接访问全局变量,无需参数传递 while(1) { printf("输入一个数: "); // 每次只输入一个数 int num = 0; int ret = scanf("%d", &num); if(ret != 1) { // scanf的返回值表示成功输入了几个字段 // 例如,输入一个字符X,此时scanf的返回值为0 // 输入一个数 123,则此时scanf的返回值为1,表示接收到了一个字段 printf("输入错误,结束输入!\n"); break; } else { g_numbers[g_count] = num; g_count ++; } }}// 计算最大值和最小值, 因为我们一个函数只有一个返回值,现在想同时返回max和min就没办法了,只好用全局变量void max_and_min(){ g_max = g_min = g_numbers[0]; for(int i=1; i<g_count; i++) { if(g_max < g_numbers[i]) g_max = g_numbers[i]; if(g_min > g_numbers[i]) g_min = g_numbers[i]; }}int main(){ get_input(); printf("---------- 列出数字 ------------\n"); for(int i=0; i<g_count; i++) { printf("%d ", g_numbers[i]); } max_and_min(); printf("其中, 最大值%d, 最小值%d \n", g_max, g_min); return 0;}以上为出题人给出的答案,但是题目中要求可以输入小数,我运行程序之后不能输入小数,详见配图,能小数,整数一起输入而不显示输入错误,结束输入吗???
还有#include <stdlib.h>有什么用,答案中哪一部分用到了<stdlib.h>库中的函数?????

第1个回答  2018-12-04
这题的出题人给的答案就不能输入小数,因为它用的是scanf("%d")的形式,这种形式只能接收整数。另外它的数组定义的就是int类型,不能存储小数。
如果要能处理小数,int g_numbers[128]、int g_max、int g_min都要改成float类型。scanf里的%d也要改成%f以识别浮点数。
不过这题没有必要,从题目中可以看出,你们现在学习的还是很基础的东西,能处理整数就行了,不需要考虑处理小数。
至于 stdlib.h,这个程序里应该没有用到。但stdio.h和stdlib.h是几乎每个程序都要包含的,所以编程人在写程序时,顺手就先把这两个包含进去,也是个习惯了。反正不会影响程序的大小,如果用不到,编译程序也不会把相关库链接进去。追问

改成float型的话还能输入整型吗

输入整数的话是直接跳出来,还是打印12.0000(假设输入了12这个整数)

本回答被提问者采纳
第2个回答  2018-12-04
#include #include void main() { int i=0; int j=0; char countryname[5][20]; //5X20的数组,用于保存国家名称 char temp[20]; //交换时使用 printf("Please input five country's name\n"); //输入5个国家的名字 for(i=0;i<5;i++) { printf("please input name for country %d\n",i); scanf("%s",countryname[i]); } //冒泡排序按英语词典规律排序 for(i=1;i<5;i++) { for(j=0;j0) { strcpy(temp,countryname[j]); strcpy(countryname[j],countryname[j+1]); strcpy(countryname[j+1],temp); } } } printf("The country's after sort is:\n"); //排序后的国家名称 for(i=0;i<5;i++) { printf("%s\n",countryname[i]); } } //这段代码经过调试没有问题,明天有面试,写个练练手,祝福我吧!!
第3个回答  2018-12-04
定义的是int整形 啊,得是整数才可以啊
第4个回答  2018-12-04
#include <stdio.h>
#include <stdlib.h>

float g_numbers[128];
int g_count = 0;
float g_max = 0;
float g_min = 0;
void get_input()
{
while(1)
{
printf("输入一个数: ");
float num = 0;
int ret = scanf("%f", &num);
if(ret != 1)
{
printf("输入错误,结束输入!\n");
break;
}
else
{
g_numbers[g_count] = num;
g_count ++;
}
}
}
void max_and_min()
{
int i;

g_max = g_min = g_numbers[0];
for(i=1; i<g_count; i++)
{
if(g_max < g_numbers[i])
g_max = g_numbers[i];
if(g_min > g_numbers[i])
g_min = g_numbers[i];
}
}
int main()
{
int i;

get_input();
printf("---------- 列出数字 ------------\n");
for(i=0; i<g_count; i++)
{
printf("%f ", g_numbers[i]);
}
max_and_min();
printf("其中, 最大值%f, 最小值%f \n", g_max, g_min);
return 0;
}本回答被网友采纳

c语言常见问题有哪些
1、书写标识符时,忽略了大小写字母的区别。2、忽略了变量的类型,进行了不合法的运算。3、将字符常量与字符串常量混淆。4、忽略了等号与双等号的区别。5、忘记加分号。6、输入变量时忘记加地址运算符。7、输入数据的方式与要求不符。8、输入字符的格式与要求不一致。9、输入输出的数据类型与所用格式...

C语言的问题!
4,下一步是使用浮点参数以符合浮点格式规范,或在程序中的其他位置执行浮点分配。请注意,此操作将导致加载浮点支持。5,最后一步是,当程序以混合语言编写的程序链接时,在FORTRAN库之前指定C库。重新解决了秋天的飞行问题。

C语言的运行出现不了的问题是什么问题??
环境问题:代码在不同的操作系统、编译器或硬件平台上可能存在差异,导致代码无法正常运行。可以检查编译器和操作系统的兼容性,或在特定的环境中运行代码。逻辑问题:代码逻辑存在问题,导致代码无法正确执行。可以检查代码逻辑是否正确,是否存在死循环、递归深度过大等问题。综上,C语言代码运行不出现象可能...

计算机程序c语言面试常见问题
1、C语言程序的基本单位是___A.语句 B.函数 C.程序行 D.字符 答案:B 2、C语言程序由()组成 A.子程序 B.过程 C.函数 D.主程序段程序 答案:C 3、算法的表示方法有___A.自然语言,传统流程图,N-S流程图,伪代码,计算机语言 B.高级语言,汇编语言,机器语言 C.C语言,QBASIC语言,I...

c语言能解决哪些问题
C语言能解决的问题 一、系统开发问题 C语言首先是一种通用编程语言,它可以用于开发各种类型的系统软件和应用程序。例如,操作系统、编译器、驱动等核心组件大多使用C语言开发,因其具有直接访问内存、进行复杂运算和进行底层设备操作的能力。此外,C语言还常被用于开发嵌入式系统,如智能家居控制、工业控制等...

c语言常见问题有哪些?
但C语言中,“=”是赋值运算符,“==”是关系运算符。如:if (a==3)a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。5.忘记加分号。分号是C语句中不可缺少的一部分,语句末尾必须有分号。a=1 b=2 编译时,编译程序在“a=...

c语言程序 哪里出错了呢 始终运行不出结果
在C语言编程中,若程序始终无法输出结果,可能是因为输入数据的类型与程序调用的数据类型不一致。以scanf函数为例,当使用 scanf("%lf%lf%lf",&a,&b,&c);进行输入时,确实将输入的数字以float类型存储至内存中。然而,程序在读取这些内存时,可能期望以double类型进行解析。这种类型不匹配会导致解析...

求c语言一些常见问题,
但C语言中,“=”是赋值运算符,“==”是关系运算符。如:if (a==3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。5.忘记加分号。分号是C语句中不可缺少的一部分,语句末尾必须有分号。a=1 b=2 编译时,编译程序在“...

c语言面试经常问到的问题有哪些?
c语言面试经常问到的问题有:1、C语言的主要特征是什么?C是一种过程语言。C语言的主要功能包括对内存的低级访问,简单的关键字集和简洁的样式。这些功能使其适用于诸如操作系统或编译器开发之类的系统编程。2、i ++和++i有什么区别?1)表达式“i ++”返回旧值,然后递增i。表达式++i递增该值...

C语言问题编程问题?
int i,j,n=-1;float scores[30],sum=0,temp;printf("请输入n的值(0~30):");while(n<0 || n>30) scanf("%d",&n);if(!n) return 0;for(i=0;i<n;scanf("%f",&scores[i]),sum+=scores[i],i++)printf("请输入学生%d分数:",i+1);printf("%d名学生的平均分为%.1f\\n...

相似回答
大家正在搜