欢迎来到加倍考研网! 北京 上海 广州 深圳 天津
微信二维码
在线客服 40004-98986
推荐适合你的在职研究生专业及院校

关于考研C语言的几道题目,请大神赐教。另外不要嘲笑我问这种简单的问题

二次行
失者
第一道题#include<stdio.h> struct student{char name[20];float score1,score2;float avg;};struct student stu[100];int main(){int n;int i;float all_avg=0;scanf("%d",&n); //全班学生数量for(i=1;i<=n;i++){scanf("%s %f %f",stu[i].name,&stu[i].score1,&stu[i].score2);stu[i].avg=(stu[i].score1+stu[i].score2)/2;all_avg+=stu[i].avg;}all_avg/=n;for(i=1;i<=n;i++){if(stu[i].avg<all_avg){printf("name:%s score1:%.1f score2:%.1f avg:%.1f\n",stu[i].name,stu[i].score1,stu[i].score2,stu[i].avg);}}return 0;}第二道题#include<stdio.h>struct student{char name[20];float score1,score2,score3;float avg;};struct student stu[11];int main(){int i,j;struct student temp;for(i=1;i<=10;i++){scanf("%s %f %f %f",stu[i].name,&stu[i].score1,&stu[i].score2,&stu[i].score3);stu[i].avg=(stu[i].score1+stu[i].score2+stu[i].score3)/3;}for(i=1;i<10;i++)for(j=1;j<10;j++){if(stu[j].avg<=stu[j+1].avg){temp=stu[j];stu[j]=stu[j+1];stu[j+1]=temp;}}for(i=1;i<=5;i++){printf("name:%s score1:%.1f score2:%.1f score3:%.1f avg:%.1f\n",stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].avg);}return 0;}第三题#include<stdio.h>#include<string.h>struct item{char pno[20]; char pname[20]; float amount;};struct item item[100];int main(){ int i,j; struct item temp; int n; scanf("%d",&n);for(i=1;i<=n;i++) { scanf("%s %s %f",item[i].pno,item[i].pname,&item[i].amount); } for(i=1;i<n;i++) for(j=1;j<n;j++) { if(strcmp(item[j].pname,item[j+1].pname)>0) { temp=item[j]; item[j]=item[j+1]; item[j+1]=temp; } else if(strcmp(item[j].pname,item[j+1].pname)==0 && item[j].amount>item[j+1].amount) { temp=item[j]; item[j]=item[j+1]; item[j+1]=temp; } } for(i=1;i<=n;i++) { printf("%s %s %.1f\n",item[i].pno,item[i].pname,&item[i].amount); }return 0;}

C语言的考研题,过程思路求大神说下。。真的搞不懂

宁固
王明
4的答案是A, 5的答案A。总共有5个人,数组从零开始的,刚开始p指向第一结构体,即第一个人,执行q=p+5赋值后,此时q指向第六个人,for循环先输出第一个人的信息,然后p++,指向下一个人,执行5次。

我要考研,初试想考C语言。

必持其名
没有难题,只有你自己学得不到位。如果真的想读你想要的研究生,那这个门槛是你必须过的。有很多人都曾考上了这个地方,那为什么你做不到呢?除非你不是真的想学,否则就算难又有什么,还有将近大半年么。

考研C语言都要学什么

解心之谬
暑假回家复习的,,合上书就忘了,到了后期就完全没动力继续背单词了,以至于在考场上很多单词看着熟悉,就是不知道意思,瞎蒙得自己心慌。

我考研专业课考C语言,就是老谭的那本 C程序设计 。请问怎么复习最有效啊?

都市男
罗德尼
  复习,其实最有效的方法就是两个字:动手  无论是哪一种的复习与考试,或是学习其它知识,都不能只是简单地用眼睛看,用大脑思考,其更重要的是动手去计算,动手去解答问题,而动手的概念主要有两种:  其一、实际操作类。就是需要实物进行的操作,例如制作简单的纸飞机、复杂的机器人,这都是需要实物来实际动手操作才能理会其内涵的知识,光靠看书看资料是不能根本解决问题的。  其二、模拟考核类。就是找一些试卷进行答题,然后再核对哪里答错了,答错的题目要反复多看几遍,主要的是看看错在哪里,思考下为什么会答错。对于答对了的题目也要再看一遍,巩固下记忆。之后再重新答题,如此反复练习,则是最有效的复习方式。  对于C语言的复习,则可以利用C语言编程软件来练习编程技巧,可根据书本上给出的题目进行编程,最终得到正确的答案。  初次得到答案也不要停止学习,要思考下利用其它方法来得到同样的答案,因为C语言是一个很灵活的语言,对于任何一个问题的解决方法,都有几个甚至几十个不同的解决办法。

