C语言问题求大神解答

作者&投稿:毅纪 (若有异议请与网页底部的电邮联系)
求大神解答一下C语言问题?~


原来的程序没有问题啊!
不过程序可以简化的:
#include
int main()
{ int n,i,j,t,m,a[1000],b[1000]={0};
scanf("%d",&n);
for(i=0; i<n; i++)
{ scanf("%d",&a[i]);
for(j=a[i]; j!=0; j/=10)
{ b[i]+=j%10;
}
}
for(i=0; i<n-1; i++)
{ for(j=0; j<n-i-1; j++)
{ if(b[j+1]>b[j]||b[j]==b[j+1]&&a[j+1]<a[j])
{ t=b[j];
m=a[j];
b[j]=b[j+1];
a[j]=a[j+1];
b[j+1]=t;
a[j+1]=m;
}
}
}
for(i=0; i<n; i++)
printf("%d %d
",a[i],b[i]);
return 0;
}

#include
#include
#include
typedef unsigned int uint;
typedef struct tagStudent student;
struct tagStudent
{
uint stuNum;
//uint seq;
wchar_t name[10];
int scoreCh;
int scoreEn;
int scoreMath;
int totalScore;
int averScore;
};
int main(void)
{
int n = 0;
int i = 0, j = 0;
wchar_t wch = 0;
student *stu = NULL;
printf("请输入有多少个学生:
");
scanf("%d", &n);
getchar();

stu = (student *)malloc(sizeof(student)*n);
if(stu != NULL)
{
memset(stu, 0, sizeof(student)*n);
for(i = 0; i < n; i++)
{
printf("请输入第%d名学生的学号:
",i+1);
scanf("%u", &stu[i].stuNum);
getchar();
printf("请输入第%d名学生的姓名:
",i+1);
j = 0;
while((wch = getwchar()) != '
')
{
stu[i].name[j] = wch;
j++;
}
printf("请输入第%d名学生的语文分数:
",i+1);
scanf("%d", &stu[i].scoreCh);
getchar();
printf("请输入第%d名学生的数学分数:
",i+1);
scanf("%d", &stu[i].scoreMath);
getchar();

楼主你好。

(b=2,n%=b)其实就是两条语句,第一条语句将b赋值为2,第二条语句将n对b取余并将结果存到n中,(也就是5%2的结果为1,把1赋值给n)。

然后上面这条语句的返回值就是第二条语句的返回值,也就是1,因此a%=(b=2,n%=b)+4就相当于a%=1+4即a%=5。

而12%5的值为2,将2的结果赋给a,如此一来,a的值为2。

测试代码:

#include <stdio.h>

int main()

{

int b, a=12, n=5;

printf("(b=2,n%=b)=%d
",(b=2,n%=b));

a=12, n=5;

a%=(b=2,n%=b)+4;

printf("a=%d
",a);

}


运行结果:



a%=(b=2,n%=b)+4
1 计算()里面的,b=2, n=n%b=5%2=1, 逗号表达式返回最后一个表达式的值(赋值表达式的值就是被赋给的值,即1),所以括号里面结果为1
2 计算a%=1+4,先计算等号右边的值(5),则a%=5,等价于a=a%5=12%5=2

2 先计算括号里的逗号表达式结果为1,再计算 a%=5 结果为2


C语言 计算机题 求大神解答~
1、能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是“a>=10||a<=0”。(D选项)解析:“≥”用“>=”表示,“或”用“||”表示。2、判断char型变量c是否为大写字母的表达式是“(c>='A')&&(c<='Z')”。(C选项)解析:大写字母是A~Z,加上单引号,可以直接用来判断是否符合要求...

c语言编程问题,编写代码,a+b问题,求大神帮忙哇( ๑ŏ ﹏ ŏ๑...
【解题思路】这道题的难点是超多位数,也就是说40位数用最长的基础类型都表示不下。这个时候可以用数组,最简单的就是你定义三个长度为40的字符数组,每个元素存放一个0-9的数值,然后逐位进行加运算,碰到超过10的就进位。【程序代码】#include<iostream>#include<stdio.h>#include<conio.h>using ...

c语言求大神!
首先执行z=3大于0,再执行z--,z为2,然后执行++x,x=1小于5,while判断不为零,执行y=y-1,y=4。然后再执行z=2大于0,再执行z--,z为1,然后执行++x,x=2小于5,while判断不为零,执行y=y-1,y=3。然后再执行z=1大于0,再执行z--,z为0,然后执行++x,x=3小于5,while判断不...

求大神这个答案到底是啥啊?C语言
1.2.

C语言答案 求大神 解答
C语言规定,函数返回值的类型是由( )所决定。选项:a、return语句中的表达式类型 b、调用该函数时的主调函数类型 c、调用该函数是系统临时指定 d、在定义该函数时所指定的函数类型 这个可以参考第二题,函数的定义规则,当然是由定义的时候确定的了。本题答案为d。题号:6 凡是函数中未指定存储类别的...

C语言的简单问题求大神简单答案
输出时?%.2f 即可指定输出两位小数 const float π=3.1415926;void main(){ float r=1;areaMethod(r);\/\/面积 girthMethod(r);\/\/周长 } float areaMethod(float inr){ return inr*inr*π;} float girthMethod(float inr){ return 2*π*inr;} ...

C语言两道题!!求大神解答
第一个字符是转义字符'\\t',制表符也就是TAB健,占用4个字节,所以总共就是4+1=5个字节啦。33、考察点:do while循环体;C语言使用0代表逻辑假,非0代表逻辑假;x++是x自增前的结果,++x是x子增后的结果。int x=5;do{ printf("%2d\\n",x--); \/\/先打印x自减前的结果,就是 5,...

一个简单的C语言问题。。。求大神指教一下
在输入数值前(%d %f)可以有任意多个空白字符,如空格 回车 TAB 输入数值时,遇到第一个非数字字符,则结束数值输入(浮点数据中,小数点除外)按以上原则,A 2.0后有空格,不对,导致c1读到的是空格 B 同理,4.0后空格导致c2错 D 同理,2后的空格导致后续读数据错位 C 没有问题!

C语言 编程题 求大神解答?
include<stdio.h> int main(){ int a,b,c,d;for(a=0; a<2; a++)for(b=0; b<2; b++)for(c=0; c<2; c++)for(d=0; d<2; d++)if((a==0)+(c==1)+(d==1)+(d==0)==3&&(a+b+c+d==1)){ if(a)printf("A\\n");if(b)printf("B\\n");if(c)printf("C...

C语言有关问题,求大神!
include <stdio.h>#include <math.h>int main(){ float n, k = 0.0; int n1; printf("请输入里程:"); scanf("%f", &n); n1 = ((int)n < n?int(n+1):int(n)); \/\/n1 = ceil(n); if (n1 <= 0) { k = 0; } else if (n1 <= 3) ...

萝北县19159717209: 高分急求!C语言编程问题,求高手解答 -
门败一夫: 1、首先第四行是定义的一个子函数,在主函数内部定义的所以后面要加分号2、设定abc三个变量是题目所需,因为比较大小两个数来比较第三个变量来保存比较结果,你也可以设定两个变量,把比较结果保存到输入值中不过就会覆盖原来的值3、Z是一个子函数变量,设定在主函数中在子函数不能使用,z的生存期只有在那个max函数中才会分配内存空间4、第18行没有出来,第16行倒是可以给你解释哈,在16行他是返回比较值保存在z当中的然后在第7行那个c就会接收到max的比较结果

萝北县19159717209: c语言问题,求大神解答!给一个不多于5位的正整数.①求出它是几位数.②分别输出每一位数字.③按逆序输出各位数字.例如原数位465,应输出5 6 4.... -
门败一夫:[答案] #include#include#includeint main(){int num,tmp,i,j;int n[5]={0};//用于存储num分解后的每位上的数字,由于num不超过5位,所以数组有5个单元就可以了 int *sq_ls_num;printf("请输入一个不多于5位的正整数: ");sc...

萝北县19159717209: C语言问题,求高手解答.:C语言问题,小白勿入描述:FOR语句循环,我们假定有三个循环.当程序运行到一定程度时怎样让语句从第三个循环返回时直... -
门败一夫:[答案] 如果只是单纯的实现问题的功能. goto语句就可以了.(虽然goto有点不利于程序可读.但是这里用goto是最直接的方法.) 下面是伪代码: firstFor: for(参数)//第一个for循环 { for(参数)//第2个for循环 { for(参数)第3个fo...

萝北县19159717209: c语言问题 求大神解答 -
门败一夫: 按题中的意思就是两个瓶子换一瓶汽水(不含瓶子),所以下面的代码就搞定了#include int main() { int n,i,a,b,sum=0; scanf("%d",&n); if(n sum = 0; } else { //两个以上可以换 sum = n/2; //直接除以2,因为int类型所以多一个瓶子也不影响 } printf("%d\n",sum); //这是答案 return 0; }

萝北县19159717209: C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因 -
门败一夫: 已修改,看注释#include int main() { char a[20],b[20],c[50],*p1,*p2,*p3; p1=a,p2=b,p3=c; gets(a); while(*p1) { *p2 = (*p1)+3; //对字符串中的每个字符用加3的方法加密并存入数组b p1++; p2++; }*p2='\0'; //串结束符 p2=b ; //p2重新指向b的开始位置 while(*p2) { *p3 = (*p2)-3; //对b中的字符串解密存入数组c p3++; p2++; }*p3='\0'; puts(a); //puts是输出一个串 puts(b); puts(c); return 0; }

萝北县19159717209: C语言题目,求大神解答~!!! -
门败一夫: 这是一个字符串检索问题://在S字符串中检索子串T(模式匹配) int Index(char *S, char *T){ int i,j,lenS,lenT; for(lenS=0;S[lenS];++lenS); for(lenT=0;T[lenT];++lenT); i=1;j=1; while(i if(S[i-1]==T[j-1]){ ++i;++j; }//匹配,一起后移 else {i=i-j+2;j=1;if(i>...

萝北县19159717209: 急 急 急 C语言问题 求高手来解决 答对再加分!! -
门败一夫: 1.//---------------------------------------------------------------------------#include <stdio.h> typedef int data_type; void fun(data_type *a,int n) { data_type t,*b=a,*e=a+n-1; while (b<e) { t=*b; *b=*e; *e=t; ++b; --e; } } int main(void) { data_type a[6]; int i; for (i = 0; i<6; ...

萝北县19159717209: C语言遇到问题,求高手解答 -
门败一夫: #includevoid main() {int a,b,add(int,int),dif(int,int),pro(int,int),quo(int,int); void process(int,int,int(*fun)(int x,int y));/*改了这!!!!!*/ scanf("%d,%d",&a,&b); process(a,b,add); process(a,b,dif); process(a,b,pro); process(a,b,quo); } void process...

萝北县19159717209: C语言问题 求大神级解答 -
门败一夫: #include<math.h> #include<stdio.h> double result(double x) { return x*x-5x+4; } int main(void) { double a; scanf("%lf",&a); double y1,y2,y3; y1 = result(a); y2 = result(a+15); y3 = result(sin(a))); printf("y1=%lf,y2=%lf,y3=%lf",y1.y2,y3); return 0; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网