求教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();} ...
乘泊河车: 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] == '...