当前位置:首页 » 编程语言 » 求c语言编程题
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

求c语言编程题

发布时间: 2023-06-15 01:55:01

A. c语言编程题

根据题意:
题目1:函数参数是除数(这里传值8),返回满足条件的数字和。
题目2:函数参数是要找的项目数(这里传值10),返回对应项的值。

#include<stdio.h>

#define MIN 50

#define MAX 1000

int fa(int a);//对应题目1的函数,参数:要除的数,返回可以被整除的数之和

int getByIndex(int n);//对应题目2,返回数列第n项,错误返回-1

int main()

{

printf("1、%d~%d之间能被%d整除的数字之和为:%d ",MIN,MAX,8,fa(8));

printf("2、数列头三个数为4,5,6,以后的每个数为前三数和,求此数列第%d项:%d ",10,getByIndex(10));

return 0;

}

int fa(int a)//对应题目1的函数,参数:要除的数,返回可以被整除的数之和

{

int i,sum=0;

for(i=MIN;i<=MAX;i++)

if(i%a==0)

sum+=i;

return sum;

}

int getByIndex(int n)//对应题目2,返回数列第n项,错误返回-1

{

if(n<1)

return -1;

int i,nums[n];

nums[0]=4,nums[1]=5,nums[2]=6;

for(i=3;i<n;i++)

nums[i]=nums[i-1]+nums[i-2]+nums[i-3];

return nums[n-1];

}

B. C语言编程题

1.将程序段填充完整(实现12个月每个月天数的输出)
case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31;break;
case 4: case 6: case 9: case 11: days=30;break;
case 2:
if((yy%4==0 && yy%100!=0) || yy%400==0) days=29;
else days=28;
break;
2.输入4个整数a,b,c,d,编写程序,将它们按从大到小的顺序输出(if语句实现)
int a,b,c,d;
scanf("%d %d %d %d",&a,&b,&c,&d);
if(a>b && a>c && a>d) printf("%d ",a);
if(b>a && b>c && b>d) printf("%d ",b);
if(c>a && c>b && c>d) printf("%d ",c);
if(d>a && d>b && d>c) printf("%d ",d);
3.假设奖金税率如下(ma代表税前奖金且ma>0,r代表税率),利用switch语句编写程序对输入的一个奖金数,输出税率和应交税款及实得奖金数(扣除奖金税后)。
int ma;
float r,ts,sd;
scanf("%d",&ma);
switch(ma/1000)
{
case 0: r=0;break;
case 1: r=0.05;break;
case 2: r=0.08;break;
default: r=0

C. c语言编程题

C语言编程题
1.(*)求分数序列:1/2,2/3,3/5,5/8,8/13,13/21...... 前20项的和。
main()
{float i=1,j=2,t=0,s,n,m;
for(n=1;n<=20;n++)
s=i/j,m=i,i=j,j=m+j,t=t+s;
printf("t=%f",t);
}
2.(*)从键盘输入一个字符串,再将其逆序输出。(如:输入abcde,输出edcba)
main()
{int i;
char c[10];
scanf("%s",c);
for(i=9;i>=0;i--)
printf("%c",c[i]);
}
3.(*)已知abc+cba=1333,其中a、b、c均为一位数,例如:617+716=1333, 518+815=1333,
试编程求出符合这一规律的a、b、c,并输出结果。
main()
{int a,b,c,x,y;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=1;c<=9;c++)
{ x=100*a+10*b+c;
y=100*c+10*b+a;
if(x+y==1333)
printf("x=%d,y=%d",x,y);}
}
4.(*)利用海伦公式求三角形面积,三边长a,b,c由键盘输入。若输入的三边长不能构成
三角形,输出相应提示信息。海伦公式如下:其中s=(a+b+c)/2
三角形面积=
#include"math.h"
main()
{ float a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
if(a+b>c&&a+c>b&&b+c>a)
printf("area=%f",area);
else
.1 .
printf("no");
}_
5.(*)编程求出1!+2!+3!+…+8!+9!+10!的值并输出。
程序1: main()
{ int i,j;
double p=1, sum=0;
for(i=1;i<=10;i++)
{ for(j=1;j<=i;j++)
p=p*i;
sum=sum+p;p=1.0;}
printf("sum=%f",sum);
}_
程序2:float fac(n)
int n;
{flo

D. 求教c语言的编程题目

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

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;

}