c语言。考研题。不会做。谢谢大家的帮忙了。

上原
莫知其始
// 链表式的多项式相加#include <stdio.h>#include <stdlib.h>#include <math.h>// 多项式中的一项typedef struct Node{ /////////数据部分 float _ratio; // 系数 unsigned _index; // 指数 /////////链表结构部分 struct Node * _next;} Node;// 插入到多项式中, 并保持按指数降序排列.Node * SortInsert ( Node * poly, Node *new_node ){ if ( new_node != NULL ) { if ( poly != NULL ) { // 因为第一项没有prev,所以需要特殊处理 // 指数大于第一项,放在最前面 if ( new_node->_index > poly->_index ) { new_node->_next = poly; return new_node; } else if ( new_node->_index == poly->_index ) // 指数与第一项相同 { Node * cur = poly; cur->_ratio += new_node->_ratio; free ( new_node ); // 如果系数变为0, 把老节点也删除 if ( abs ( cur->_ratio ) < 0.0000001f ) // 浮点数不应该直接比较, 只能算误差 { poly = poly->_next; free ( cur ); } return poly; } else { // 找一个指数相同,或前面比自身大&&后面比自身小的位置, 例如: 2 要找到一个 2, 或者3->1 Node * prev = poly; // 记录匹配的前一个节点,用于在cur前面插入节点 Node * cur = prev->_next; // 节点是否匹配的测试节点 for ( ; cur != NULL; prev = cur, cur = cur->_next ) // 维护好prev, cur在遍历过程中的关系 { if ( cur->_index == new_node->_index ) // 找到前面例子中的2了, 加起来就好了 { cur->_ratio += new_node->_ratio; free ( new_node ); // 如果系数变为0, 把老节点也删除 if ( abs ( cur->_ratio ) < 0.0000001f ) // 浮点数不应该直接比较, 只能算误差 { prev->_next = cur->_next; free ( cur ); } return poly; // 找到就不找了, 所以是第一次 } if ( cur->_index < new_node->_index ) // 找到前面例子中的3->1中的1了 { new_node->_next = cur; // 类似于: 2->1; ...->3->1 prev->_next = new_node; // 类似于: ...->3->2(->1) return poly; } } // 到了这里说明任意节点指数都比新指数大, 同时prev也指向了最后一个元素. 所以直接插入到最后 new_node->_next = NULL; // 类似于: 2-> NULL prev->_next = new_node; // 类似于: ...->3->2->NULL return poly; } } return new_node; // 多项式无效,返回只有一个节点的多项式 } return poly; // 新节点无效,不插入 Node * prev = new_node; Node * cur = poly; if ( new_node == NULL ) return poly; new_node->_next = poly;}// 释放多项式void free_poly ( Node * poly ){ while ( poly != NULL ) { Node * tmp = poly; poly = poly->_next; free ( tmp ); }}// 输入多项式Node * input_poly() // 这里简单的处理输入, 不考虑输入过程可能产生的异常(比如输入了字母){ unsigned i = 0, n = 0; Node * poly = NULL; printf ( "请先输入多项式项数: " ); scanf ( "%u", &n ); for ( i = 1; i <= n; ++i ) { Node * item = ( Node * ) malloc ( sizeof ( Node ) ); if ( NULL == item ) { free_poly ( poly ); printf ( "内存不足\n" ); return NULL; } printf ( "请输入第%d项的系数和指数(例如: 1.2,2)", i ); scanf ( "%f,%d", &item->_ratio, &item->_index ); poly = SortInsert ( poly, item ); } return poly;}// 输出项void display_node ( Node * item ){ printf ( "%fX^%u", item->_ratio, item->_index );}// 输出多项式void display ( Node * poly ){ Node * tmp = NULL; if ( poly == NULL ) return ; display_node ( poly ); for ( tmp = poly->_next; tmp != NULL; tmp = tmp->_next ) { printf ( " + " ); display_node ( tmp ); } printf ( "\n" );}int main(){ Node * A = NULL; Node * B = NULL; // 输入A A = input_poly(); printf("您输入的多项式A为:"); display(A); // 输入B B = input_poly(); printf("您输入的多项式B为:"); display(B); // 相加 { // 注意到SortInsert中,在指数相等时会合并项, // 所以只需要把其中一个多项式中的所有项SortInsert到另外一个多项式中就完成了 // 该方法破坏了A和B!!!, 但是题目没有禁止 Node * tmp = NULL; while ( B != NULL ) // 只要多项式B还有项 { // 从头分离项 tmp = B; B = B->_next; // 插入到另外一个多项式中 SortInsert ( A, tmp ); } } // 输出 display ( A ); free_poly( A ); return 0;}/* 测试io:请先输入多项式项数: 4请输入第1项的系数和指数(例如: 1.2,2)400,4请输入第2项的系数和指数(例如: 1.2,2)100,1请输入第3项的系数和指数(例如: 1.2,2)200,2请输入第4项的系数和指数(例如: 1.2,2)300,3您输入的多项式A为:400.000000X^4 + 300.000000X^3 + 200.000000X^2 + 100.000000X^1请先输入多项式项数: 2请输入第1项的系数和指数(例如: 1.2,2)20,2请输入第2项的系数和指数(例如: 1.2,2)30,3您输入的多项式B为:30.000000X^3 + 20.000000X^2400.000000X^4 + 330.000000X^3 + 220.000000X^2 + 100.000000X^1*/// 写了一个多小时,累死了。 希望能帮到了。。

