一个C语言的小问题~~~求救

来自:    更新日期:早些时候
C语言的一个小疑问~

static int mode;static double distance;static double fuel;int main(void){ int mode; printf("Enter 0 for metric mode, 1 for US mode: "); scanf("%d", &mode); while(mode>=0) { set_mode(mode); get_info(); show_info(); printf("Enter 0 for metric mode, 1 for US mode "); printf("(-1 to quit): "); scanf("%d", &mode); } printf("Done.
"); return 0;}void set_mode(int a){ if(a != METRIC &&a !=US) printf("Invalid mode specified. Mode 1(US)used.
");}两处定义的mode 一处是开头定义的静态的,2处定义的是局部的。这两个mode有问题,有局部mode时静态mode不起作用,scanf中的mode是局部的,没有给静态的mode赋值。还有
set_mode()中也没有给 静态mode 赋值

%2d表示读取2位以十进制数赋值给x,y是1取位
%2s表示读取一个长度为两个字符的字符串,中间的*表示将读取到的字符串忽略
比如输入123456,则x为12,y为5
/是除,会舍掉余数,如9/2=4

问题很简单。因为win-tc中int只用2个字节表示,故它只能表示-32768-32767之间的数值,而在vc++或dev-c++中int要用4个字节表示,故它可以表示-2147483648-2147483647之间的数。你的程序中当x等于99时,z=1+3*x+3*x*x+x*x*x=1000000早就超过了win-tc下int的范围,所以结果错误。
将数据类型改为无符号长整型unsigned long即可。
本题的一个完整的c程序如下,程序在win-tc和Dev-c++下都调试通过。
#include<stdio.h>
#include<stdlib.h>

unsigned long Convert(unsigned long x);

int main(void)
{
unsigned long m;
unsigned long n,top,bottom,step;
top=0;
bottom=99;
step=1;
n=top;
while(n<=bottom)/*注意这里没有分号*/
{m=Convert(n);
printf("%ld\t%ld\n",n,m);/*注意这里输出格式为%ld*/
n=n+step;
}
system("PAUSE"); /*暂停,按任一键继续*/
return 0;
}

unsigned long Convert(unsigned long x)
{
unsigned long z;
z=1+3*x+3*x*x+x*x*x;
return z;
}

可以问一下是什么错误吗
那就没有办法了,我没有安装TC


一个C语言的小问题~~~求救视频

相关评论:
  • 18289917867c语言作业求救求解答
    屈英朱\/\/define N 1000000 int ju[6][6];int main(){ int n,s1,s2,s3,s4;int i,k;scanf("%d",&n);s1=s2=s3=s4=0;for(i=0;i<n;i++){ for(k=0;k<n;k++){ scanf("%d",&ju[i][k]);s1+=ju[i][k];\/\/求总和 } } for(i=0;i<n;i++) s2+=ju[n-1][i];\/\/...

  • 18289917867C语言求救
    屈英朱printf("%d",a[i]); 按由大到小的顺序按个显示.比如第一趟下来十个数里最大那个,下一趟就会显示稍小那个.} } 其实最外层的for每动一次就是一趟排序.明显这种排序效率非常低,空间复杂度虽小,但时间复杂度极大.现实编程里很少用.但也要了解这种方法,一种编程的思想吧.二楼的必须懂C吧.就那语句...

  • 18289917867C语言求救哦,采纳有加分哦
    屈英朱答案:CDCAAABCCD 针对楼上几位答案有所不同处,我做一下解释:第一题:C肯定是错的。但A也有问题。将一个数组名称为“数组指针”,这显然不妥。事实上,有很多所谓“经典”的教材上也会把数组名和指针混淆。数组名肯定不是指针变量。对于这方面的分析,你可以看看这个链接:h ttp:\/\/hi.baidu....

  • 18289917867C语言求救!!c为一个n×n方阵,先从键盘读入n的值,再输入n×n个数组元 ...
    屈英朱,&n); for(i=0;i<n;i++) for(j=0;j<n;j++) {scanf("%d",&c[i][j]); if(j==0||i==0||j==n-1||i==n-1) s+=c[i][j]; } printf("\\n数组的元素:\\n"); for(i=0;i<n;i++) {for(j=0;j<n;j++) printf("%4d",c[i]...

  • 18289917867...明天就要交了,好心人帮帮忙,谢谢了~~~求救呀·~~~
    屈英朱int judge;\/*优秀 1 合格 0 不合格 -1*\/ }info;void setData(info fo[N]){ int i;for(i=0;i<N;i++){ system("cls");printf("员工编号:");scanf("%s",fo[i].num);printf("员工姓名:");scanf("%s",fo[i].name);printf("员工性别(男:m,女:f):");scanf(" %c",&fo...

  • 18289917867求救有关C语言编程求余问题~~
    屈英朱因为%被转义了,想输出的话简单,再加个%就行了,给分吧!printf("%d%%%d=%.0f\\n",num1,num2,sum5);

  • 18289917867紧急求救用c语言编写:1、编写函数求两个数的较大值,并在主函数中调用...
    屈英朱for(i=0;i<N;i++) \/\/开始外层for循环,从i=0,每次加1,直到i=4 { \/\/外层循环体开始 for(j=0;j<N-1-i;j++) \/\/开始外层for循环,从j=0,每次加1直到i等于外层循环的N-j-1 { \/\/内层循环体开始 if(grade[j]<grade[j+1]) \/\/条件判断 { \/\/如果整形数组前面的数比其后的小,...

  • 18289917867求救啊。。c语言编程题,输入10个数据,找出其中最小值并记录其所在位置...
    屈英朱include <stdio.h> int Searchmin(int b[]) \/\/搜索最小值函数 { int temp; \/\/保存最小值 temp=b[0]; \/\/初始值 for(int j=1;j<10;j++) \/\/对这十个数进行比较 { if(b[j]<temp) \/\/遇到小于temp的数则更换temp的值 temp=b[j];} return temp; \/\/返回最小值 } main...

  • 18289917867C语言 菜鸡求救 是想让数组a中的整数按相反顺序存放
    屈英朱include <stdio.h>int main (void){int a[100],b,c;void miao(int *a,int c);printf("输入数组中数字个数"); scanf("%d",&c);printf("输入数组");for(b=1;b<=c;b++)scanf("%d",&a[b-1]);\/\/这里少了个&miao(a,c);for(b=1;b<=c;b++){printf("%d\\t",a[b-1])...

  • 18289917867c语言问题 求救 left of '.str2' must have class\/struct\/union type...
    屈英朱left of '.str2' must have class\/struct\/union type 的意思是 .str2的左边必须是 class\/struct\/union 这中类型,如 beddy1 所诉,swap(str1.str2); 这样的写法不对,应该是 swap(str1,str2);注意中间是逗号,不是点号。

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网