求教c语言的编程题目?

作者&投稿:敏庄 (若有异议请与网页底部的电邮联系)
求教C语言编程题~

很有病的写法 ...
从main开始看
先是双重循环, i和j都从1到N 也就是从1到5
循环25次,对于每个i和j
调用fun(i,j) 打印返回值。
后续%c对应的为"
"[j!=N+1] 由于j循环是从1到N的,所以 j!=N+1 恒为1,
所以 这个就等效于' ' 即字符空格,不可能出现为换行的情况。
直接改成空格就好。

然后 fun的返回值, a是i N-i+1 j N-j+1四个中的最小值
返回值是下面那个复杂的运算结果。

最后 在每次i循环结尾, 会打印一个换行。
所以 最终输出的是每行五个,共计五行的fun(i,j)返回值。

给你下思路吧
第一个 素数算法不好 改用素数筛 没听说过的话 自己搜 很常用的算法

第二个 对于a先求个位数 然后按照你的算法求值
如果还是超时的话
那么进行折半递归
类似于
int get_value(int a, int b){ int t; if(b == 1) return a; t = get_value(a, b/2); if(b&1)return t*t*a%10; else return t*t%10;}int main(){ .... get_value(a%10, b);}

根据题意构建学生结构体。查询分析。

1.手动录取学生信息对应我的函数iputCStus,连续输入一个班级的学生信息,构建一条链表,返回头节点,想创建多个班级,反复调用即可。

2.统计平均分和最高最低分,对应我的函数showById。

3.统计功能对应函数tjRN。

另外,由于演示和测试需要一组学生信息,反复手动输入不合理,所以我又单独写了一个随机数自动生成数据的函数init,你不需要可以删除。

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include <string.h>

#include <malloc.h>

#define SN 3//学科门数

#define MINS 60//不及格阀值,低于该值不及格

typedef struct student

{

    char id[10];

    char name[10];

    int scores[SN];

    struct student *next;

}STU;

STU *iputCStus();//输入一个班级的学生信息,创建链表,成功返回头节点,失败返回NULL

void freeSList(STU *stusHead);// 释放链表

void showById(STU *stusHead);//按照学号输出成绩

void showBySc(STU *stusHead);//每门课程的平均分、最高分、最低分

void tjRN(STU *stusHead);//统计区间人数60以下,[60~79],[80~89],[90及以上],返回数组

int main()

{

//----测试用!!!代替手动输入---------

    STU *init();

    STU *stusHead=init();

//-------------------------------------


//题目要的手动输入--替换上面的测试函数--------------

    //STU *stusHead=iputCStus();

//--------------------------------------------------

    showById(stusHead);

    showBySc(stusHead);

    tjRN(stusHead);

    return 0;

}

STU *init()//测试用函数,不需要可以删除,用到头文件stdlib和time也可以一并删除

{

    #define STN 9//测试生成的学生数量

    int i,j,sc;

    char snum[STN];

    STU *stusTail=NULL;

    static STU stusHead,stusNew[STN];

    srand(time(NULL));

    printf("---开始生成测试用数据链表(50~100随机数作为成绩)----
");

    for(i=0;i<STN;i++)

    {

        strcpy(stusNew[i].id,"S00");

        strcat(stusNew[i].id,itoa(i+1,snum,10));

        strcpy(stusNew[i].name,"学生");

        strcat(stusNew[i].name,snum);

        for(j=0;j<SN;j++)

        {

            sc=rand()%51+50;//50~100的随机数

            stusNew[i].scores[j]=sc;

        }

        if(i==0)

            stusHead.next=&stusNew[i];

        else

            stusTail->next=&stusNew[i];

        stusTail=&stusNew[i];

    }

    return &stusHead;

}

void freeSList(STU *stusHead)

{

    STU *stusLast=NULL;

    if(stusHead)

        while(stusHead->next)

        {

            if(stusLast)

                free(stusLast);

            stusLast=stusHead->next;

            stusHead=stusHead->next;

        }

    if(stusLast)

        free(stusLast);

    if(stusHead)

        free(stusHead);

}

void tjRN(STU *stusHead)//统计区间人数60以下,[60~79],[80~89],[90及以上],返回数组

{

    STU *stusHSave=stusHead;

    int scnt=0,i,tj[SN][4];

    for(i=0;i<SN;i++)

    {

        tj[i][0]=tj[i][1]=tj[i][2]=tj[i][3]=0;

        printf("
课程%d统计结果:
",i+1);

        while(stusHead->next)

        {

            if(stusHead->next->scores[i]<60)

                tj[i][0]++,printf("学号:%-5s 成绩:%3d不及格
",stusHead->next->id,stusHead->next->scores[i]);

            if(stusHead->next->scores[i]>=60 && stusHead->next->scores[i]<=79) tj[i][1]++;

            if(stusHead->next->scores[i]>=80 && stusHead->next->scores[i]<=89) tj[i][2]++;

            if(stusHead->next->scores[i]>=90) tj[i][3]++;

            if(i==0) scnt++;

            stusHead=stusHead->next;

        }

        printf("不及格人数共计:%d
",tj[i][0]);

        printf("60-80分的人数为:%d,占比:%.0f%%
",tj[i][1],tj[i][1]*1.0/scnt*100);

        printf("80-90分的人数为:%d,占比:%.0f%%
",tj[i][2],tj[i][2]*1.0/scnt*100);

        printf("90分以上的人数为:%d,占比:%.0f%%
",tj[i][3],tj[i][3]*1.0/scnt*100);

        stusHead=stusHSave;

    }

}

void showBySc(STU *stusHead)

{

    float avg[SN];

    int i,sum[SN]={0},max[SN]={0},min[SN]={0},sCNT=0;

    STU *stusHSave=stusHead;

    printf("
");

    for(i=0;i<SN;i++)

    {

        if(stusHead->next)

            max[i]=min[i]=stusHead->next->scores[i];

        while(stusHead->next)

        {

            if(stusHead->next->scores[i]>max[i])

                max[i]=stusHead->next->scores[i];

            else if(stusHead->next->scores[i]<min[i])

                min[i]=stusHead->next->scores[i];

            sum[i]+=stusHead->next->scores[i];

            sCNT++;

            stusHead=stusHead->next;

        }

        avg[i]=sum[i]*1.0/sCNT;

        stusHead=stusHSave;

    }

    for(i=0;i<SN;i++)

        printf("课程%d的平均分为%.1f,最高分为%d,最低分为%d
",i+1,avg[i],max[i],min[i]);

    printf("
");

}

void showById(STU *stusHead)

{

    int i;

    printf("
");

    while(stusHead->next)

    {

        printf("学号:%-5s的成绩分别为:",stusHead->next->id);

        for(i=0;i<SN;i++)

            printf("%3d ",stusHead->next->scores[i]);

        printf("
");

        stusHead=stusHead->next;

    }

}

STU *iputCStus()

{

    int i;

    char c;

    STU *stusHead=NULL,*stuNew=NULL,*stuTail=NULL;

    stusHead=(STU *)malloc(sizeof(STU));

    if(!stusHead) return NULL;

    stusHead->next=NULL;

    while(1)

    {

        stuNew=(STU *)malloc(sizeof(STU));

        if(!stuNew)

        {

            freeSList(stusHead);

            return NULL;

        }

        stuNew->next=NULL;

        printf("请输入学生学号:"),scanf("%s",stuNew->id);

        printf("请输入学生姓名:"),scanf("%s",stuNew->name);

        for(i=0;i<SN;i++)

            printf("请输入学科%d成绩:",i+1),scanf("%d",&stuNew->scores[i]);

        if(stusHead->next==NULL)

            stusHead->next=stuNew;

        else

            stuTail->next=stuNew;

        stuTail=stuNew;

        getchar();

        c=0;

        while(c!='Y' && c!='N')

            printf("
是否继续录入?Y/N "),c=getchar();

        printf("
");

        if(c=='N')

            break;

    }

    return stusHead;

}




急求C语言题目的答案,各式各样的题都有,请各位帮帮忙
6、若k是int型变量,且有下面的程序段,其输出结果( A )。k=-3;if (k<=o) printf(“###”);else printf(“&&&&”);A)### B)&&&& C)###&&&& D)有语法错误,无输出结果 【k=-3,判断k<=0成立,所以执行printf(“###”);语句】三、程序设计题 2、求1+2+3+3+...

求教c语言的编程题目?
根据题意构建学生结构体。查询分析。1.手动录取学生信息对应我的函数iputCStus,连续输入一个班级的学生信息,构建一条链表,返回头节点,想创建多个班级,反复调用即可。2.统计平均分和最高最低分,对应我的函数showById。3.统计功能对应函数tjRN。另外,由于演示和测试需要一组学生信息,反复手动输入不...

c语言编程题目求解
题目1:使用if多分支结构:c include<stdio.h> int main(){ int score;printf("请输入学生的成绩:\\n");scanf("%d", &score);if(score>=90 && score<=99){ printf("学生的成绩等级为A\\n");}else if(score>=80 && score<=89){ printf("学生的成绩等级为B\\n");}else if(score>=...

求大神C语言编程,题目要求在下面
下面是我的代码,三个函数分别对应三个问题。include<stdio.h> define MLEN 20\/\/字符串最大长度 char fun1();void fun2();void fun3();int main(void){ fun1();fun2();fun3();return 0;} char fun1(){ int nI;float nF;char c;char str[MLEN];printf("请分别输入1个整数,1个...

C语言编程基础题目,请帮我写写。
1、设6个int型变量,如n1,n2,n3,n4,n5,n6分别代表不同类型的字符个数,如n1为大写英文,n2为小写英文等等。2、用1 个循环,逐个判断字符的类型,是大写的给n1+1,小写的给n2+1,等一次类推。3、退出循环时就6个不同类型的个数都统计出来了。程序简单如下:include<stdio.h> include<string.h...

问一道C语言编程的问题,看下图
按你的提问,每天都吃一半多两个,第6天剩一个。程序按图片中的程序照猫画虎即可。计算结果,第一天摘了156个桃子,而不是100个。include <stdio.h>int main(){int day,x1,x2;day=5;x2=1;while(day>0){x1=(x2+2)*2;x2=x1;day--;}printf("total=%d\\n",x1);return 0;} 用...

一道C语言的编程题,兔子洞的问题。
include <stdio.h> int main(){ \/\/Hole表示20个三洞 ,Hole【21】是为了数组下标从1开始,方便对题目的理解 \/\/初始化为0,表示还没有被 灰狼搜索 int Hole[21] = {0};int i = 1,j;\/\/进行15次循环,表示灰狼搜索了15次 for(j = 1; j <= 15; j++){ Hole[i] = 1; \/\/将洞...

C语言编程题 题目:任意输入4个点,求围成四边形的面积是多少?
我测试过了,四点一线,凹四边形,四边形,有两个点共点,都可以,这里使用一条知道N边形N个顶点坐标求N边形的面积的公式,这些情况其实已经可以不考虑,呵呵,自动求 凹四边形情况:有三点共一线形成三角形的情况:include "stdio.h"include "math.h"void main(){ double x[4],y[4];for(...

求C语言编程题
求大量C语言编程题,最好附上代码我要的是有解释的,有思路,最好跟书上的解答一样... 求大量C语言编程题,最好附上代码我要的是有解释的,有思路,最好跟书上的解答一样 展开  我来答 4个回答 #热议# 《请回答2021》瓜分百万奖金 rogerfffff 2009-08-03 · TA获得超过1255个赞 知道小有建树答主 ...

用c语言编程以下题目 输入三角形的两条边a,b的长度和夹角alpha,输出其第...
include<stdio.h> include<math.h> main(){ float a,b,c,alpha;printf("Please input a,b,alpha");scanf("%f%f%f",&a,&b,&alpha);c=sqrt(a*a+b*b-2*a*b*cos(alpha*3.14159\/180));printf("\\nThe value a=%f",a);getch();} ...

麒麟区17560314772: C语言的编程题
乘泊河车: 1.main() { int x,y; printf("Input x:"); scanf("%d",&x); if(x<=1) y=x; else if(x>=10) y=3*x-11; else y=2*x-1; printf("%d",y); getch(); } 2.main() { int a[10],b[10],i; printf("Input 10 int numbers\n"); for(i=0;i<10;i++) { scanf("%d",&a[i]); b[9-i]=a[i]; } for(...

麒麟区17560314772: 请教C语言的题目 -
乘泊河车: switch为分支语句,也叫开关语句,按照case的顺序,依次匹配,找到第一个与switch(i)中i的值相匹配的表达式,一直执行到break;如果没有相匹配的,就做default.本题中 初值a=0 i=1时,做a+=2;//a=2 由于没有break,再做a+=3;//a=5 i=2时,做a+=2;//a=7 由于没有break,再做a+=3;//a=10 i=3时,做a+=1;//a=11 由于没有break,再做 a+=2;;//a=13 a+=3;;//a=16 i=4时,做a+=3;;//a=19 i=5时,结束循环.结果a=19 楼主,加分!~

麒麟区17560314772: C语言编程题,求助高手!!! -
乘泊河车: /*用scanf()无法输入空格,就用getchar了*/ #include<stdio.h> int main(void) {char ch;static char str[128];int i=0;int j=0;printf("input the string: \n");while(1){ch=getchar();if(ch=='\n'||i>127)break;str[i]=ch;i++;}for(i=0;str[i];i++){for(j=...

麒麟区17560314772: 请教C语言编程题目
乘泊河车: int a[100];void p(int n){ int k=0; for(i=2;i<n;i++) { if(n%i==0) { a[k++]=i; n/=i; while(n%i==0) { a[k++]=i; n/=i; } } }}//只写了核心代码,要用直接加上主函数调用后,直接输出即可.n为要分解的数

麒麟区17560314772: C语言编程题 望各位求教啊
乘泊河车:#include<stdio.h> int main() { int a[3][3]={ 1,3,5,7,9,11,13,15,17 }; int i,j; int res=0; for(i=0,j=0;i<3;i++,j++) { res+=a[i][j]; } printf("%d\n",res); res=0; for(i=0,j=2;i<3;i++,j--) { res+=a[i][j]; } printf("%d\n",res); return 0; }

麒麟区17560314772: 请教大家几个C语言题目
乘泊河车: 1 A \\转义字符表示\字符,141表示3个字符,\141表示一个字符,abc表示3个字符,\t表示1个制表符,所以共9个字符长度. 2 B ch[3][5]表示一个有3个字符串的数组,每个字符串最多由5个字符表示(包含'\0'字符),而ch[1]就是"BBB",没有00. 3 D k初始值为0,也就是条件假,所以while(k)不执行循环体. 15 A ps+2表示字符指针加两个字符的偏移,还是字符指针,而不是字符o.s[2]和ps[2]都是字符o,ps+=2表示字符指针加两个字符的偏移,刚好指向o,所以*ps取指针内容,也就是字符o.

麒麟区17560314772: 求解C语言编程题. -
乘泊河车: 1.#include "stdio.h"#include "stdlib.h"#include "math.h" double func(double *content,int n) { double ave=0,s=0; int i; for(i=0;i<n;i++) ave+=*(content+i); ave/=n; for(i=0;i<n;i++) s+=pow(ave-*(content+i),2); s/=n; return s; } int main() { int n,i; ...

麒麟区17560314772: 求助:C语言编程题 -
乘泊河车: 第一道题:#include<stdio.h> void main() { int a,b[5],i; printf("请输入一个五位整数:\n"); scanf("%d",&a); /*将输入的五位数赋给整型变量a*/ for(i=0;i<5;i++) { b[i]=a%10; a/=10; } /* 这个for循环的作用是将a从个位开始的每个数依次赋给整...

麒麟区17560314772: 请教两道C语言编程题 -
乘泊河车: #include <stdio.h>int main(int argc, char *argv[]) {int i;for( i = 900; i < 1100; i++)if((i%5 == 2) && (i % 7 == 3 ) && (i % 3 == 1) )break; printf( " %d", i );return 0; }

麒麟区17560314772: 请教一个编程\C语言\电脑 题目 -
乘泊河车: #include<stdio.h>#include<string.h>int flag = 1;void Netzh(char *z);int main() { char s[200]; gets(s); Netzh(s); return 0;}void Netzh(char *z) { int i = 0, k = strlen(z); while (i < k) { if (z[i] == ' ') { z[i] = '\0'; Netzh(&z[i+1]); printf("%s ", z); } else i ++; if (z[i] == '...

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