c语言考研题,求问运行过程

是不愉也
昭昭在目
运行过程:int main(){    int a[10],s,p,j=0,k=0;    scanf("%d",&s);//输入的第一个数字    while(s>-1)//连续输入,将大于-1的数字保存,遇到第一个小于-1的数字结束输入    {        a[++k]=s;        //由于是++k,所以先++再取值,所以大于-1的数字保存在数组a[1],a[2],a[3]...中        //注意:a[0]没有赋值        scanf("%d",&s);    }    //输入结束,a[10]保存的元素值为{随机值,7,8,3,18}。k等于4。s等于-1    for(p=1;p<k;p++)    //迭代数组元素a[1]~a[3],如果元素值能整除-1,那么保存在数组a[0],a[1],a[2]...中        if(a[p]%s==0)            a[j++]=a[p];//这里是j++,所以先取值再++,依次a[0]=a[1],a[1]=a[2],a[2]=a[3]    //上一个迭代结束,a[10]保存的值为{7,8,3,3,18},j等于3    for(p=0;p<j;p++)//打印a[0],a[1],a[2]        printf("%d ",a[p]);    return 0;}1、所以最后打印7 8 3。(a[10]中保存{7,8,3,3,18})。2、第一个for循环结束,j等于3。(如上图)。3、while,++k改成k++,就是先取值再++,那么一开始数组就从下标0开始保存。输入结束状态:a[10]={7,8,3,18}。k等于4。s等于-1。第一个for循环结束状态:a[10]={8,3,18,18}。最后打印就是8 3 18。我思路跟你在有些像,但这段代码敲出来得力结果是8,不知道哪里出问题了恩,是我字母敲错了,道理没错。图上代码是:if(a[p]%2==0)我敲的是:if(a[p]%s==0)我把2看成s了。道理没错。这个我知道,但打印结果是8,不是783我说了,是我打错一个字,你把2改成s,就和我一样了。嗯,谢谢啦大神

请问考研数据结构要求用c语言答题,可以听王道的课吗?

步步高
C语言是一门编程语言,而数据结构本质就是一些编程算法,建议先看一些C语言的基础课程,然后再看数据结构的课程,数据结构更偏向于理论,编程更偏向于实操

大学c语言题目

其德不离
怨天怨地
1、#include <stdio.h>void main(){int i,a,b,c,n=0;for(i=100;i<1000;i++){a=i/100;b=i/10%10;c=i%10;if(a*a*a+b*b*b+c*c*c==i)n++;}printf("%d",n);}2、#include <stdio.h>void main(){int i,n=0;for(i=1900;i<=2010;i++)if(i%4==0&&i%100||i%400==0){printf("%-5d",i);n++;if(n%5==0)printf(" ");}}#include <iostream>#include <cmath>using namespace std;bool judge(int a){ if(a==pow(a/100,3)+pow(a/10%10,3)+pow(a%10,3)) return 1; return 0;}int main(){ for(int i=100;i<=999;i++) if(judge(i)) cout<<i<<' '; cout<<endl;}有疑问请哦。