C语言double类型输出格式不正确

#include

int main (void)

{
float a0,a1,a2,a3;
float a,b,c,end1,end2,end3;
scanf("%f%f%f%f",&a0,&a1,&a2,&a3);
scanf("%f%f",&a,&b);
while(b-a>=0.001)
{
end1=a3*a*a*a+a2*a*a+a1*a+a0;
end2=a3*b*b*b+a2*b*b+a1*b+a0;
if(end1*end2<0)
{
c=(a+b)/2;
end3=a3*c*c*c+a2*c*c+a1*c+a0;
}
if(end3==0)
break;
else if(end1*end3<0)
b=c;
else if(end2*end3<0)
a=c;
else if(end1==0)
break;
else if(end2==0)
break;
}
printf("%.2f",c);
return 0;
}
图片说明

c

7个回答

这不是float 类型么?%.2f就是保留两位小数,输出格式没有错吧

qq_38717260
灰黑白色 回复wj960902: 应该是楼下讲的那个错误,先给它一个初值吧
2 年多之前 回复
wj960902
wj960902 对 是float类型 我写错了 但是输出不对 你可以复制运行一下
2 年多之前 回复

你把所有变量初始化,你在定义变量四,会给变量开辟内存,第一个if语句里面 end3 的值是多少? 无法比较

你这个题想干嘛?

(float)(c=(a+b)/2 )

c=(float)(a+b)/2

题目

嗯,c 在某些条件下,没有初始化。所以输出了这一大陀。另外 %.2f 就是只保留两位。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c语言,声明变量为double或float,为什么导致结果不一致

![图片说明](https://img-ask.csdn.net/upload/201606/30/1467256336_747114.png) #include<stdio.h> int main(){ double f,c; scanf("%1f",&f); c = (f-32.0)*5.0/9.0; printf("%.3f",c); return 0; } 上述代码若用double声明,结果乱码 若使用float声明,则结果运行正确 之前有了解到float输出时是先转换为double型,再按%f输出 这里不清楚为什么单精度和双精度对结果会产生影响 编译器使用的是codeblocks

C语言输出20位有效数字以上

![图片说明](https://img-ask.csdn.net/upload/201811/22/1542892222_949065.png) 正确结果应该为 1124000727777611309520 但是程序从3后面全部保留0了 各位大佬还有什么打一点的数据类型嘛 ![图片说明](https://img-ask.csdn.net/upload/201811/22/1542892455_876566.png)

C语言数据类型在程序中的使用?

先看一段代码 ``` #include <stdio.h> int main(void) { float n1 = 3.0; double n2 = 3.0; long n3 = 2000000000; long n4 = 1234567890; printf("%.1e %.1e %.1e %.1e \n",n1,n2,n3,n4); printf("%ld %ld \n",n3 ,n4); printf("%ld %ld %ld %ld \n",n1,n2,n3,n4); return 0; } ``` 下面是运行结果 ![图片说明](https://img-ask.csdn.net/upload/201906/13/1560420612_387079.png) 我知道的是%ld取4个字节double是8字节float在printf中转换为double 在第三行第一个%ld取得应该是n1的前4字节,第二个%ld取得是n1的后四个字节,以此类推,那这样的话第三行的输出结果应该不是0 0,且后两个值也不会被正确打印,而应该第三行的数据第一与第三个数为0第二与第四个数为n1与n2 的后四个字节,但是现在为什么能真确打印?求大神指教。

C语言1到20的阶乘怎么得出正确结果?

#include<stdio.h> int main() { double fun1(int n); double sum=0,m; int i; for(i=1;i<=20;i++) m=fun1(i); sum=sum+m; printf("%lf\n",sum); } double fun1(int n) { double m; if(n==1) m=1; else m=fun1(n-1)*n; return(m); } 为什么程序的结果是2432902008176640000.000000?怎么得出正确结果?

初学C语言 fprintf 错误地输出了文件的第一行内容

最近初学C语言,使用编译器DEV-C,遇到了一个没有想通的问题,特来请教。 这是图书管理系统的一个片段,目的是在借书操作后,将书的存量减一。 在文件中每一行格式为"%-25s %-20s %-25s %-5s\n"(包含空格) ``` FILE fp_books; //打开文件 fp_books=fopen("books.txt","r"); printf("Please input book number:\n"); //输入借出的书籍号 scanf("%s",&bookn); getchar(); book_input = atof(bookn); //将字符串书籍号变为数字 rewind(fp_books); int end = 0; double num_book=-1,num_bsto=-2; char book_name[LENGTH_BOOK_NAME+1]; //这些变量用于存放输入字符串 char book_number[LENGTH_BOOK_NUM+1]; char book_category[LENGTH_BOOK_CATE+1]; char book_stock[LENGTH_BOOK_STO+1]; memset(book_name,'\0', sizeof(book_name)); memset(book_number,'\0', sizeof(book_number)); memset(book_category,'\0', sizeof(book_category)); memset(book_stock,'\0', sizeof(book_stock)); do{ if (end >= 1) { printf("Book with Nmuber '%s' was not found in the file.\n",bookn); break; } fread(book_name, LENGTH_BOOK_NAME+1, 1,fp_books); //读取字符串 fread(book_number, LENGTH_BOOK_NUM+1, 1,fp_books); fread(book_category, LENGTH_BOOK_CATE+1, 1,fp_books); fread(book_stock, LENGTH_BOOK_STO, 1,fp_books); num_book = atof(book_number); fscanf(fp_books,"%*[^\n]"); fscanf(fp_books,"\n"); } while ((end=feof(fp_books), book_input != num_book)); //号码一致时停止 num_bsto = atof(book_stock); //将字符串书籍存量变为数字 num_bsto--; fseek(fp_books,-7,SEEK_CUR); //倒回至文件中存量的起始位置 fprintf(fp_books,"%-5.0f",num_bsto); ``` 在测试时出现了这样的结果![图片说明](https://img-ask.csdn.net/upload/201608/13/1471103939_389907.png) 文件中第二行“3”的位置是存量减一的正确输出,但后面却跟上了文件第一行的内容,并破坏了下面一行的数据。思考很久都没有找出原因,恳请各位伸出援手,感谢!

C语言 一个简单的数学算式输出结果总是零

#include <stdio.h> #include <math.h> int main() { long double t,ne,u,n; printf("请输入时间,电压\n"); scanf("%lf %lf",&t,&u); ne=(1.43E-14)/u/pow(t+0.02*t*pow(t, 0.5),1.5); n=ne/1.60E-19; printf("%lf %lf",ne,n); return 0; }

答案错误50%,输出正确,求助。

# 题目描述 有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩。读入这10个学生的数据,要求输出3门课程的总平均成绩,以及个人平均分最高的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。 ## 输入 共有10行,每行包含了一个学生的学号(整数)、名字(长度不超过19的无空格字符串)和3门课程的成绩(0至100之间的整数),用空格隔开。 ## 输出 第一行包含了3个实数,分别表示3门课程的总平均成绩,保留2位小数,每个数之后输出一个空格。 第二行输出个人平均分最高的学生的数据,与输入数据格式相同。如果有多位个人平均分最高的学生,输出按照输入顺序第一个最高分的学生数据。 请注意行尾输出换行。 ## 样例输入 101 AAA 80 81 82 102 BBB 83 84 85 103 CCC 86 87 88 104 DDD 89 90 91 105 EEE 92 93 94 106 FFF 80 90 100 107 GGG 85 90 95 108 HHH 80 85 90 109 III 90 91 92 110 JJJ 91 88 87 ## 样例输出 85.60 87.90 90.40 105 EEE 92 93 94 写的很臃肿,如果有表达的不清楚的地方请直言,谢谢! ``` #include<cstdio> #include<cstring> #include<cmath> using namespace std; struct student{ int num; char name[20]; int grade[20]; }; void input(student* &p); //输入函数 void print(student* &p); //输出函数 void caculate(double ave_s[], double ave_p[], int top[], student* &p); //计算单科总平均成绩与个人总平均成绩最高 void input(student* &p){ int i, j, judge = 0; char a[20]; //用于复制name数组 int n = 10; for(i=0; i<n; i++){ scanf("%d%s%d%d%d", &(p->num), p->name, p->grade, &(p->grade[1]), &(p->grade[2])); int len = strlen(p->name); //名字(长度不超过19,无空格) strcpy(a, p->name); for(j=0; j<len; j++){ if(a[j] == 32){ judge = 1; //作为空格判断 break; } } if(judge || len > 19 ){ n++; continue; } if((*p).grade[0] > 100 || (*p).grade[1] > 100 || (*p).grade[2] > 100 //成绩(0至100) || (*p).grade[0] < 0 || (*p).grade[1] < 0 || (*p).grade[2] < 0){ n++; continue; } p = p + 1; } } void caculate(double ave_s[], double ave_p[], int top[], student* &p){ double sum_1, sum_2, sum_3; int i, j, k; int temp; double copy[20]; //用于复制平均分数组 for(i=0; i<10; i++){ sum_1 += p->grade[0]; sum_2 += p->grade[1]; sum_3 += p->grade[2]; p = p + 1; } ave_s[0] = sum_1 / 10; //单科总平均分 ave_s[1] = sum_2 / 10; ave_s[2] = sum_3 / 10; p = p - 10; for(j=0; j<10; j++){ double sum_p = (*p).grade[0] + (*p).grade[1] + (*p).grade[2]; ave_p[j] = sum_p / 3; p = p + 1; sum_p = 0; } for(k=0; k<10; k++){ copy[k] = ave_p[k]; } for(i=1; i<10; i++){ //将复制的数组冒泡排序 for(j=0; j<=10-i-1; j++){ if(copy[j] > copy[j + 1]){ temp = copy[j]; copy[j] = copy[j + 1]; copy[j + 1] = temp; } } } for(i=0, j=0; j<10; j++){ if(ave_p[j] == copy[9]){ top[i++] = j; //按顺序将最高分的同学加入数组 } } } void print(student* &p){ int top[5] = {0, 0, 0, 0, 0}; double ave_s[10], ave_p[10]; p = p - 10; //回到第一个student caculate(ave_s, ave_p, top, p); p = p - 10; printf("%.2f %.2f %.2f \n", ave_s[0], ave_s[1], ave_s[2]); p = p + top[0]; //如果有多位相同,则输出第一个最高分同学 printf("%d %s %d %d %d\n", (*p).num, (*p).name, (*p).grade[0], (*p).grade[1], (*p).grade[2]); } int main(){ student stu[10]; student* p = stu; input(p); print(p); return 0; } /*101 AAA 80 81 82 102 BBB 83 84 85 103 CCC 86 87 88 104 DDD 89 90 91 105 EEE 92 93 94 106 FFF 80 90 100 107 GGG 85 90 95 108 HHH 80 85 90 109 III 90 91 92 110 JJJ 91 88 87 */ ```

C语言新人求解这道题怎么编写

C语言新人求解这道题怎么编写 求编写步骤![图片说明](https://img-ask.csdn.net/upload/201610/26/1477464954_421957.png)

c语言中怎样将数值型数组写到txt文件中,并且打开文件时不是一堆乱码?

求教!请问在对文件进行读写的时候,将一double型的数组写进文件中,之后打开文件,为什么都是乱码?怎么修改才能在文件中显示数值呢? 附写的代码: #include <stdio.h> #include <stdlib.h> #include <time.h> struct type { double data[2]; }; void main() { int i; struct type dataset[200]; FILE *fp; if(!(fp=fopen("dataset.txt","w"))) { printf("cannot open this file!\n"); exit(0); } for(i = 0; i < 200; i ++) { dataset[i].data[0] = (double)(rand()%500); dataset[i].data[1] = (double)(rand()%500); fwrite(&dataset[i],sizeof(struct type),1,fp); } fclose(fp);

BP算法的C语言实现,代码个人测试正确, 但是wrong answer, 求大神指点

#include <stdlib.h> #include <math.h> #include <stdio.h> #include <time.h> #include <iostream> //#include "user.h" #include<cstdio> #include<iostream> #include<fstream> #include<cstdlib> #include<string> #include<algorithm> #define _CRT_SECURE_NO_WARNINGS #define _USE_MATH_DEFINES using namespace std; #define OUT_COUT 8 //输出向量维数 #define IN_COUT 72 //输入向量维数 #define COUT 792 //样本数量 #define NN 99 //单个样本数量 typedef struct { //bp人工神经网络结构 int h; //实际使用隐层数量 //double v[IN_COUT][IN_COUT/3]; //隐藏层权矩阵i,隐层节点最大数量为50 double v[IN_COUT/3][IN_COUT]; //double w[IN_COUT/3][OUT_COUT]; //输出层权矩阵 double w[OUT_COUT][IN_COUT/3]; double b1[IN_COUT/3]; double b2[OUT_COUT]; double x[COUT][IN_COUT]; double y[COUT][OUT_COUT]; double a; //学习率 double b; //精度控制参数 int LoopCout; //最大循环次数 } bp_nn; double fnet(double net) { //Sigmoid函数,神经网络激活函数 //return 1/(1+exp(-net)); return 2.0/(1+exp(-net))-1.0; } int InitBp(bp_nn *bp) { //初始化bp网络 /*printf("请输入隐层节点数,最大数为100:\n"); scanf_s("%d", &(*bp).h); printf("请输入学习率:\n"); scanf_s("%lf", &(*bp).a); //(*bp).a为double型数据,所以必须是lf printf("请输入精度控制参数:\n"); scanf_s("%lf", &(*bp).b); printf("请输入最大循环次数:\n"); scanf_s("%d", &(*bp).LoopCout);*/ (*bp).h = 24; (*bp).a = 0.4; (*bp).b = 0.0001; (*bp).LoopCout = 2000; int i, j; srand((unsigned)time(NULL)); for (i = 0; i < (*bp).h; i++) { for (j = 0; j < IN_COUT; j++) { (*bp).v[i][j] = rand() / (double)(RAND_MAX); } (*bp).b1[i] = rand()/(double)(RAND_MAX); } for (i = 0; i < OUT_COUT; i++) { for (j = 0; j < (*bp).h; j++) { (*bp).w[i][j] = rand() / (double)(RAND_MAX); } (*bp).b2[i] = rand()/(double)(RAND_MAX); } return 1; } int TrainBp(bp_nn *bp, double x[COUT][IN_COUT], double y[COUT][OUT_COUT]) { //训练bp网络,样本为x,理想输出为y double f = (*bp).b; //精度控制参数 double a = (*bp).a; //学习率 int h = (*bp).h; //隐层节点数 //double v[IN_COUT][IN_COUT/3], w[IN_COUT/3][OUT_COUT]; //权矩阵 double v[IN_COUT/3][IN_COUT], w[OUT_COUT][IN_COUT/3]; //权矩阵 double b1[IN_COUT/3],b2[OUT_COUT]; double ChgH[IN_COUT/3], ChgO[OUT_COUT]; //修改量矩阵 double O1[IN_COUT/3], O2[OUT_COUT]; //隐层和输出层输出量 int LoopCout = (*bp).LoopCout; //最大循环次数 int i, j, k, n; double temp; for (i = 0; i < h; i++) {// 复制结构体中的权矩阵 for (j = 0; j < IN_COUT; j++) { v[i][j] = (*bp).v[i][j]; } b1[i] = (*bp).b1[i]; } for (i = 0; i < OUT_COUT; i++) { for (j = 0; j < h; j++) { w[i][j] = (*bp).w[i][j]; } b2[i] = (*bp).b2[i]; } double e = f + 1; for (n = 0; e > f && n < LoopCout; n++) { //对每个样本训练网络 e = 0; for (i= 0; i < COUT; i++) { for (k= 0; k < h; k++) { //计算隐层输出向量 temp = 0; for (j = 0; j < IN_COUT; j++) temp = temp + x[i][j] * v[k][j]; O1[k] = fnet(temp+(*bp).b1[i]); } for (k = 0; k < OUT_COUT; k++) { //计算输出层输出向量 temp = 0; for (j = 0; j < h; j++) temp = temp + O1[j] * w[k][j]; O2[k] = fnet(temp+(*bp).b2[k]); } for (j = 0; j < OUT_COUT; j++) {//计算输出层的权修改量 ChgO[j] = O2[j] * (1 - O2[j]) * (y[i][j] - O2[j]); } for (j = 0; j < OUT_COUT ; j++) {//计算输出误差 e = e + (y[i][j] - O2[j]) * (y[i][j] - O2[j]); } for (j = 0; j < OUT_COUT; j++) { //计算隐层权修改量 temp = 0; for (k = 0; k < h; k++) temp = temp + w[j][k] * ChgO[k]; ChgH[j] = temp * O1[j] * (1 - O1[j]); } for (j = 0; j < OUT_COUT; j++) {//修改输出层权矩阵 for (k = 0; k < h; k++) { w[j][k] = w[j][k] + a * O1[j] * ChgO[k]; } } for (j = 0; j < h; j++) { for (k = 0; k < IN_COUT; k++) { v[j][k] = v[j][k] + a * x[i][j] * ChgH[k]; } } } if (n % 10 == 0) printf("误差 : %f\n", e); } printf("总共循环次数:%d\n", n); printf("调整后的隐层权矩阵:\n"); for (i = 0; i < h; i++) { for (j = 0; j < IN_COUT; j++) printf("%f ", v[i][j]); printf("\n"); } printf("调整后的输出层权矩阵:\n"); for (i = 0; i < OUT_COUT; i++) { for (j = 0; j < h; j++) printf("%f ", w[i][j]); printf("\n"); } for (i = 0; i < h; i++) {//把结果复制回结构体 for (j = 0; j < IN_COUT; j++) { (*bp).v[i][j] = v[i][j]; } (*bp).b1[i] = b1[i]; } for (i = 0; i < OUT_COUT; i++) { for (j = 0; j < h; j++) { (*bp).w[i][j] = w[i][j]; } (*bp).b2[i] = b2[i]; } printf("bp网络训练结束!\n"); return 1; } int UseBp(bp_nn *bp) { //使用bp网络 float Input[IN_COUT]; double O1[50]; double O2[OUT_COUT]; //O1为隐层输出,O2为输出层输出 while (1) { //持续执行,除非中断程序 printf("请输入3个数:\n"); int i, j; for (i = 0; i < IN_COUT; i++) scanf_s("%f", &Input[i]); double temp; for (i = 0; i < (*bp).h; i++) { temp = 0; for (j = 0; j < IN_COUT; j++) temp += Input[j] * (*bp).v[j][i]; O1[i] = fnet(temp-(*bp).b1[i]); } for (i = 0; i < OUT_COUT; i++) { temp = 0; for (j = 0; j < (*bp).h; j++) temp += O1[j] * (*bp).w[j][i]; O2[i] = fnet(temp-(*bp).b2[i]); } printf("结果: "); for (i = 0; i < OUT_COUT; i++) printf("%.3f ", O2[i]); printf("\n"); } return 1; } void readFP(double x[COUT][IN_COUT],double y[COUT][OUT_COUT]) { //bp_nn bp1; ifstream fileinput1; ifstream fileinput2; ifstream fileinput3; ifstream fileinput4; ifstream fileinput5; ifstream fileinput6; ifstream fileinput7; ifstream fileinput8; fileinput1.open("emgclose.txt"); fileinput2.open("emgopen.txt"); fileinput3.open("emgext.txt"); fileinput4.open("emgfle.txt"); fileinput5.open("emgsph.txt"); fileinput6.open("emgcyl.txt"); fileinput7.open("emgtri.txt"); fileinput8.open("emgkey.txt"); for(int m = 0;m< NN;++m) { for(int i =0;i < IN_COUT;++i) { fileinput1 >> x[m][i]; } } for(int m = NN;m<2*NN;++m) { for(int i =0;i < IN_COUT;++i) { fileinput2 >> x[m][i]; } } for(int m = 2*NN;m<3*NN;++m) { for(int i =0;i < IN_COUT;++i) { fileinput3 >> x[m][i]; } } for(int m = 3*NN;m<4*NN;++m) { for(int i =0;i < IN_COUT;++i) { fileinput4 >> x[m][i]; } } for(int m = 4*NN;m<5*NN;++m) { for(int i =0;i < IN_COUT;++i) { fileinput5 >> x[m][i]; } } for(int m = 5*NN;m<6*NN;++m) { for(int i =0;i < IN_COUT;++i) { fileinput6 >> x[m][i]; } } for(int m = 6*NN;m<7*NN;++m) { for(int i =0;i < IN_COUT;++i) { fileinput7 >> x[m][i]; } } for(int m = 7*NN;m<8*NN;++m) { for(int i =0;i < IN_COUT;++i) { fileinput8 >> x[m][i]; } } fileinput1.close(); fileinput2.close(); fileinput3.close(); fileinput4.close(); fileinput5.close(); fileinput6.close(); fileinput7.close(); fileinput8.close(); ifstream fileinput; fileinput.open("teach.txt"); for (int m2 = 0; m2 < OUT_COUT; m2++) { for (int i = 0; i < OUT_COUT; i++) { fileinput>>y[m2][i]; } for (int j = m2*NN; j < (m2+1)*NN; j++) { for (int k = 0; k < OUT_COUT; k++) { y[j][k] = y[m2][k]; } } } for (int i = 0; i < NN; i++) { for (int j = 0; j < OUT_COUT; j++) { y[i][j] = y[0][j]; } } fileinput.close(); double Mininput[IN_COUT] = {0.0}; double Maxinput[IN_COUT] = {0.0}; //找出训练的数据相应的最大值、最小值,为归一化做准备 for (int i = 0; i < IN_COUT; i++) { Mininput[i] = Maxinput[i] = x[0][i]; for (int j = 0; j < COUT; j++) { Mininput[i] = Mininput[i] < x[j][i]?Mininput[i]:x[j][i]; Maxinput[i] = Maxinput[i] > x[j][i]?Maxinput[i]:x[j][i]; } } //归一化处理 for (int i = 0; i < OUT_COUT; i++) { for (int j = 0; j < COUT; j++) { y[j][i] = 2.0*(y[j][i] - 0.0)/(1.0 - 0.0)-1.0; } } for (int i = 0; i < IN_COUT; i++) { for (int j = 0; j < COUT; j++) { //X[i][j] = (X1[i][j] - Mininput[i]+1)/(Maxinput[i] - Mininput[i]+1); x[j][i] = 2.0*(x[j][i] - Mininput[i])/(Maxinput[i] - Mininput[i])-1.0; } } } int main() { /* float x[COUT][IN_COUT] = {{0.8,0.5,0}, {0.9,0.7,0.3}, {1,0.8,0.5}, {0,0.2,0.3}, {0.2,0.1,1.3}, {0.2,0.7,0.8}}; //训练样本 int y[COUT][OUT_COUT] = {{0,1}, {0,1}, {0,1}, {1,0}, {1,0}, {1,0}}; */ //理想输出 bp_nn bp; readFP(bp.x,bp.y); InitBp(&bp); //初始化bp网络结构 TrainBp(&bp, bp.x, bp.y); //训练bp神经网络 // UseBp(&bp); //测试bp神经网络 return 1; }

关于C语言中输入浮点数

求大神讲解一下浮点数输入的方法和注意事项啊,我老是得不到想要的答案呢~~~~(>_<)~~~~ 比如: ``` #include <stdio.h> int main() { double a; scanf("%f",&a); printf("a=%f",a); return 0; } ``` 我输进去12.1 出来的结果是 12.1 a=-92559604618046016000000000000000000000000000000000000000000000.000000请按任意 键继续. . .

C语言中结构体中的数组,不能直接赋值吗

设有定义:struct{char mark[12];intnum1;double num2;}t1,t2;若变量均已正确赋初值,则以下语句中错误的是(C) (A) t1=t2; (B) t2.num1=t1.num1; (C) t2.mark=t1.mark;//mark为结构体中的数组,不能直接赋值?? (D) t2.num2=t1.num2; ​====如题参考答案说为结构体中的数组,不能直接赋值,为什么呢?那应该怎么赋值呢?求大侠指教

0基础初学提问:请教在VS2019编C语言时警告提示的scanf参数问题?

![图片说明](https://img-ask.csdn.net/upload/202002/04/1580827147_188119.png) 想输入3个小写字母,输出其对应的3个大写字母 因为之前学习的时候老师用的是VC++,所以到了VS2019里不知道该怎么写正确 出现了超多很愚蠢的错误,百度了很多都没弄清楚(我太蠢了QAQ) 本人非计算机专业,才自学两天,望有好心人能出手相助,帮忙讲解一下警告中代码提示的意思TAT 跪谢Orz!!

c++ scanf多个负数输入问题

double a,b,c,d; scanf("%lf,%lf,%lf,%lf",&a,&b,&c,&d); 这里,假如输入数是-1.2,2.34,-3,-4.56 那么除了第一个数a外,后面三个都不能得到正确的值,这是为什么? 正数和整数就可以。 而要想输入多个负数,scanf中间就要用“ ”空格分开,不能用“,”逗号,假如格式化必须要使用逗号怎么办(在某种格式化输入中需要使用逗号),为此我折腾了半天?

C语言新手求助各位大佬

求组合数(15 分) 本题要求编写程序,根据公式C ​n ​m ​​ = ​m!(n−m)! ​ ​n! ​​ 算出从n个不同元素中取出m个元素(m≤n)的组合数。 建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。 输入格式: 输入在一行中给出两个正整数m和n(m≤n),以空格分隔。 输出格式: 按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围内。 题目如上 我的代码是 #include "stdio.h" double fact(int n); main() { int m,n; double result; scanf("%d %d",&m,&n); if(m>n) printf("error!!"); else { result=fact(n)/(fact(m)*fact(n-m)); printf("result=%lf",result); } } double fact(int n) { int i,s=1; if(n>1) { for(i=1;i<=n;i++) { s*=i; } return double(s); } if(n=1) s=1; } 找不到问题出在哪里可就是得不到正确的结果 求助555555555QAQ

C语言中关于类型的问题

题目是1+x/1!+x^2/2!+......+x^n/n! x,n是用户自己输入的 刚开始是这样 #include <stdio.h> #include <stdlib.h> int main() { int i_I=1,i_N,i_Term=1; double d_X,d_Term=1,d_Sum=1; scanf("%lf",&d_X); scanf("%d",&i_N); while(i_I<=i_N) { d_Term*=d_X; i_Term*=i_I; d_Sum+=d_Term/i_Term; i_I++; } printf("%lf",d_Sum); return 0; } 然后输入7和27就会输出特别大的值 #include <stdio.h> #include <stdlib.h> int main() { int i_I=1,i_N; double d_X,d_Term=1,i_Term=1,d_Sum=1; scanf("%lf",&d_X); scanf("%d",&i_N); while(i_I<=i_N) { d_Term*=d_X; i_Term*=i_I; d_Sum+=d_Term/i_Term; i_I++; } printf("%lf",d_Sum); return 0; } 这样改就正确了 为什么啊QAQ新手不懂谢谢大家

C语言任意输入三点求三角形面积周长,并判断其合法性

``` #include<stdio.h> #include<math.h> int main(void) { double p,a,b,c,primter,area,s; float x1,y1,x2,y2,x3,y3; scanf("%f%f%f%f%f%f",&x1,&y1,&x2,&y2,&x3,&y3); a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); b=sqrt((x2-x3)*(x2-x3)+(y1-y2)*(y1-y2)); c=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)); if((a<b+c)&&(b<a+c)&&(c<a+b)){ p=(a+b+c)/2; s=p*(p-a)*(p-b)*(p-c); primter=a+b+c; area=sqrt(s); printf("primter=%.2f",primter); printf("area=%.2f",area); } else{ printf("Impossible\n"); } return 0; } ``` ``` #include<stdio.h> #include<math.h> int main() { double a,b,c,d,e,f; scanf("%lf %lf %lf %lf %lf %lf",&a,&b,&c,&d,&e,&f ); double AB,BC,AC,ab,bc,ac; ab=(a-c)*(a-c)+(b-d)*(b-d); bc=(c-e)*(c-e)+(d-f)*(d-f); ac=(a-e)*(a-e)+(b-f)*(b-f); AB=sqrt(ab); BC=sqrt(bc); AC=sqrt(ac); if((AB<BC+AC)&&(BC<AB+AC)&&(AC<AB+BC)) { double l=AB+BC+AC; double P = l / 2; double s = sqrt(P*(P-AB)*(P-BC)*(P-AC)); printf("primter = %.2f, area = %.2f",l,s); } else {printf ("Impossible"); } return 0;} ``` 上面的代码和下面的代码有什么区别,编译都没错, 为什么上面的输出数据是错误的, 而下面的正确的,希望可以指出错误。

关于输入一个不超过五位的整数然后判断位数,分别输出每一位,最后输出这个数的倒序数字的问题。

#include<stdio.h>; int main() { double a; int i,b,c,d=10,r; printf("输入一个不超过五位的数\n"); scanf("%d",&a); if(100000>a&&a>=10000) { printf("%d是一个五位数\n",a); c=b=a/10000; printf("%d\n",c); r=c; for(i=1000;10>i;i=i/10); { b=a/i-10*c; r=r+d*b; d=10*d; c=10*c+b; printf("%d",b); printf("%d",r); } } else if(9999>=a&&a>=1000) { printf("%d是一个四位数\n",a); c=b=a/1000; printf("%d\n",c); r=c; for(i=100;10>i;i=i/10); { b=a/i-10*c; r=r+d*b; d=10*d; c=10*c+b; printf("%d",b); printf("%d",r); } } else if(999>=a&&a>=100) { printf("%d是一个三位数\n",a); c=b=a/100; printf("%d\n",c); r=c; for(i=10;10>i;i=i/10); { b=a/i-10*c; r=r+d*b; d=10*d; c=10*c+b; printf("%d",b); printf("%d",r); } } else if(99>=a&&a>=10) { printf("%d是一个两位数\n",a); c=b=a/10; printf("%d\n",c); r=c; for(i=10;10>i;i=i/10); { b=a/i-10*c; r=r+d*b; d=10*d; c=10*c+b; printf("%d",b); } } else printf("%d是一个一位数\n%d\n",a) ; return 0; } 运行结果不正确,而且伴有输出随机数。 这一段代码错在哪里?

CodeBlock 中添加-std=c99 后,scanf("%lf",&a) 不能正确写入数值

## 代码如下: ``` #include <stdio.h> int main(void) { double a; scanf("%lf",&a); printf("%lf",a); } ``` ## 1.为CodeBlock 中添加-std=c99 ![图片说明](https://img-ask.csdn.net/upload/201507/10/1436538549_565634.jpg) **运行结果:** ![图片说明](https://img-ask.csdn.net/upload/201507/10/1436538651_527311.png) ## 2.CodeBlock 不添加-std=c99 ![图片说明](https://img-ask.csdn.net/upload/201507/10/1436538846_140937.jpg) **运行结果:** ![图片说明](https://img-ask.csdn.net/upload/201507/10/1436538907_430624.png)

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

你连存活到JDK8中著名的Bug都不知道,我怎么敢给你加薪

CopyOnWriteArrayList.java和ArrayList.java,这2个类的构造函数,注释中有一句话 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public ArrayList(Collection&lt;? ...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

记录下入职中软一个月(外包华为)

我在年前从上一家公司离职,没想到过年期间疫情爆发,我也被困在家里,在家呆着的日子让人很焦躁,于是我疯狂的投简历,看面试题,希望可以进大公司去看看。 我也有幸面试了我觉得还挺大的公司的(虽然不是bat之类的大厂,但是作为一名二本计算机专业刚毕业的大学生bat那些大厂我连投简历的勇气都没有),最后选择了中软,我知道这是一家外包公司,待遇各方面甚至不如我的上一家公司,但是对我而言这可是外包华为,能...

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

培训班出来的人后来都怎么样了?(二)

接着上回说,培训班学习生涯结束了。后面每天就是无休止的背面试题,不是没有头脑的背,培训公司还是有方法的,现在回想当时背的面试题好像都用上了,也被问到了。回头找找面试题,当时都是打印下来天天看,天天背。 不理解呢也要背,面试造飞机,上班拧螺丝。班里的同学开始四处投简历面试了,很快就有面试成功的,刚开始一个,然后越来越多。不知道是什么原因,尝到胜利果实的童鞋,不满足于自己通过的公司,嫌薪水要少了,选择...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

6年开发经验女程序员,面试京东Java岗要求薪资28K

写在开头: 上周面试了一位女程序员,上午10::30来我们部门面试,2B哥接待了她.来看看她的简历: 个人简历 个人技能: ● 熟悉spring mvc 、spring、mybatis 等框架 ● 熟悉 redis 、rocketmq、dubbo、zookeeper、netty 、nginx、tomcat、mysql。 ● 阅读过juc 中的线程池、锁的源...

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

SpringBoot系列之Redis缓存使用详细教程

Spring的缓存抽象 Spring从3.1开始定义了一系列抽象接口来统一不同的缓存技术;并支持使用Java Caching(JSR-107)注解简化我们进行缓存开发。Spring Cache 只负责维护抽象层,具体的实现由你的技术选型来决定。将缓存处理和缓存技术解除耦合。 JSR107 Java Caching(JSR-107)定义了5个核心接口,分别是CachingProvider, Cach...

推荐9个能让你看一天的网站

分享的这9个保证另你意外的网站,每个都非常实用!非常干货!毫不客气的说,这些网站最少值10万块钱。 利用好这些网站,会让你各方面的技能都得到成长,不说让你走上人生巅峰,但对比现在的你,在眼界、学识、技能方面都有质的飞跃。 一、AIRPANO 传送门:https://www.airpano.com/360photo_list.php 这是一个可以躺在家里,就能环游世界的神奇网站。 世界那么大,绝大多...

大牛都会用的IDEA调试技巧!!!

导读 前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点...

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

文章目录1. 无状态登录1.1 什么是有状态1.2 什么是无状态1.3 如何实现无状态1.4 各自优缺点2. 登录交互2.1 前后端分离的数据交互2.2 登录成功2.3 登录失败3. 未认证处理方案4. 注销登录 这是本系列的第四篇,有小伙伴找不到之前文章,松哥给大家列一个索引出来: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密...

月薪22K程序员,打卡迟到10次,收到工资短信一脸懵逼

每家公司为了保证公司员工每天的工作时间,一般都会采用上下班打卡的工作制度,这其实是一个很常见的是,本身也没有什么问题的。正所谓无规矩不成方圆,公司肯定是有公司的规矩,虽然每个员工都很不喜欢这些规矩来束缚我们,但是公司也只是为了能更好的管理员工。但是一家公司如果一成不变的使用打卡制度,而不会去变通管理,也真不一定是好事。 打卡制度特别对于销售部门来说,不但会让公司发展不起来,还很容易丢失员工。但如...

97年世界黑客编程大赛冠军作品(大小仅为16KB),惊艳世界的编程巨作

这是世界编程大赛第一名作品(97年Mekka ’97 4K Intro比赛)汇编语言所写。 整个文件只有4095个字节, 大小仅仅为16KB! 不仅实现了3D动画的效果!还有一段震撼人心的背景音乐!!! 内容无法以言语形容,实在太强大! 下面是代码,具体操作看最后! @echo off more +1 %~s0|debug e100 33 f6 bf 0 20 b5 10 f3 a5...

程序员是做全栈工程师好?还是专注一个领域好?

昨天,有位大一的同学私信我,说他要做全栈工程师。 我一听,这不害了孩子么,必须制止啊。 谁知,讲到最后,更确定了他做全栈程序员的梦想。 但凡做全栈工程师的,要么很惨,要么很牛! 但凡很牛的,绝不是一开始就是做全栈的! 全栈工程师听起来好听,但绝没有你想象的那么简单。 今天听我来给你唠,记得帮我点赞哦。 一、全栈工程师的职责 如果你学习编程的目的只是玩玩,那随意,想怎么学怎么学。...

不要再到处使用 === 了

我们知道现在的开发人员都使用 === 来代替 ==,为什么呢?我在网上看到的大多数教程都认为,要预测 JavaScript 强制转换是如何工作这太复杂了,因此建议总是使用===。这些都...

什么是a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站?00后的世界我不懂!

A站 AcFun弹幕视频网,简称“A站”,成立于2007年6月,取意于Anime Comic Fun,是中国大陆第一家弹幕视频网站。A站以视频为载体,逐步发展出基于原生内容二次创作的完整生态,拥有高质量互动弹幕,是中国弹幕文化的发源地;拥有大量超粘性的用户群体,产生输出了金坷垃、鬼畜全明星、我的滑板鞋、小苹果等大量网络流行文化,也是中国二次元文化的发源地。 B站 全称“哔哩哔哩(bilibili...

十个摸鱼,哦,不对,是炫酷(可以玩一整天)的网站!!!

文章目录前言正文**1、Kaspersky Cyberthreat real-time map****2、Finding Home****3、Silk – Interactive Generative Art****4、Liquid Particles 3D****5、WINDOWS93****6、Staggering Beauty****7、Ostagram图片生成器网址****8、全历史网址*...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

​能让德国人放弃现金支付​,也没谁了

在新冠疫情中,德国人越来越多地选择在超市,加油站或其他商店付款时使用非接触式付款方式。德国信贷协会Deutschen Kreditwirtschaft (DK) 的一位发言人告诉德国新...

大厂的 404 页面都长啥样?最后一个笑了...

每天浏览各大网站,难免会碰到404页面啊。你注意过404页面么?猿妹搜罗来了下面这些知名网站的404页面,以供大家欣赏,看看哪个网站更有创意: 正在上传…重新上传取消 腾讯 正在上传…重新上传取消 网易 淘宝 百度 新浪微博 正在上传…重新上传取消 新浪 京东 优酷 腾讯视频 搜...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

原来实现钉钉自动签到如此简单,每天准时上下班不是梦

本文主要介绍了如何利用现成软件快速实现钉钉自动签到功能,核心思路非常简单,甚至无任何编程基础的小白也能轻松实现定时自动打卡功能.

前端还能这么玩?(女朋友生日,用前端写了一个好玩的送给了她,高兴坏了)

前端还能这么玩?(女朋友生日,用前端写了一个好玩的送给了她,高兴坏了)

爬虫(101)爬点重口味的

小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,都快流鼻血。。。然后小弟冥思苦想,得干一点有趣的事情python 爬虫库安装https://s.taobao.com/api?_ks...

讲真,这两款idea插件,能治愈你英语不好的病

时不时就有小伙伴问我,“二哥,能推荐一款 IDE 吗?”你看这话问的,现在搞 Java 的不都在用 Intellij IDEA 吗,还用得着推荐(我已经和 Eclipse 分手了)。然后小伙伴又说,“二哥,IDEA 支持中文吗?我英语不太好。”你看这话问的,搞编程的,英语不好是硬伤啊! 不过,随着 IDEA 最新版(版本号是 2020.1)的发布,英语不好的病可以彻底治愈了。为什么这么说呢?因为 ...

面试官给我挖坑:a[i][j] 和 a[j][i] 有什么区别?

点击上方“朱小厮的博客”,选择“设为星标”后台回复&#34;1024&#34;领取公众号专属资料本文以一个简单的程序开头——数组赋值:int LEN = 10000; int[][] ...

相关热词 c# 按行txt c#怎么扫条形码 c#打包html c# 实现刷新数据 c# 两个自定义控件重叠 c#浮点类型计算 c#.net 中文乱码 c# 时间排序 c# 必备书籍 c#异步网络通信
立即提问