您的位置:

初学c语言的一个简单编程题,初学c语言的一个简单编程题怎么做

本文目录一览:

菜鸟问一道简单的C语言编程题

完整程序如下,我加的就是定义了一个函数AREA

#include stdio.h

#include math.h

//函数的定义,定义area=sqrt((s*(s-a)*(s-b)*(s-c))根号下的内容,返回一个值,在主函数里调用该函数

float AREA(float s,float a,float b,float c){

float X=s*(s-a)*(s-b)*(s-c);

return X;

}

void main()

{float a,b,c,area,s;

printf("\nInput a,b,c: ");

scanf("%f%f%f",a,b,c);

if(a+bc a+cb b+ca) /*判断是否能构成三角形*/

{ s=(a+b+c)/2;

area=sqrt(AREA(s,a,b,c));

printf("\narea=%f\n",area);

}

else printf("\nData error!\n");}

初学C语言的一个简单编程题,求我的问题在哪.

错误1:main()函数没有函数类型 用void类型或者其他,例如:void main(){}

错误2:switch语句中的case 后面没有break 就会一直执行,知道结束或者遇 到break为止,default语句是swtich的必执行语句。我似乎明白你的意思,但是你这里有明显的逻辑错误。

改正如下:

include"stdio.h "

void main()

{

//定于数据要初始化

long n = 0;

int dn = 0;

int n1 = 0;

int n2 = 0;

int n3 = 0;

int n4 = 0;

int n5 = 0;

printf("input an integer 0~99999");

scanf("%d",n);

if n99999 dn=-1;

else if n9999 dn=5;

else if n999 dn=4;

else if n99 dn=3;

else if n9 dn=2;

else if n=0 dn=1;

else dn=-1;

switch(dn)

{

case 5 :

n5=n/10000;

case 4 :

n = n - 10000*n5;

n4=n/1000;

case 3 :

n = n - 1000*n4

n3=n/100;

case 2 :

n = n - 100*n3;

n2=n/10;

case 1 :

n1 = n - 10*n2;

case -1 :

n1=n2=n3=n4=n5=-1;

}

printf("这是一个%d位数",dn);

printf("\n第1位数是%d\n第2位数是%d\n第3位数是%d\n第4位数是%d\n第5位数是%d,n1,n2,n3,n4,n5");

}

手写的没调试过,你自己试试吧

一道简单的c语言编程题

#include stdio.h

#include stdlib.h

int main()

{

int a,b,c,d;

scanf("%d%d",a,b);

//借助其他变量

c=a-b;

b=b+c;

a=a-c;

printf("%d %d\n",a,b);

//不借助于其他变量;

scanf("%d%d",c,d);

c=c+d;

d=c-d;

c=c-d;

printf("%d %d\n",c,d);

return 0;

}

初学者的一道C语言编程题目

#include "stdio.h"

int main( )

{

int ri,repeat;

int i, digit, m, n, number, sum;

scanf("%d",repeat);

for(ri=1;ri=repeat;ri++)

{

scanf("%d%d", m, n);

/*---------*/

for(i=m;i=n;i++)

{

sum=0;

number=i;

while(number0)

{

digit=number%10;

number/=10;

sum+=digit*digit*digit;

}

if(i==sum)

{

printf("%d \n",sum);

}

}

/*---------*/

}

初学者请教 两道简单的c语言编程题目

[回答]

1. 用C语言自己的时间函数

difftime(time_t time1, time_t time0) / 86400

这样做得缺点是,这里的time_t类型,只支持到2037年

2. 自己定义函数

楼主用的方法,在实际编程里不常用,变化比较大。

下面这个方法是直接计算两个日期到公元元年的天数

然后相减,这个是实际编程时的算法,经过很多程序员的洗炼,已经被广泛使用

#includestdio.h

#define LEAP(y) (y%(y%100?4:400)==0) /*公元y年是否闰年*/

long totaldays(int year,int month,int day)/*公元纪年的总天数*/

{ int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};

int c=day,m,y=year-1;

days[2]=28+LEAP(year);

for(m=1;mmonth;m++)c+=days[m];

return c+y/4-y/100+y/400+y*365L;

}

void main()

{ int y,m,d; long t1,t2;

printf("date 1: ");

scanf("%d%*c%d%*c%d",y,m,d);

t1=totaldays(y,m,d);

printf("date 2: ");

scanf("%d%*c%d%*c%d",y,m,d);

t2=totaldays(y,m,d);

printf("total days: %ld\n",t2-t1);

}

这应该是全部的实现方法了

楼主的方法没必要简化了

尤其是刻意追求短代码就更没有必要了

要知道,代码短了,可读性就差

两者协调好,才能称为好程序^^

悉雨辰寂

初学编程,大家帮忙看下这道c语言题怎么做?万分感谢

先给你第一题的,百度知道的这个编辑器真的不适合粘贴代码

#includestdio.h

#includestring.h

#define MAX_ARRAY_SIZE 1024

#define MAX_MAP_SIZE 10

/* 输入数组,连续输入,如:aedabcdaeas  */

int inputArray(char *buff) {

      int len = 0;

      /* 使用fgets来防止缓冲区溢出  */

      if (NULL == fgets(buff, MAX_ARRAY_SIZE, stdin)) {

              return 0;

      }

      len = strlen(buff);

      /* fgets 返回的数据可能是换行符结尾的,也可能不是,对换行符结尾的进行处理 */

      if (buff[len - 1] == '\n') {

              buff[len - 1] = '\0';

              len -= 1;

      }

      return len;

}

int processArray(int len, char *chars, char *map) {

      /* 保存反向映射便于查找  */

      int tmap[128];

      int maplen = 0;

      int i = 0;

      char *p = chars;

      memset(tmap, -1, sizeof(int) * 128);

      for (i = 0; i len; i++) {

              if (*p 'z' || *p 'a') {

                      return -*p;

              }

              if (tmap[*p] == -1) {

                      if (maplen = MAX_MAP_SIZE) {

                              return -1;

                      }

                      tmap[*p] = maplen;

                      map[maplen] = *p;

                      maplen += 1;

              }

              *p = '0' + tmap[*p];

              p++;

      }

      return maplen;

}

int main() {

      /* 用于输入的字符数组  */

      char buff[MAX_ARRAY_SIZE];

      /* 用于保存转换规则的数组  */

      char map[MAX_MAP_SIZE];

      /* 保存字符数组长度  */

      int len = 0;

      int maplen = 0;

      int i = 0;

      len = inputArray(buff);

      if (len = 0) {

              puts("Cancelled");

      } else if (len 10) {

              puts("Not enough 10 chars");

      } else {

              maplen = processArray(len, buff, map);

              if (maplen = 0) {

                      puts("转换结果:");

                      for (i = 0; i len; i++) {

                              printf("%c ", buff[i]);

                      }

                      puts("");

                      puts("映射规则:");

                      for (i = 0; i maplen; i++) {

                              printf("%c - %d\n", map[i], i);

                      }

                      puts("");

              } else if (maplen == -1) {

                      puts("Different Chars count is OverLimit of 10");

              } else if (maplen = -2) {

                      printf("Unexpected char %c\n", -maplen);

              }

      }

      return 0;

}

执行结果: