o13在c语言中正确吗,C语言问题解答,o(︶︿︶)o 唉,学文还是学理啊???

问题标题

C语言问题解答,o(︶︿︶)o 唉,学文还是学理啊???

2019-5-20来自ip:14.147.155.220的网友咨询

浏览量:208 手机版

问题补充:

C语言问题解答,o(︶︿︶)o 唉,学文还是学理啊???

网友答案

厉害 这个好 可以发代码啦#includevoid Rearrangement(int *arr,int len,int a){int i, j;for(i=0;i{if(a}//这个循环的作用是找到a应该插入到哪个位置for(j = len; j >i; j --){arrj = arrj-1; //对于i位置以后的数据,顺序向后移动一位,给a留出插入的空间}arri = a;//插入a}int main(){int arr5={3,4,5,6};Rearrangement(arr,4,2);//len应该是当前数组中的元素个数for(int i=0;i{printf("%d ",arri);}return 0;} 代码优化一下 从后往前找位置,找的同时做移动 就可以改成一个循环解决问题#includevoid Rearrangement(int *arr,int len,int a){int i;for(i = len - 1; i >= 0; i --){if(arri arri+1 = arri; //一边找 一边移动}arri+1 = a;//插入a}int main(){int arr5={3,4,5,6};Rearrangement(arr,4,2);//len应该是当前数组中的元素个数for(int i=0;i{printf("%d ",arri);}return 0;}

网友答案

例题2:若t为double类型,表达式t=1,t+5,t++的值是A) 1 B) 6.0 C) 2.0 D) 1.0 分析:该题的表达式也是一逗号表达式,运算过程同例题1。

需要注意的是,其中的第二个表达式t+5对整个表达式的运算结果不产生任何影响,因为它没有改变变量x的值x的值仍为1.0,最后一个表达式t++的值为变量x进行自增运算前的值1.0,所以整个表达式的值也为1.0。

注:这是1998年4月二级C考试中的一道选择题。

例题1:若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是A) 1 B) 2 C) 2.0 D) 2.5 分析:该表达式是一个逗号表达式,所以先运算x=1,结果变量x中的值为1.0,然后运算y=x+3/2,其结果是变量y中的值为2.0这个运算过程可参阅本专题的“整数除法的注意事项”,注意此时表达式y=x+3/2的值即等于变量y的值为2.0。

最后,整个逗号表达式的值应该等于最后一个表达式的值2.0,所以,正确答案是C)。

注:该题曾在1998年4月和2000年9月的二级C考试中两次出现过。

例题2:若t为double类型,表达式t=1,t+5,t++的值是A) 1 B) 6.0 C) 2.0 D) 1.0 分析:该题的表达式也是一逗号表达式,运算过程同例题1。

需要注意的是,其中的第二个表达式t+5对整个表达式的运算结果不产生任何影响,因为它没有改变变量x的值x的值仍为1.0,最后一个表达式t++的值为变量x进行自增运算前的值1.0,所以整个表达式的值也为1.0。

注:这是1998年4月二级C考试中的一道选择题。

网友答案

你好:先说一下声明与定义的区别。

“定义”是指对函数功能的确立,包括指定函数名,函数值类型、形参类型、函数体等,它是一个完整的、独立的函数单位。

而“声明” 的作用则是把函数的名字、函数类型以及形参类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查例如函数名是否正确,实参与形参的类型和个数是否一致从上面的说的,可以知道声明只是向编译器说明,我是一个函数,我返回类型是什么,我应该传什么样的参数。

就只是这样而已。

在声明一个函数时,其参数只用类型表示就可以了,有没有参数变量都无所谓。

你可以这样声明void outputSocre(int, int);也是可以的,但不建议这样做。

声明一个函数最好是只看到函数名,函数参数就可以大致明白函数的作用,所以在声明函数里,参数要加上有意义的名称。

毕竟你写的函数不是只有你一个人要用。

网友答案

(1)char *pch_1=&ch1, *pch_2=&ch2;(2)int *pn_1=&n1, *pn_2=&n2;(3)double *pd_1=&d1, pd_2=&d2;(4)printf("%ld %ld\n", pch_1, pch_2);(5)printf("%ld %ld\n", pn_1, pn_2);(6)printf("%ld %ld\n", pd_1, pd_2);(7)printf("%c %c\n", *pch_1, *pch_2);(8)printf("%d %d\n", *pn_1, *pn_2);(9)printf("%f %f\n", *pd_1, *pd_2);(10)*pch_1 += 32; *pch_2 += 32;(11)*pn_1 -= 5; *pn_2 -= 5;(12)*pd_1 += 10.0; *pd_2 += 10.0;(13)printf("%c %c\n", *pch_1, *pch_2);(14)printf("%d %d\n", *pn_1, *pn_2);(15)printf("%f %f\n", *pd_1, *pd_2);

网友答案

这个题目主要就是在说ASCII码、字符比较大小以及不同类型的变量进行运算。

其中 '\0' 的ASCII码为0 '0'到'9'的ASCII码依次是48到57。

. 楼上的已经把题目修改好了。

我就直接说了前面第一个FOR循环赋值就不说了。

从后面的for(i=0;i<2;i++) for(j=0;pij>'\0';j+=2) s=10*s+pij-'0';开始, 首先是字符型的变量pij与字符'\0'比较大小 ,此时p00为'6' ASC码比结束符的ASC码大 执行s=10*s+pij-'0', , 这里就是不同类型数据间的运算 字符型数据就强制转换成整型数据变为其ASC码值 即 s=10*s+54-48 即得此时s为6; 然后j=j+2=2 即开始执行下一步。

同理得接下来的步骤这里就把后面的写成数学表达式了 p02='3'>'\0' s=10*s+p02-'0'=60+3=63 j=j+2=4 p04='\0' i++ j=0 p10='8'>'\0' s=10*s+p10-'0'=630+8=638 j=j+2=2 p12='5'>'\0' s=10*s+p12-'0'=6380+5=6385 j=j+2=4 p14='\0' 结束 即得结果 6385

网友答案

下面的代码是帮你调整了的代码,你运行一下看看吧。

其中修改的地方包括: 1、几个switch语句位置调整,调整之后才能正确选择运算法则与表扬和鼓励的语句。

2、每次回答开始前对正确回答数j进行初始化为0,否则计数将错误。

已经测试过可以运行。

注意: 由于运算中是整数与整数之间的计算,因此除法时结果也为整数部分,也就是比如1/8 答案为0,而不会是0.125。

#include<stdio.h> #include<stdlib.h> #include<time.h> main(){ int i; int data1,data2,data; int result; int answer; int choose1,choose2; float j,rate; srand((unsigned)time(NULL)); do { j = 0; for(i=1;i<=10;i++) { data1=rand()%10+1; data2=rand()%10+1; data=rand()%4; switch(data) /*data值产生之后,就需要计算结果与选择符号。

因为符号一共有4种,因此随机数应该对4取余,从而得到data值为 0 到 3*/ { case 0:printf("%d+%d=",data1,data2);result=data1+data2;break; case 1:printf("%d-%d=",data1,data2);result=data1-data2;break; case 2:printf("%d*%d=",data1,data2);result=data1*data2;break; case 3:printf("%d/%d=",data1,data2);result=data1/data2;break; } scanf("%d",&answer); if(answer==result) { choose1=rand()%4; switch(choose1) /*当计算正确时,choose1 对4取余,随机得到0-3的数,然后选择一个回答正确时的夸奖语句*/ { case 0:printf("Very good!\n");break; case 1:printf("Excellent!\n");break; case 2:printf("Nice work!\n");break; case 3:printf("Keep up the good work!\n");break; } j++; } else { choose2=rand()%4; switch(choose2) /*当计算错误时,choose2 对4取余,随机得到0-3的数,然后选择一个回答错误时鼓励的语句*/ { case 0:printf("No!Please try again!\n");break; case 1:printf("Wrong!Try once more!\n");break; case 2:printf("Don't give up!\n");break; case 3:printf("Not correct!Keep trying!\n");break; } } } rate=j/10; printf("The accuracy:%f\n",rate); }while(rate<=0.75); getch(); }

网友答案

按照你的要求编写的C语言程序如下:#includeint main(){char ch;float pingshi,shixi,ceyan,qimochengji;double zongpingchengji;do{printf"请输入平时成绩:";scanf("%f",&pingshi);printf"请输入实习成绩:";scanf("%f",&shixi);printf"请输入测验成绩:";scanf("%f",&ceyan);printf"请输入期末成绩:";scanf("%f",&qimochengji);zongpingchengji=pingshi*0.1+shixi*0.2+ceyan*0.2+qimochengji*0.5;printf"总评成绩:%lf\n",zongpingchengji;getchar();printf"请输入字符空格继续,其它字符终止。

\n";ch=getchar();}while(ch==' ');return 0;}

网友答案

1.你在调用这个函数之前没有对此函数进行说明系统执行是从上到下执行,系统不认识add这玩意改进方法,1在调用前进行声明:,2吧这个函数写在主函数main之前2.没有写被调用函数的类型,在c语言中被调函数类型必须与主调函数类型一致改进方法:在add前写上int,在x,y前都写上int正确答案:#includemain() {int add(int x,int y);int a,b,sum;scanf("%d%d",&a,&b);sum=add(a,b);printf("%d",sum);}int add(int x,int y){return(x+y);}

我来回答

验证码:

e9568dae565949379ec40a9dfa476c45.gif

大家还关注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值